From 9f7880838ace4345dca901d2adbcd2016c2553ac Mon Sep 17 00:00:00 2001 From: choglass Date: Thu, 9 May 2024 11:22:43 +0200 Subject: [PATCH] new Reconstruct --- cell2mol/test/reconstruct_new.ipynb | 43180 +++++++++++++++++++++++--- 1 file changed, 38718 insertions(+), 4462 deletions(-) diff --git a/cell2mol/test/reconstruct_new.ipynb b/cell2mol/test/reconstruct_new.ipynb index 0c9f38af..5080996c 100644 --- a/cell2mol/test/reconstruct_new.ipynb +++ b/cell2mol/test/reconstruct_new.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": 18, + "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fc1b9875680b45ab94410596d0c06ed4", + "model_id": "8c99c3a3c4a74cbcb1ba19e42fff3b85", "version_major": 2, "version_minor": 0 }, @@ -30,218 +30,221 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "infopath = \"error_2/BOFFOS/BOFFOS.info\"\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)" + "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", + "ref_pos = frac2cart_fromparam(ref_fracs, cellparam)" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": 4, + "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", + "/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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\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", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\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" ] } @@ -255,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -266,11 +269,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "ref_pos = frac2cart_fromparam(ref_fracs, cellparam)" + "name = \"BOFFOS\"\n", + "refcell = cell(name, ref_labels, ref_pos, cellvec, cellparam)" ] }, { @@ -282,9 +286,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "0 K [14.586186795000003, 10.49193963917675, 6.840074119999999] [0.84713, 0.49715, 0.70169]\n", - "59 K [7.989620340000003, 7.386038489226752, 6.840074119999999] [0.50285, 0.34998, 0.70169]\n", - "60 K [13.977692865000002, 3.2261949364194917, 6.840074119999999] [0.65002, 0.15287, 0.70169]\n" + "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" ] } ], @@ -305,62 +309,23 @@ }, { "cell_type": "code", - "execution_count": 8, - "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", - "---------------------------------------------------\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, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "C6-O12-Fe True True\n", - "H24-C12-O6 True True\n", - "H2-O True True\n", - "H2-O True True\n", - "H2-O True True\n", - "H24-C12-O6 True True\n", - "H24-C12-O6 True True\n", - "K True True\n", - "K True True\n", - "K True True\n" + "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" ] } ], @@ -368,9 +333,15 @@ "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, np.allclose(np.array(ref_pos_idx), np.array(ref.coord)))" + " 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)" ] }, { @@ -400,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -408,54 +379,29 @@ " 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", + " 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_cell(molecule.get_cell())\n", " new_structures.append(new_molecule)\n", " return new_structures" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_fractional_coords (molecule, cell_parameters, 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", - " new_positions = frac2cart_fromparam(transformed_positions, cell_parameters)\n", - " \n", - " if not hasattr(molecule,\"frac_coord\"): molecule.frac_coord = fractional_coords\n", - " else : print(molecule.frac_coord == fractional_coords)\n", - " print(molecule.coord == new_positions)\n", - " print(molecule.fragmented_coord = \n", - "\n", - " transformed_positions_2 = np.remainder(transformed_positions, 1)\n", - " new_positions_2 = frac2cart_fromparam(transformed_positions_2, cell_parameters)\n", - " molecule.fragmented_coord = new_positions_2" - ] - }, - { - "cell_type": "code", - "execution_count": 12, + "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": 13, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -464,7 +410,7 @@ "Atoms(symbols='C42H78FeK3O33', pbc=False)" ] }, - "execution_count": 13, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -475,8 +421,10 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, + "execution_count": 51, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -492,7 +440,7 @@ " Atoms(symbols='C42H78FeK3O33', pbc=False)]" ] }, - "execution_count": 14, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -504,22 +452,24 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, + "execution_count": 52, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -534,4874 +484,39180 @@ }, { "cell_type": "code", - "execution_count": 16, + "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": 16, + "execution_count": 147, "metadata": {}, "output_type": "execute_result" - }, + } + ], + "source": [ + "157-3*3" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "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\n", "text/plain": [ - "
" + "525" ] }, + "execution_count": 150, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "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\n", - "plot_atoms(combined_mol)" + "(148 + 9*3)*3" ] }, { "cell_type": "code", - "execution_count": 253, + "execution_count": 152, "metadata": {}, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0c9ee36bd30844bbb43ba6564e385ff6", - "version_major": 2, - "version_minor": 0 - }, "text/plain": [ - "NGLWidget()" + "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": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "cell_positions" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": { + "scrolled": true + }, + "outputs": [ { "data": { - "image/png": "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\n", "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": "display_data" + "output_type": "execute_result" } ], "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_positions" ] }, { "cell_type": "code", - "execution_count": 249, + "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": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "C6-O12-Fe\n", + "H24-C12-O6\n", + "H2-O\n", + "K\n" + ] + } + ], "source": [ - "new_structures_2 = apply_symmetry_operations_to_frac(ref_molecuele, cell_parameters, ref_fracs, sym_ops, normalize=False)\n" + "for specie in unique_species:\n", + " print(specie.formula)" ] }, { "cell_type": "code", - "execution_count": 251, - "metadata": { - "scrolled": true - }, + "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": 251, + "execution_count": 492, "metadata": {}, "output_type": "execute_result" - }, + } + ], + "source": [ + "unique_indices" + ] + }, + { + "cell_type": "code", + "execution_count": 491, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "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\n", "text/plain": [ - "
" + "10" ] }, + "execution_count": 491, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "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)" + "len(unique_indices)" ] }, { "cell_type": "code", - "execution_count": 266, + "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": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" + "(157, 157)" ] }, - "execution_count": 266, + "execution_count": 590, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "cellvec" + "len(found_indices), len(found_rows)" ] }, { "cell_type": "code", - "execution_count": 270, + "execution_count": 591, "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" + "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": [ - "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(\"===\")" + "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": 20, + "execution_count": 566, "metadata": {}, "outputs": [], "source": [ - "from cell2mol.connectivity import split_species\n", - "from cell2mol.other import extract_from_list\n", - "from cell2mol.classes import molecule, cell" + "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": 33, - "metadata": { - "scrolled": true - }, + "execution_count": 567, + "metadata": {}, "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", + " [ 0, 0, 0, ..., 0, 0, 0],\n", + " [ 0, 0, 0, ..., 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", + " [ 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 460 stored elements in Compressed Sparse Row format>\n", - "10\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(ref_labels, ref_pos, debug=debug)\n", - "print(len(blocklist))" + "blocklist = split_species(updated_labels, updated_coord, debug=2)\n", + "print(blocklist)" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 535, "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" + "[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": [ - "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" + "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": 93, + "execution_count": 536, "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": 96, - "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)" - ] - }, - { - "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": 142, - "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", + "[------------- 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", - " return molecsfoundlist, remainingfragments" + "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": 143, + "execution_count": 543, "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" + "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": 281, + "execution_count": 524, "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", - " original_cell = refcell\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, indices=recindices, 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.add_parent(original_cell, indices= recindices)\n", - " newmolec.set_adjacency_parameters(cov_factor, metal_factor)\n", - " \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" + "from cell2mol.hungarian import reorder" ] }, { "cell_type": "code", - "execution_count": 145, - "metadata": {}, - "outputs": [], + "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": [ - "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) and (sorted(newmolec.get_parent_indices(\"cell\")) == sorted(ref.get_parent_indices(\"cell\"))):\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" + "finalmols" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 556, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "True" + "[------------- 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": 75, + "execution_count": 556, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "Warning" + "all_fragments" ] }, { "cell_type": "code", - "execution_count": 147, - "metadata": { - "scrolled": true - }, + "execution_count": 561, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Help on function sequential in module __main__:\n", + "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(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": 195, - "metadata": {}, - "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", + "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: 0 1 out of 14 14\n", - "SEQUENTIAL Heavy iteration 1 with 15 and 15 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O', 'O', 'C'] to combine\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), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -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: translation (0, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, 0, 1)\n", + "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 (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_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', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 14\n", - "SEQUENTIAL Heavy iteration 2 with 15 and 15 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O', 'H'] to combine\n", - "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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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-O']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 14\n", - "SEQUENTIAL Heavy iteration 3 with 15 and 15 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O', 'C', 'H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -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([[-3, 1, 1, 0, 1, 0],\n", - " [ 1, -1, 0, 0, 0, 0],\n", - " [ 1, 0, -1, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 1, 0],\n", - " [ 1, 0, 0, 1, -3, 1],\n", - " [ 0, 0, 0, 0, 1, -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 = H3-C2-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 H3-C2-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H3-C2-O']\n", - "SEQUENTIAL: badlist 0 []\n", + "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", " \n", - "Fragments to allocate: 0 1 out of 13 13\n", - "SEQUENTIAL Heavy iteration 4 with 14 and 14 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H'] and ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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 (-1, 0, -1)\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-O', 'H-O']\n", - " \n", - "Fragments to allocate: 0 2 out of 13 13\n", - "SEQUENTIAL Heavy iteration 5 with 14 and 14 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H'] and ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", + "MERGE_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-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 3 out of 13 13\n", - "SEQUENTIAL Heavy iteration 6 with 14 and 14 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H'] and ['C', 'H', 'H', 'C', 'H'] to combine\n", - "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, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -2, 1, 0, 1, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 1, -3, 1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, -4, 1, 1, 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1]])\n", - "SPILT_SPECIES: graph=<11x11 sparse matrix of type ''\n", - "\twith 31 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 = 11\n", - " Formula = H6-C4-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 H6-C4-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H6-C4-O']\n", - "SEQUENTIAL: badlist 0 []\n", + "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", " \n", - "Fragments to allocate: 0 1 out of 12 12\n", - "SEQUENTIAL Heavy iteration 7 with 13 and 13 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'C'] to combine\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), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -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: translation (0, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, 0, 1)\n", + "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 (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", + "MERGE_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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 2 out of 12 12\n", - "SEQUENTIAL Heavy iteration 8 with 13 and 13 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'H'] to combine\n", - "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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "SEQUENTIAL: goodlist 0 []\n", "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'H-O']\n", - " \n", - "Fragments to allocate: 0 3 out of 12 12\n", - "SEQUENTIAL Heavy iteration 9 with 13 and 13 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] to combine\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), (-1, -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, -3, 1],\n", - " [ 0, 0, 0, ..., 0, 1, -1]])\n", - "SPILT_SPECIES: graph=<38x38 sparse matrix of type ''\n", - "\twith 114 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 = H20-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 H20-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H20-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", + "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", " \n", - "Fragments to allocate: 0 1 out of 11 11\n", - "SEQUENTIAL Heavy iteration 10 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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 ['H20-C12-O6', 'H-O']\n", + "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", " \n", - "Fragments to allocate: 0 2 out of 11 11\n", - "SEQUENTIAL Heavy iteration 11 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'O', 'C'] to combine\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), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -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: translation (0, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\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, 1, -1)\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 ['H20-C12-O6', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 3 out of 11 11\n", - "SEQUENTIAL Heavy iteration 12 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['C', 'H', 'H'] 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: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, 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 ['H20-C12-O6', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 4 out of 11 11\n", - "SEQUENTIAL Heavy iteration 13 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['C', 'H', 'H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 5 out of 11 11\n", - "SEQUENTIAL Heavy SKIPPED 38 and 5\n", + "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", " \n", - "Fragments to allocate: 0 6 out of 11 11\n", - "SEQUENTIAL Heavy iteration 15 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'C', 'H'] to combine\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), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -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: translation (0, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, 0, 1)\n", + "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 (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", + "MERGE_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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'H-C-O']\n", - " \n", - "Fragments to allocate: 0 7 out of 11 11\n", - "SEQUENTIAL Heavy SKIPPED 38 and 10\n", - " \n", - "Fragments to allocate: 0 8 out of 11 11\n", - "SEQUENTIAL Heavy iteration 17 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'O', 'C'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'C-O2']\n", + "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", " \n", - "Fragments to allocate: 0 9 out of 11 11\n", - "SEQUENTIAL Heavy iteration 18 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -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 (-1, 0, -1)\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 ['H20-C12-O6', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 10 out of 11 11\n", - "SEQUENTIAL Heavy SKIPPED 38 and 27\n", - " \n", - "Fragments to allocate: 0 11 out of 11 11\n", - "SEQUENTIAL Heavy SKIPPED 38 and 36\n", - " \n", - "Fragments to allocate: 1 0 out of 11 11\n", - "SEQUENTIAL Heavy iteration 21 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'C'] and ['O', 'O', 'O', 'O', 'O', 'C', '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'] to combine\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, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 0)\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', 'H20-C12-O6']\n", - " \n", - "Fragments to allocate: 1 2 out of 11 11\n", - "SEQUENTIAL Heavy iteration 22 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'O', 'C'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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 ['H20-C12-O6', 'C-O2']\n", - " \n", - "Fragments to allocate: 1 3 out of 11 11\n", - "SEQUENTIAL Heavy iteration 23 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'C'] and ['O', 'C', 'H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_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-C-O']\n", - " \n", - "Fragments to allocate: 1 4 out of 11 11\n", - "SEQUENTIAL Heavy iteration 24 with 12 and 12 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H'] and ['C', 'H', 'H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 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([[-1, 1, 0, 0, 0, 0],\n", - " [ 1, -3, 1, 1, 0, 0],\n", - " [ 0, 1, -1, 0, 0, 0],\n", - " [ 0, 1, 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 = H3-C2-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 H3-C2-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H3-C2-O']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 10 10\n", - "SEQUENTIAL Heavy iteration 25 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['O', 'O', 'C'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 2 out of 10 10\n", - "SEQUENTIAL Heavy SKIPPED 6 and 38\n", + "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", " \n", - "Fragments to allocate: 0 3 out of 10 10\n", - "SEQUENTIAL Heavy iteration 27 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 4 out of 10 10\n", - "SEQUENTIAL Heavy iteration 28 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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-O', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 5 out of 10 10\n", - "SEQUENTIAL Heavy iteration 29 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_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-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 6 out of 10 10\n", - "SEQUENTIAL Heavy iteration 30 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['O', 'H'] to combine\n", - "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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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-O', 'H-O']\n", - " \n", - "Fragments to allocate: 0 7 out of 10 10\n", - "SEQUENTIAL Heavy iteration 31 with 11 and 11 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H'] 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, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 1, -3, 1, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, -3, 1, 1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1]])\n", - "SPILT_SPECIES: graph=<11x11 sparse matrix of type ''\n", - "\twith 31 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 = 11\n", - " Formula = H6-C4-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 H6-C4-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H6-C4-O']\n", - "SEQUENTIAL: badlist 0 []\n", + "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", " \n", - "Fragments to allocate: 0 1 out of 9 9\n", - "SEQUENTIAL Heavy iteration 32 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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 (-1, 0, -1)\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 ['H6-C4-O', 'H-O']\n", - " \n", - "Fragments to allocate: 0 2 out of 9 9\n", - "SEQUENTIAL Heavy iteration 33 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", + "MERGE_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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 3 out of 9 9\n", - "SEQUENTIAL Heavy iteration 34 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "SEQUENTIAL: goodlist 0 []\n", "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'H2-C']\n", + "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", " \n", - "Fragments to allocate: 0 4 out of 9 9\n", - "SEQUENTIAL Heavy iteration 35 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 5 out of 9 9\n", - "SEQUENTIAL Heavy iteration 36 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'C'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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 ['H6-C4-O', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 6 out of 9 9\n", - "SEQUENTIAL Heavy SKIPPED 11 and 38\n", - " \n", - "Fragments to allocate: 0 7 out of 9 9\n", - "SEQUENTIAL Heavy iteration 38 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H6-C4-O', 'C3-O6-Fe']\n", - " \n", - "Fragments to allocate: 0 8 out of 9 9\n", - "SEQUENTIAL Heavy iteration 39 with 10 and 10 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 1\n", - "MERGE_FRAGMENTS: move_idx 0\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)]\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, -3, 1],\n", - " [ 0, 0, 0, ..., 0, 1, -1]])\n", - "SPILT_SPECIES: graph=<38x38 sparse matrix of type ''\n", - "\twith 114 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 = H20-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 H20-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H20-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 8 8\n", - "SEQUENTIAL Heavy SKIPPED 38 and 10\n", - " \n", - "Fragments to allocate: 0 2 out of 8 8\n", - "SEQUENTIAL Heavy iteration 41 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'O', 'C'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'C-O2']\n", + "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", " \n", - "Fragments to allocate: 0 3 out of 8 8\n", - "SEQUENTIAL Heavy iteration 42 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'C-O2']\n", - " \n", - "Fragments to allocate: 0 4 out of 8 8\n", - "SEQUENTIAL Heavy iteration 43 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['C', 'H', 'H'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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 ['H20-C12-O6', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 5 out of 8 8\n", - "SEQUENTIAL Heavy iteration 44 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'C-O2']\n", + "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", " \n", - "Fragments to allocate: 0 6 out of 8 8\n", - "SEQUENTIAL Heavy iteration 45 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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 (-1, 0, -1)\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 ['H20-C12-O6', 'H-O']\n", - " \n", - "Fragments to allocate: 0 7 out of 8 8\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 0 8 out of 8 8\n", - "SEQUENTIAL Heavy SKIPPED 38 and 36\n", - " \n", - "Fragments to allocate: 1 0 out of 8 8\n", - "SEQUENTIAL Heavy iteration 48 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'H'] and ['O', 'O', 'O', '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'] to combine\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, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 0)\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', 'H20-C12-O6']\n", - " \n", - "Fragments to allocate: 1 2 out of 8 8\n", - "SEQUENTIAL Heavy iteration 49 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", "MERGE_FRAGMENTS: translation (0, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_FRAGMENTS: translation (0, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 0, 1)\n", + "MERGE_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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'C-O2']\n", - " \n", - "Fragments to allocate: 1 3 out of 8 8\n", - "SEQUENTIAL Heavy iteration 50 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'H2-C']\n", + "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", " \n", - "Fragments to allocate: 1 4 out of 8 8\n", - "SEQUENTIAL Heavy iteration 51 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'C-O2']\n", - " \n", - "Fragments to allocate: 1 5 out of 8 8\n", - "SEQUENTIAL Heavy iteration 52 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'C'] and ['O', 'O', 'C'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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', 'C-O2']\n", - " \n", - "Fragments to allocate: 1 6 out of 8 8\n", - "SEQUENTIAL Heavy iteration 53 with 9 and 9 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'C'] and ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 1\n", - "MERGE_FRAGMENTS: move_idx 0\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([[-4, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0],\n", - " [ 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 1, 0, 1, 0, -2, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, 1, 0, -3, 0, 0, 1],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, -3]])\n", - "SPILT_SPECIES: graph=<13x13 sparse matrix of type ''\n", - "\twith 39 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 = 13\n", - " Formula = C4-O8-Fe\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 C4-O8-Fe added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['C4-O8-Fe']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 7 7\n", - "SEQUENTIAL Heavy iteration 54 with 8 and 8 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C'] and ['O', 'O', 'C'] to combine\n", - "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([[-5, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0],\n", - " [ 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 1, 0, 1, 0, -3, 0, 0, 0, 0, 0, 0, 1],\n", - " [ 0, 0, 0, 0, 0, 1, 0, 1, 0, -3, 0, 0, 1, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 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, 1, 1, 1, -3, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1],\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, 1, 0, 0, 0, 0, 1, 1, -3]])\n", - "SPILT_SPECIES: graph=<16x16 sparse matrix of type ''\n", - "\twith 50 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 = 16\n", - " Formula = C5-O10-Fe\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 C5-O10-Fe added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['C5-O10-Fe']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 6 6\n", - "SEQUENTIAL Heavy iteration 55 with 7 and 7 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\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 ['C5-O10-Fe', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 2 out of 6 6\n", - "SEQUENTIAL Heavy iteration 56 with 7 and 7 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 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([[-6, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n", - " 1, 0, 0],\n", - " [ 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 0, 1, 1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 1, 0, 1, 0, -3, 0, 0, 0, 0, 0, 0, 1,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, 1, 0, -3, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, -3, 0, 0, 0,\n", - " 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1,\n", - " 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, -3,\n", - " 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " -2, 0, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -1, 1],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 1, -3]])\n", - "SPILT_SPECIES: graph=<19x19 sparse matrix of type ''\n", - "\twith 61 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 = 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", - " from merge fragments\n", - "COMBINE: Fragment C6-O12-Fe added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['C6-O12-Fe']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 5 5\n", - "SEQUENTIAL Heavy iteration 57 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'H2-C']\n", - " \n", - "Fragments to allocate: 0 2 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", + "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", " \n", - "Fragments to allocate: 0 3 out of 5 5\n", - "SEQUENTIAL Heavy iteration 59 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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 (-1, 0, -1)\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 ['C6-O12-Fe', 'H-O']\n", - " \n", - "Fragments to allocate: 0 4 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 0 5 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 36\n", - " \n", - "Fragments to allocate: 1 0 out of 5 5\n", - "SEQUENTIAL Heavy iteration 62 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'H'] and ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] to combine\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, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", + "MERGE_FRAGMENTS: translation (0, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 0)\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', 'C6-O12-Fe']\n", - " \n", - "Fragments to allocate: 1 2 out of 5 5\n", - "SEQUENTIAL Heavy iteration 63 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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 ['C6-O12-Fe', 'H2-C']\n", - " \n", - "Fragments to allocate: 1 3 out of 5 5\n", - "SEQUENTIAL Heavy iteration 64 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O', 'O', 'O', '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'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 1\n", - "MERGE_FRAGMENTS: move_idx 0\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: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\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', 'H20-C12-O6']\n", - " \n", - "Fragments to allocate: 1 4 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 1 5 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 36\n", - " \n", - "Fragments to allocate: 2 0 out of 5 5\n", - "SEQUENTIAL Heavy iteration 67 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_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', 'H2-C']\n", - " \n", - "Fragments to allocate: 2 1 out of 5 5\n", - "SEQUENTIAL Heavy iteration 68 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['C', 'H', 'H'] 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: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_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', 'H2-C']\n", + "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", " \n", - "Fragments to allocate: 2 3 out of 5 5\n", - "SEQUENTIAL Heavy iteration 69 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['O', 'H'] to combine\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, 0, -1), (-1, 0, -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", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H-O']\n", - " \n", - "Fragments to allocate: 2 4 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 2 5 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 36\n", - " \n", - "Fragments to allocate: 3 0 out of 5 5\n", - "SEQUENTIAL Heavy iteration 72 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 1\n", - "MERGE_FRAGMENTS: move_idx 0\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: translation (-1, 0, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (0, -1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_FRAGMENTS: translation (0, -1, 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', 'C6-O12-Fe']\n", - " \n", - "Fragments to allocate: 3 1 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 3 2 out of 5 5\n", - "SEQUENTIAL Heavy iteration 74 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', '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 ['O', 'H'] to combine\n", - "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: translation (0, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, 0, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\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 ['H20-C12-O6', 'H-O']\n", - " \n", - "Fragments to allocate: 3 4 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 3 5 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 36\n", - " \n", - "Fragments to allocate: 4 0 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 4 1 out of 5 5\n", - "SEQUENTIAL Heavy iteration 78 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['O', 'O', 'O', 'O', 'O', 'C', '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 ['O', 'H'] to combine\n", - "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: translation (1, 1, 0)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", + "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", + "MERGE_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-O']\n", - " \n", - "Fragments to allocate: 4 2 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 4 3 out of 5 5\n", - "SEQUENTIAL Heavy iteration 80 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['C', 'H', 'H'] 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: translation (-1, 1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", + "MERGE_FRAGMENTS: translation (1, -1, -1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", + "MERGE_FRAGMENTS: translation (1, -1, 1)\n", "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", + "MERGE_FRAGMENTS: translation (1, 1, -1)\n", + "MERGE_FRAGMENTS: count_species found 2\n", + "MERGE_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', 'H2-C']\n", - " \n", - "Fragments to allocate: 4 5 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 38 and 36\n", - " \n", - "Fragments to allocate: 5 0 out of 5 5\n", - "SEQUENTIAL Heavy SKIPPED 36 and 19\n", - " \n", - "Fragments to allocate: 5 1 out of 5 5\n", - "SEQUENTIAL Heavy iteration 83 with 6 and 6 Remaining in each list\n", - "SEQUENTIAL Heavy 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 ['C', 'H', 'H'] 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", + "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": 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, ..., -4, 1, 1],\n", - " [ 0, 0, 0, ..., 1, -1, 0],\n", - " [ 0, 0, 0, ..., 1, 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 4 4\n", - "SEQUENTIAL Heavy SKIPPED 39 and 19\n", - " \n", - "Fragments to allocate: 0 2 out of 4 4\n", - "SEQUENTIAL Heavy SKIPPED 39 and 38\n", - " \n", - "Fragments to allocate: 0 3 out of 4 4\n", - "SEQUENTIAL Heavy iteration 86 with 5 and 5 Remaining in each list\n", - "SEQUENTIAL Heavy 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'] and ['O', 'H'] to combine\n", - "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 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", + " [ 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, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -3, 1],\n", - " [ 0, 0, 0, ..., 0, 1, -1]])\n", - "SPILT_SPECIES: graph=<41x41 sparse matrix of type ''\n", - "\twith 125 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 = H22-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 H22-C12-O7 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H22-C12-O7']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 19\n", - " \n", - "Fragments to allocate: 0 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 0 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 1 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 41\n", - " \n", - "Fragments to allocate: 1 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 1 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 2 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 2 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 2 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 3 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 3 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 3 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " Increased Threshold_tmat. Now: 0.6000000000000001\n", - " Maxsize of the translation matrix is= 8\n", - " \n", - "Fragments to allocate: 0 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 19\n", - " \n", - "Fragments to allocate: 0 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 0 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 1 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 41\n", - " \n", - "Fragments to allocate: 1 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 1 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 2 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 2 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 2 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 3 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 3 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 3 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " Increased Threshold_tmat. Now: 0.8\n", - " Maxsize of the translation matrix is= 8\n", - " \n", - "Fragments to allocate: 0 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 19\n", - " \n", - "Fragments to allocate: 0 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 0 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 1 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 41\n", - " \n", - "Fragments to allocate: 1 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 1 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 2 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 2 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 2 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 3 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 3 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 3 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - "Trying Full Tmatrix for all Items in list\n", - " \n", - "Fragments to allocate: 0 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 19\n", - " \n", - "Fragments to allocate: 0 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 0 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 41 and 38\n", - " \n", - "Fragments to allocate: 1 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 41\n", - " \n", - "Fragments to allocate: 1 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 1 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 19 and 38\n", - " \n", - "Fragments to allocate: 2 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 2 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 2 3 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\n", - " \n", - "Fragments to allocate: 3 0 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 41\n", - " \n", - "Fragments to allocate: 3 1 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 19\n", - " \n", - "Fragments to allocate: 3 2 out of 3 3\n", - "SEQUENTIAL Heavy SKIPPED 38 and 38\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']\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']\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']\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)" + "# newmols, remfrag = sequential(filtered_fragments, newcell.refmoleclist, cellvec=newcell.cellvec, typ=\"Heavy\", debug=2)" ] }, {