From dfc66d9c508671c28f05c0a39e12b92eda559b2f Mon Sep 17 00:00:00 2001 From: my-name Date: Tue, 9 Apr 2024 16:32:10 +0200 Subject: [PATCH] Debugging prepare_mols and create_bonds --- cell2mol/classes.py | 35 +- cell2mol/test/test_one_by_one.ipynb | 4139 ++++++++++++++++++++++++--- 2 files changed, 3690 insertions(+), 484 deletions(-) diff --git a/cell2mol/classes.py b/cell2mol/classes.py index d0cab3db..b7be6b77 100644 --- a/cell2mol/classes.py +++ b/cell2mol/classes.py @@ -146,7 +146,7 @@ def reset_charge(self): if hasattr(self,"totcharge"): delattr(self,"totcharge") if hasattr(self,"atomic_charges"): delattr(self,"atomic") if hasattr(self,"smiles"): delattr(self,"smiles") - if hasattr(self,"rdkit_mol"): delattr(self,"rdkit_mol") + if hasattr(self,"rdkit_obj"): delattr(self,"rdkit_obj") if hasattr(self,"poscharges"): delattr(self,"poscharges") for a in self.atoms: a.reset_charge() @@ -296,7 +296,7 @@ def get_possible_cs(self, debug: int=0): ############ def create_bonds(self, debug: int=0): - if not hasattr(self,"rdkit_obj"): self.get_parent("cell").assign_charges() + # if not hasattr(self,"rdkit_obj"): self.get_parent("cell").assign_charges() for idx, atom in enumerate(self.atoms): # Security Check. Confirms that the labels are the same if debug >= 2: print("BUILD BONDS: atom", idx, atom.label) @@ -309,14 +309,16 @@ def create_bonds(self, debug: int=0): bond_startatom = b.GetBeginAtomIdx() bond_endatom = b.GetEndAtomIdx() bond_order = b.GetBondTypeAsDouble() - if debug >= 2: print("BUILD BONDS: bond", bond_startatom, bond_endatom, bond_order, self.atoms[bond_startatom].label, self.atoms[bond_endatom].label, self.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol()) + if debug >= 2: print("BUILD BONDS: bond", bond_startatom, bond_endatom, bond_order, + self.atoms[bond_startatom].label, self.atoms[bond_endatom].label, + self.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol()) if (self.subtype == "ligand") and (bond_startatom >= self.natoms or bond_endatom >= self.natoms): continue else: if self.atoms[bond_endatom].label != self.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol(): - pass if debug >= 1: - print("Error with Bond EndAtom", self.atoms[bond_endatom].label, self.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol()) + print("Error with Bond EndAtom", self.atoms[bond_endatom].label, + self.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol()) else: if bond_endatom == idx: start = bond_endatom @@ -480,7 +482,7 @@ def correct_smiles(self): if not hasattr(self,"smiles"): self.smiles = [] if not self.iscomplex: return self.smiles for lig in self.ligands: - lig.smiles, lig.rdkit_mol = correct_smiles_ligand(lig) + lig.smiles, lig.rdkit_obj = correct_smiles_ligand(lig) self.smiles.append(lig.smiles) ############### @@ -780,16 +782,21 @@ def __init__(self, atom1: object, atom2: object, bond_order: int=1): self.atom1 = atom1 self.atom2 = atom2 self.order = bond_order + self.distance = np.linalg.norm(np.array(atom1.coord) - np.array(atom2.coord)) def __repr__(self): + to_print = "" to_print += f'------------- Cell2mol BOND Object --------------\n' - to_print += f' Version = {self.version}\n' - to_print += f' Type = {self.type}\n' + to_print += f' Version = {self.version}\n' + to_print += f' Type = {self.type}\n' idx1 = self.atom1.get_parent_index("molecule") idx2 = self.atom2.get_parent_index("molecule") - to_print += f' Molecule Atom 1 = {idx1}\n' - to_print += f' Molecule Atom 2 = {idx2}\n' - to_print += f' Bond Order = {self.order}\n' + to_print += f' Molecule Atom 1 label = {self.atom1.label}\n' + to_print += f' Molecule Atom 2 label = {self.atom2.label}\n' + to_print += f' Molecule Atom 1 index = {idx1}\n' + to_print += f' Molecule Atom 2 index = {idx2}\n' + to_print += f' Bond Order = {self.order}\n' + to_print += f' Distance = {round(self.distance,3)}\n' to_print += '----------------------------------------------------\n' return to_print @@ -1440,14 +1447,13 @@ def create_bonds(self, debug: int=0): count = 0 for met in mol.metals: isconnected = at.check_connectivity(met, debug=debug) - # isconnected = check_connectivity(at, met) if isconnected: newbond = bond(at, met, 0.5) at.add_bond(newbond) met.add_bond(newbond) count += 1 if count != at.mconnec: - print(f"CELL.CREATE_BONDS: error creating bonds for atom: \n{atom}\n of ligand: \n{lig}\n") + print(f"CELL.CREATE_BONDS: error creating bonds for atom: \n{at}\n of ligand: \n{lig}\n") print(f"CELL.CREATE_BONDS: count differs from atom.mconnec: {count}, {at.mconnec}") # Adds Metal-Metal Bonds, with an arbitrary 0.5 order: @@ -1459,13 +1465,10 @@ def create_bonds(self, debug: int=0): for jdx, met2 in enumerate(mol.metals): if idx <= jdx: continue isconnected = met1.check_connectivity(met2, debug=debug) - # isconnected = check_connectivity(met1, met2) if isconnected: newbond = bond(met1, met2, 0.5) met1.add_bond(newbond) met2.add_bond(newbond) - else : - pass # Fourth part : correction smiles of ligands mol.smiles_with_H = [lig.smiles for lig in mol.ligands] diff --git a/cell2mol/test/test_one_by_one.ipynb b/cell2mol/test/test_one_by_one.ipynb index 7ecb7601..c8ccac2c 100644 --- a/cell2mol/test/test_one_by_one.ipynb +++ b/cell2mol/test/test_one_by_one.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 95, "id": "4b985e29", "metadata": {}, "outputs": [], @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 152, "id": "bc3b2bd0", "metadata": {}, "outputs": [], @@ -33,11 +33,7 @@ "from cell2mol.read_write import readinfo\n", "from cell2mol.classes import cell\n", "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct\n", - "from cell2mol.charge_assignment import (get_protonation_states_specie, \n", - " balance_charge, \n", - " get_list_of_charges_to_try, \n", - " get_charge,\n", - " prepare_mols)" + "from cell2mol.charge_assignment import *" ] }, { @@ -1550,7 +1546,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 87, "id": "a90e3045", "metadata": { "scrolled": true @@ -1572,6 +1568,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -1584,6 +1582,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -1629,29 +1629,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 0. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.4116689, 8.4886261, 6.9897009]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 1 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -1662,6 +1639,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -1721,49 +1700,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.7763357, 6.921396 , 6.3653056]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.7763357, 6.921396 , 6.3653056]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 2 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -1774,6 +1710,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -1833,49 +1771,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.0814801, 8.2617062, 9.5185732]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.0814801, 8.2617062, 9.5185732]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 3 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -1886,6 +1781,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -1945,28 +1842,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 3. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([12.3534909, 10.2389616, 7.2768814]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 4 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -1977,6 +1852,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2036,29 +1913,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 4. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([8.504325 , 4.9441406, 8.6069974]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 5 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2069,6 +1923,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2163,18 +2019,19 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "True\n", "PREPARE: reordering with data: \n", "ref_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "target_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with ['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with [array([ 9.3494897, 12.1903552, 15.2429643]), array([ 9.2503785, 11.6566577, 14.4151283]), array([10.314404 , 12.2675314, 15.4508048]), array([ 8.6286451, 11.513658 , 16.3827914]), array([ 8.7108809, 12.0604495, 17.1918845]), array([ 7.6814864, 11.4090764, 16.1540636]), array([ 8.7846918, 13.4878907, 15.0579171]), array([ 9.471571 , 14.2364155, 14.0572327]), array([10.4126702, 14.3786323, 14.3292759]), array([ 9.4670343, 13.7384022, 13.2015364]), array([ 8.7835726, 15.5620242, 13.8813982]), array([ 8.7874632, 16.0474661, 14.7327264]), array([ 9.2565273, 16.0881119, 13.2032201]), array([ 7.8584453, 15.4143785, 13.5937888]), array([ 9.0254048, 10.6319347, 16.5426468])]\n", "PREPARE: reordering protonation with [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]\n", - "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", @@ -2195,6 +2052,8 @@ " Number of Atoms = 3\n", " Formula = H2-O\n", " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = O.[H].[H]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2207,6 +2066,8 @@ " Number of Atoms = 3\n", " Formula = H2-O\n", " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = O.[H].[H]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2226,8 +2087,8 @@ "------------- Cell2mol Protonation ----------------\n", " Status = True\n", " Labels = ['O', 'H', 'H']\n", - " Atoms added in positions = [0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0]\n", + " Atoms added in positions = [0, 0, 0]\n", + " Atoms blocked (no atoms added) = [1, 0, 0]\n", "---------------------------------------------------\n", "\n", "PREPARE: reordering with data: \n", @@ -2251,29 +2112,6 @@ "PREPARE: Wanted charge 0, obtained: 0\n", "PREPARE: smiles: [H]O[H]\n", "PREPARE: Success doing ligand 0. Created Charge State with total_charge=0\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.8568825, 4.4277939, 1.0300695]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 1 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2284,6 +2122,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2343,29 +2183,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.250637 , 1.6225847, 0.4599971]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 2 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2376,6 +2193,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2435,29 +2254,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.8139984, 1.1805653, 3.3330731]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 3 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2468,6 +2264,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2554,18 +2352,19 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "False\n", "PREPARE: reordering with data: \n", "ref_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "target_data=['C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with ['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with [array([11.3862448, 0.9466867, 1.8266461]), array([12.0703526, -0.864364 , 1.1511523]), array([12.9993706, -0.2312764, 2.29009 ]), array([12.0742433, -0.378922 , 2.0024806]), array([11.3907815, 1.4446999, 2.6823424]), array([10.4451456, 0.8044698, 1.5546029]), array([12.073124 , 1.6952115, 0.8259617]), array([11.5083262, 2.992747 , 0.6409145]), array([13.1763294, 3.7740258, -0.2701848]), array([12.146935 , 3.1226527, -1.3080057]), array([12.2291708, 3.6694442, -0.4989126]), array([11.6074373, 3.5264445, 1.4687505]), array([11.8324111, 4.5511675, -0.658768 ]), array([10.5434119, 2.9155708, 0.433074 ]), array([11.6012886, -0.9050097, 2.6806587])]\n", "PREPARE: reordering protonation with [ 7 11 13 10 9 8 3 0 6 5 4 1 14 2 12]\n", - "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 7 11 13 10 9 8 3 0 6 5 4 1 14 2 12]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['C', 'H', 'H', 'H', 'H', 'O', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", @@ -2576,37 +2375,6 @@ "PREPARE: Success doing molecule 3. Created Charge State with total_charge=0\n", "******************idx=4 mol.formula='H2-O-Cl3-Fe'******************\n", "PREPARE: Molecule 4 has 4 ligands\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[17.1552809, 13.8020062, 15.7453714]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "labels=['O'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=O\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 3\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([17.1552809, 13.8020062, 15.7453714]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label O\n", "\n", "PREPARE: Doing Ligand 0 with unique_index: 3\n", "PREPARE: Ligand \n", @@ -2617,6 +2385,8 @@ " Number of Atoms = 3\n", " Formula = H2-O\n", " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = O.[H].[H]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2675,37 +2445,6 @@ "PREPARE: Wanted charge 0, obtained: 0\n", "PREPARE: smiles: [H]O[H]\n", "PREPARE: Success doing ligand 0. Created Charge State with total_charge=0\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.0009333, 10.7553082, 14.8538092]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.0009333, 10.7553082, 14.8538092]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 1 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2716,6 +2455,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2775,37 +2516,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[13.6071789, 13.5605175, 15.4238817]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([13.6071789, 13.5605175, 15.4238817]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 2 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2816,6 +2526,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -2875,37 +2587,6 @@ "PREPARE: Wanted charge -1, obtained: -1\n", "PREPARE: smiles: [Cl-]\n", "PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.0438174, 14.0025369, 12.5508057]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.0438174, 14.0025369, 12.5508057]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", "\n", "PREPARE: Doing Ligand 3 with unique_index: 0\n", "PREPARE: Ligand \n", @@ -2916,6 +2597,8 @@ " Number of Atoms = 1\n", " Formula = Cl\n", " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", " Origin = split_complex\n", " Number of Groups = 1\n", "---------------------------------------------------\n", @@ -3002,6 +2685,7 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "True\n", "PREPARE: reordering with data: \n", "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", @@ -3010,14 +2694,14 @@ "PREPARE: reordering protonation with [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n", " 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n", " 48 49 50 51 52]\n", - "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['N', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n", " 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n", " 48 49 50 51 52]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['N', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", @@ -3038,6 +2722,7 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "False\n", "PREPARE: reordering with data: \n", "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", @@ -3046,14 +2731,14 @@ "PREPARE: reordering protonation with [ 0 41 43 48 1 2 3 25 27 16 28 26 8 12 14 19 4 42 7 13 39 38 40 29\n", " 44 46 50 34 36 30 37 31 35 32 33 10 51 52 47 45 11 15 6 17 18 20 24 21\n", " 23 9 22 5 49]\n", - "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['N', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 0 41 43 48 1 2 3 25 27 16 28 26 8 12 14 19 4 42 7 13 39 38 40 29\n", " 44 46 50 34 36 30 37 31 35 32 33 10 51 52 47 45 11 15 6 17 18 20 24 21\n", " 23 9 22 5 49]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", @@ -3074,28 +2759,23 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "True\n", "PREPARE: reordering with data: \n", "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", - "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with ['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", "PREPARE: reordering with [array([15.8956985, 10.2955651, 10.3664547]), array([18.3562909, 11.0613812, 10.1178719]), array([19.8531919, 10.7972258, 11.5234999]), array([19.2373581, 12.2744298, 11.5456579]), array([17.1555994, 10.8443817, 11.0277005]), array([17.4228482, 10.2212295, 11.7490033]), array([15.0367109, 9.8320992, 12.1808701]), array([16.1403552, 7.8127887, 11.0288124]), array([16.2554357, 6.2967627, 9.6166879]), array([15.2230239, 7.6612695, 11.3690133]), array([16.7088835, 6.5084445, 10.4708117]), array([17.6727235, 6.6307324, 10.2803481]), array([16.701649 , 8.1300257, 11.780104 ]), array([15.5372296, 11.0799698, 9.1186171]), array([14.7153144, 10.6891879, 8.7287632]), array([15.3989102, 8.6174578, 9.2861444]), array([14.7960017, 10.4030663, 11.4087548]), array([16.9298296, 11.7092722, 11.4532614]), array([15.3106326, 12.5608311, 9.3257429]), array([15.4259999, 12.9936682, 7.3018508]), array([16.1594636, 12.9921282, 9.5970554]), array([16.1156103, 8.8583817, 9.9250417]), array([16.2641697, 10.9642006, 8.4566247]), array([16.9752033, 8.8127561, 9.4359611]), array([19.5360577, 11.5406699, 10.9519344]), array([20.3752215, 12.7682254, 9.5234654]), array([21.4118933, 12.3481531, 10.6679942]), array([20.6845807, 12.0324812, 10.0921401]), array([21.0086653, 11.2986095, 9.5291519]), array([18.1369702, 11.7359142, 9.4271932]), array([18.5894937, 10.2143743, 9.6615122]), array([16.5368564, 5.3463507, 11.4241621]), array([16.9546566, 4.5462197, 11.0428537]), array([15.5812583, 5.1793761, 11.5662434]), array([16.9616118, 5.560481 , 12.2807003]), array([14.8000248, 13.2004114, 8.0404194]), array([13.9186658, 12.8123661, 7.8105003]), array([14.650033 , 12.6978022, 10.0503019]), array([14.6642625, 14.7073883, 8.1751147]), array([14.3314826, 15.0818759, 7.3327926]), array([14.0343277, 14.915392 , 8.8964493]), array([13.4116238, 9.9999384, 10.9209609]), array([12.0766836, 11.8043689, 12.4285157]), array([13.1392786, 11.1882242, 13.4543442]), array([12.4549053, 9.8161739, 12.0908085]), array([13.0597633, 10.6982785, 10.3138472]), array([13.4752392, 9.1538361, 10.410993 ]), array([12.299566 , 11.0232539, 12.9768113]), array([11.5647205, 9.5705705, 11.7340884]), array([11.5815756, 10.8629985, 13.6242382]), array([12.7743452, 9.0591309, 12.6430275]), array([14.7568356, 11.3386271, 11.7301809]), array([15.5390842, 15.096891 , 8.3828123])]\n", "PREPARE: reordering protonation with [ 0 41 45 46 13 14 22 18 37 20 35 36 19 4 5 17 21 15 7 12 9 16 6 51\n", " 44 50 48 47 49 43 42 38 40 52 39 10 11 8 31 34 32 1 30 29 24 2 3 27\n", " 26 28 25 23 33]\n", - "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['N', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 0 41 45 46 13 14 22 18 37 20 35 36 19 4 5 17 21 15 7 12 9 16 6 51\n", " 44 50 48 47 49 43 42 38 40 52 39 10 11 8 31 34 32 1 30 29 24 2 3 27\n", " 26 28 25 23 33]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['N', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['N', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", @@ -3116,6 +2796,7 @@ " Corrected Is Zwitterion? = False\n", "---------------------------------------------------\n", "]\n", + "False\n", "PREPARE: reordering with data: \n", "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", @@ -3124,27 +2805,21 @@ "PREPARE: reordering protonation with [ 0 15 6 17 12 14 13 4 5 39 18 20 19 38 26 42 28 16 25 27 24 1 3 2\n", " 21 8 22 7 49 9 51 10 11 45 23 31 37 36 34 33 35 41 30 40 44 43 52 47\n", " 48 46 50 29 32]\n", - "PROTONATION.REORDER. labels: ['N', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. labels: ['N', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", "PROTONATION.REORDER. received map: [ 0 15 6 17 12 14 13 4 5 39 18 20 19 38 26 42 28 16 25 27 24 1 3 2\n", " 21 8 22 7 49 9 51 10 11 45 23 31 37 36 34 33 35 41 30 40 44 43 52 47\n", " 48 46 50 29 32]\n", "PREPARE: reordered protonation: \n", "------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['N', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['N', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", "\n", - "*****get_charge******\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "*****get_charge******\n", "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "1 52 H 0 1 1 1 0 True\n", + "1 52 C 0 4 4 4 0 True\n", "PREPARE: Success doing molecule 8. Created Charge State with total_charge=1\n" ] } @@ -3191,7 +2866,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -3207,9 +2882,7 @@ "cell_type": "code", "execution_count": 26, "id": "c5bcf712", - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3327,108 +3000,3496 @@ } ], "source": [ - "newcell.moleclist" + "newcell.moleclist" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "d59b4c39", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 Cl6-Fe2 True\n", + "1 H10-C4-O False\n", + "2 H2-O-Cl3-Fe True\n", + "3 H10-C4-O False\n", + "4 H2-O-Cl3-Fe True\n", + "5 H36-C16-N False\n", + "6 H36-C16-N False\n", + "7 H36-C16-N False\n", + "8 H36-C16-N False\n" + ] + } + ], + "source": [ + "for i, mol in enumerate(newcell.moleclist):\n", + " print(i, mol.formula, mol.iscomplex)\n", + "# if not mol.iscomplex:\n", + " \n", + "# # try :\n", + "# # print(mol.possible_cs)\n", + "# # except:\n", + "# # print(\"No possible_cs assigned\", mol.formula)\n", + "# # try :\n", + "# # print(mol.protonation_states)\n", + "# # except:\n", + "# # print(\"No protonation_states assigned\", mol.formula)\n", + "# try :\n", + "# print(mol.rdkit_obj)\n", + "# except:\n", + "# print(\"No protonation_states assigned\", mol.rdkit_obj)\n", + "# Draw.MolsToGridImage(mol.rdkit_obj)\n", + "# # else :\n", + "# # for lig in mol.ligands:\n", + "# # # try :\n", + "# # # print(lig.possible_cs)\n", + "# # # except:\n", + "# # # print(\"No possible_cs assigned\", lig.formula)\n", + " \n", + "# # try :\n", + "# # print(lig.protonation_states)\n", + "# except:\n", + "# print(\"No protonation_states assigned\", lig.formula)\n", + "# # for met in mol.metals:\n", + "# # try :\n", + "# # print(met.possible_cs)\n", + "# # except:\n", + "# # print(\"No possible_cs assigned\", met.label)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c7d79a2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "320e7312", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for lig in newcell.moleclist[4].ligands:\n", + " display(lig.rdkit_obj)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "819d187a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.moleclist[3].rdkit_obj" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "f3c6d24a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.moleclist[8].rdkit_obj" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "eda12266", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'molecule' object has no attribute 'rdkit_obj'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [40]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mnewcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmoleclist\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrdkit_obj\u001b[49m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'molecule' object has no attribute 'rdkit_obj'" + ] + } + ], + "source": [ + "newcell.moleclist[0].rdkit_obj" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "a1be7b44", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on Bond in module rdkit.Chem.rdchem object:\n", + "\n", + "class Bond(Boost.Python.instance)\n", + " | The class to store Bonds.\n", + " | Note: unlike Atoms, is it currently impossible to construct Bonds from\n", + " | Python.\n", + " | \n", + " | Method resolution order:\n", + " | Bond\n", + " | Boost.Python.instance\n", + " | builtins.object\n", + " | \n", + " | Static methods defined here:\n", + " | \n", + " | ClearProp(...)\n", + " | ClearProp( (Bond)arg1, (str)arg2) -> None :\n", + " | Removes a particular property from an Bond (does nothing if not already set).\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be removed.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void ClearProp(RDKit::Bond const*,char const*)\n", + " | \n", + " | DescribeQuery(...)\n", + " | DescribeQuery( (Bond)arg1) -> str :\n", + " | returns a text description of the query. Primarily intended for debugging purposes.\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | std::__1::basic_string, std::__1::allocator> DescribeQuery(RDKit::Bond const*)\n", + " | \n", + " | GetBeginAtom(...)\n", + " | GetBeginAtom( (Bond)arg1) -> Atom :\n", + " | Returns the bond's first atom.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Atom* GetBeginAtom(RDKit::Bond {lvalue})\n", + " | \n", + " | GetBeginAtomIdx(...)\n", + " | GetBeginAtomIdx( (Bond)arg1) -> int :\n", + " | Returns the index of the bond's first atom.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | unsigned int GetBeginAtomIdx(RDKit::Bond {lvalue})\n", + " | \n", + " | GetBondDir(...)\n", + " | GetBondDir( (Bond)arg1) -> BondDir :\n", + " | Returns the type of the bond as a BondDir\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Bond::BondDir GetBondDir(RDKit::Bond {lvalue})\n", + " | \n", + " | GetBondType(...)\n", + " | GetBondType( (Bond)arg1) -> BondType :\n", + " | Returns the type of the bond as a BondType\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Bond::BondType GetBondType(RDKit::Bond {lvalue})\n", + " | \n", + " | GetBondTypeAsDouble(...)\n", + " | GetBondTypeAsDouble( (Bond)arg1) -> float :\n", + " | Returns the type of the bond as a double (i.e. 1.0 for SINGLE, 1.5 for AROMATIC, 2.0 for DOUBLE)\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | double GetBondTypeAsDouble(RDKit::Bond {lvalue})\n", + " | \n", + " | GetBoolProp(...)\n", + " | GetBoolProp( (Bond)arg1, (str)arg2) -> bool :\n", + " | Returns the value of the property.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to return (a boolean).\n", + " | \n", + " | RETURNS: a boolean\n", + " | \n", + " | NOTE:\n", + " | - If the property has not been set, a KeyError exception will be raised.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool GetBoolProp(RDKit::Bond*,char const*)\n", + " | \n", + " | GetDoubleProp(...)\n", + " | GetDoubleProp( (Bond)arg1, (str)arg2) -> float :\n", + " | Returns the value of the property.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to return (a double).\n", + " | \n", + " | RETURNS: a double\n", + " | \n", + " | NOTE:\n", + " | - If the property has not been set, a KeyError exception will be raised.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | double GetDoubleProp(RDKit::Bond*,char const*)\n", + " | \n", + " | GetEndAtom(...)\n", + " | GetEndAtom( (Bond)arg1) -> Atom :\n", + " | Returns the bond's second atom.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Atom* GetEndAtom(RDKit::Bond {lvalue})\n", + " | \n", + " | GetEndAtomIdx(...)\n", + " | GetEndAtomIdx( (Bond)arg1) -> int :\n", + " | Returns the index of the bond's first atom.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | unsigned int GetEndAtomIdx(RDKit::Bond {lvalue})\n", + " | \n", + " | GetIdx(...)\n", + " | GetIdx( (Bond)arg1) -> int :\n", + " | Returns the bond's index (ordering in the molecule)\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | unsigned int GetIdx(RDKit::Bond {lvalue})\n", + " | \n", + " | GetIntProp(...)\n", + " | GetIntProp( (Bond)arg1, (str)arg2) -> int :\n", + " | Returns the value of the property.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to return (an int).\n", + " | \n", + " | RETURNS: an int\n", + " | \n", + " | NOTE:\n", + " | - If the property has not been set, a KeyError exception will be raised.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | int GetIntProp(RDKit::Bond*,char const*)\n", + " | \n", + " | GetIsAromatic(...)\n", + " | GetIsAromatic( (Bond)arg1) -> bool :\n", + " | \n", + " | C++ signature :\n", + " | bool GetIsAromatic(RDKit::Bond {lvalue})\n", + " | \n", + " | GetIsConjugated(...)\n", + " | GetIsConjugated( (Bond)arg1) -> bool :\n", + " | Returns whether or not the bond is considered to be conjugated.\n", + " | \n", + " | C++ signature :\n", + " | bool GetIsConjugated(RDKit::Bond {lvalue})\n", + " | \n", + " | GetOtherAtom(...)\n", + " | GetOtherAtom( (Bond)arg1, (Atom)arg2) -> Atom :\n", + " | Given one of the bond's atoms, returns the other one.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Atom* GetOtherAtom(RDKit::Bond {lvalue},RDKit::Atom const*)\n", + " | \n", + " | GetOtherAtomIdx(...)\n", + " | GetOtherAtomIdx( (Bond)arg1, (int)arg2) -> int :\n", + " | Given the index of one of the bond's atoms, returns the\n", + " | index of the other.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | unsigned int GetOtherAtomIdx(RDKit::Bond {lvalue},unsigned int)\n", + " | \n", + " | GetOwningMol(...)\n", + " | GetOwningMol( (Bond)arg1) -> Mol :\n", + " | Returns the Mol that owns this bond.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::ROMol {lvalue} GetOwningMol(RDKit::Bond {lvalue})\n", + " | \n", + " | GetProp(...)\n", + " | GetProp( (Bond)arg1, (str)arg2) -> str :\n", + " | Returns the value of the property.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to return (a string).\n", + " | \n", + " | RETURNS: a string\n", + " | \n", + " | NOTE:\n", + " | - If the property has not been set, a KeyError exception will be raised.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | std::__1::basic_string, std::__1::allocator> GetProp(RDKit::Bond*,char const*)\n", + " | \n", + " | GetPropNames(...)\n", + " | GetPropNames( (Bond)self [, (bool)includePrivate=False [, (bool)includeComputed=False]]) -> _vectNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE :\n", + " | Returns a list of the properties set on the Bond.\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | std::__1::vector, std::__1::allocator>, std::__1::allocator, std::__1::allocator>>> GetPropNames(RDKit::Bond {lvalue} [,bool=False [,bool=False]])\n", + " | \n", + " | GetPropsAsDict(...)\n", + " | GetPropsAsDict( (Bond)self [, (bool)includePrivate=True [, (bool)includeComputed=True]]) -> dict :\n", + " | Returns a dictionary of the properties set on the Bond.\n", + " | n.b. some properties cannot be converted to python types.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | boost::python::dict GetPropsAsDict(RDKit::Bond [,bool=True [,bool=True]])\n", + " | \n", + " | GetSmarts(...)\n", + " | GetSmarts( (Bond)bond [, (bool)allBondsExplicit=False]) -> str :\n", + " | returns the SMARTS (or SMILES) string for a Bond\n", + " | \n", + " | C++ signature :\n", + " | std::__1::basic_string, std::__1::allocator> GetSmarts(RDKit::Bond const* [,bool=False])\n", + " | \n", + " | GetStereo(...)\n", + " | GetStereo( (Bond)arg1) -> BondStereo :\n", + " | Returns the stereo configuration of the bond as a BondStereo\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | RDKit::Bond::BondStereo GetStereo(RDKit::Bond {lvalue})\n", + " | \n", + " | GetStereoAtoms(...)\n", + " | GetStereoAtoms( (Bond)arg1) -> _vecti :\n", + " | Returns the indices of the atoms setting this bond's stereochemistry.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | std::__1::vector> GetStereoAtoms(RDKit::Bond const*)\n", + " | \n", + " | GetUnsignedProp(...)\n", + " | GetUnsignedProp( (Bond)arg1, (str)arg2) -> int :\n", + " | Returns the value of the property.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to return (an unsigned integer).\n", + " | \n", + " | RETURNS: an int (Python has no unsigned type)\n", + " | \n", + " | NOTE:\n", + " | - If the property has not been set, a KeyError exception will be raised.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | unsigned int GetUnsignedProp(RDKit::Bond*,char const*)\n", + " | \n", + " | GetValenceContrib(...)\n", + " | GetValenceContrib( (Bond)arg1, (Atom)arg2) -> float :\n", + " | Returns the contribution of the bond to the valence of an Atom.\n", + " | \n", + " | ARGUMENTS:\n", + " | \n", + " | - atom: the Atom to consider.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | double GetValenceContrib(RDKit::Bond {lvalue},RDKit::Atom const*)\n", + " | \n", + " | HasOwningMol(...)\n", + " | HasOwningMol( (Bond)arg1) -> bool :\n", + " | Returns whether or not this instance belongs to a molecule.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool HasOwningMol(RDKit::Bond {lvalue})\n", + " | \n", + " | HasProp(...)\n", + " | HasProp( (Bond)arg1, (str)arg2) -> int :\n", + " | Queries a Bond to see if a particular property has been assigned.\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to check for (a string).\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | int HasProp(RDKit::Bond const*,char const*)\n", + " | \n", + " | HasQuery(...)\n", + " | HasQuery( (Bond)arg1) -> bool :\n", + " | Returns whether or not the bond has an associated query\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool HasQuery(RDKit::Bond {lvalue})\n", + " | \n", + " | IsInRing(...)\n", + " | IsInRing( (Bond)arg1) -> bool :\n", + " | Returns whether or not the bond is in a ring of any size.\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool IsInRing(RDKit::Bond const*)\n", + " | \n", + " | IsInRingSize(...)\n", + " | IsInRingSize( (Bond)arg1, (int)arg2) -> bool :\n", + " | Returns whether or not the bond is in a ring of a particular size.\n", + " | \n", + " | ARGUMENTS:\n", + " | - size: the ring size to look for\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool IsInRingSize(RDKit::Bond const*,int)\n", + " | \n", + " | Match(...)\n", + " | Match( (Bond)arg1, (Bond)arg2) -> bool :\n", + " | Returns whether or not this bond matches another Bond.\n", + " | \n", + " | Each Bond (or query Bond) has a query function which is\n", + " | used for this type of matching.\n", + " | \n", + " | ARGUMENTS:\n", + " | - other: the other Bond to which to compare\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | bool Match(RDKit::Bond {lvalue},RDKit::Bond const*)\n", + " | \n", + " | SetBondDir(...)\n", + " | SetBondDir( (Bond)arg1, (BondDir)arg2) -> None :\n", + " | Set the type of the bond as a BondDir\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetBondDir(RDKit::Bond {lvalue},RDKit::Bond::BondDir)\n", + " | \n", + " | SetBondType(...)\n", + " | SetBondType( (Bond)arg1, (BondType)arg2) -> None :\n", + " | Set the type of the bond as a BondType\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetBondType(RDKit::Bond {lvalue},RDKit::Bond::BondType)\n", + " | \n", + " | SetBoolProp(...)\n", + " | SetBoolProp( (Bond)self, (str)key, (bool)val) -> None :\n", + " | Sets a bond property\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be set (a string).\n", + " | - value: the property value (a boolean).\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetBoolProp(RDKit::Bond const*,char const*,bool)\n", + " | \n", + " | SetDoubleProp(...)\n", + " | SetDoubleProp( (Bond)self, (str)key, (float)val) -> None :\n", + " | Sets a bond property\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be set (a string).\n", + " | - value: the property value (a double).\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetDoubleProp(RDKit::Bond const*,char const*,double)\n", + " | \n", + " | SetIntProp(...)\n", + " | SetIntProp( (Bond)self, (str)key, (int)val) -> None :\n", + " | Sets a bond property\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be set (a string).\n", + " | - value: the property value (an int).\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetIntProp(RDKit::Bond const*,char const*,int)\n", + " | \n", + " | SetIsAromatic(...)\n", + " | SetIsAromatic( (Bond)arg1, (bool)arg2) -> None :\n", + " | \n", + " | C++ signature :\n", + " | void SetIsAromatic(RDKit::Bond {lvalue},bool)\n", + " | \n", + " | SetIsConjugated(...)\n", + " | SetIsConjugated( (Bond)arg1, (bool)arg2) -> None :\n", + " | \n", + " | C++ signature :\n", + " | void SetIsConjugated(RDKit::Bond {lvalue},bool)\n", + " | \n", + " | SetProp(...)\n", + " | SetProp( (Bond)self, (str)key, (str)val) -> None :\n", + " | Sets a bond property\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be set (a string).\n", + " | - value: the property value (a string).\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetProp(RDKit::Bond const*,char const*,std::__1::basic_string, std::__1::allocator>)\n", + " | \n", + " | SetStereo(...)\n", + " | SetStereo( (Bond)arg1, (BondStereo)arg2) -> None :\n", + " | Set the stereo configuration of the bond as a BondStereo\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetStereo(RDKit::Bond {lvalue},RDKit::Bond::BondStereo)\n", + " | \n", + " | SetStereoAtoms(...)\n", + " | SetStereoAtoms( (Bond)arg1, (int)arg2, (int)arg3) -> None :\n", + " | Set the indices of the atoms setting this bond's stereochemistry.\n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetStereoAtoms(RDKit::Bond {lvalue},unsigned int,unsigned int)\n", + " | \n", + " | SetUnsignedProp(...)\n", + " | SetUnsignedProp( (Bond)self, (str)key, (int)val) -> None :\n", + " | Sets a bond property\n", + " | \n", + " | ARGUMENTS:\n", + " | - key: the name of the property to be set (a string).\n", + " | - value: the property value (an int >= 0).\n", + " | \n", + " | \n", + " | \n", + " | C++ signature :\n", + " | void SetUnsignedProp(RDKit::Bond const*,char const*,unsigned int)\n", + " | \n", + " | __init__(...)\n", + " | Raises an exception\n", + " | This class cannot be instantiated from Python\n", + " | \n", + " | __reduce__ = (...)\n", + " | \n", + " | ----------------------------------------------------------------------\n", + " | Static methods inherited from Boost.Python.instance:\n", + " | \n", + " | __new__(*args, **kwargs) from Boost.Python.class\n", + " | Create and return a new object. See help(type) for accurate signature.\n", + " | \n", + " | ----------------------------------------------------------------------\n", + " | Data descriptors inherited from Boost.Python.instance:\n", + " | \n", + " | __dict__\n", + " | \n", + " | __weakref__\n", + "\n" + ] + } + ], + "source": [ + "help(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "07e17fa3", + "metadata": {}, + "outputs": [], + "source": [ + "from cell2mol.connectivity import *\n" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "id": "e6bd38b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([[-1,\n", + " -1,\n", + " -1,\n", + " -1,\n", + " -1,\n", + " -1,\n", + " 2,\n", + " 2,\n", + " 0,\n", + " 0,\n", + " -1,\n", + " -1,\n", + " -1,\n", + " 2,\n", + " 0,\n", + " 0,\n", + " -1,\n", + " -1,\n", + " -1,\n", + " 2,\n", + " 1,\n", + " 1,\n", + " 1,\n", + " 1]],\n", + " [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 0, 0, 4, 2, 3, 0, 0, 0, 4, 5, 5, 5, 5])" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_charge_distribution, newcell.unique_indices" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "8f132131", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[------------- Cell2mol LIGAND Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = ligand\n", + " Number of Atoms = 1\n", + " Formula = Cl\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", + " Origin = split_complex\n", + " Number of Groups = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol METAL Object --------------\n", + " Version = 0.1\n", + " Type = atom\n", + " Sub-Type = metal\n", + " Label = Fe\n", + " Atomic Number = 26\n", + " Index in Molecule = 0\n", + " Metal Adjacency (mconnec) = 5\n", + " Regular Adjacencies (connec) = 5\n", + " Atom Charge = 2.0\n", + " Coordination Sphere Formula = Cl4-Fe\n", + " Possible Charges = [2, 3]\n", + " ----------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 15\n", + " Formula = H10-C4-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol LIGAND Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = ligand\n", + " Number of Atoms = 3\n", + " Formula = H2-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]O[H]\n", + " Origin = split_complex\n", + " Number of Groups = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol METAL Object --------------\n", + " Version = 0.1\n", + " Type = atom\n", + " Sub-Type = metal\n", + " Label = Fe\n", + " Atomic Number = 26\n", + " Index in Molecule = 0\n", + " Metal Adjacency (mconnec) = 4\n", + " Regular Adjacencies (connec) = 4\n", + " Atom Charge = 2.0\n", + " Coordination Sphere Formula = O-Cl3\n", + " Possible Charges = [2, 3]\n", + " ----------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------]" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.unique_species" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "425ac2f3", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[------------- Cell2mol LIGAND Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = ligand\n", + " Number of Atoms = 1\n", + " Formula = Cl\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = [Cl-]\n", + " Origin = split_complex\n", + " Number of Groups = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol METAL Object --------------\n", + " Version = 0.1\n", + " Type = atom\n", + " Sub-Type = metal\n", + " Label = Fe\n", + " Atomic Number = 26\n", + " Index in Molecule = 0\n", + " Metal Adjacency (mconnec) = 5\n", + " Regular Adjacencies (connec) = 5\n", + " Atom Charge = 2.0\n", + " Coordination Sphere Formula = Cl4-Fe\n", + " Possible Charges = [2, 3]\n", + " ----------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 15\n", + " Formula = H10-C4-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol LIGAND Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = ligand\n", + " Number of Atoms = 3\n", + " Formula = H2-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]O[H]\n", + " Origin = split_complex\n", + " Number of Groups = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol METAL Object --------------\n", + " Version = 0.1\n", + " Type = atom\n", + " Sub-Type = metal\n", + " Label = Fe\n", + " Atomic Number = 26\n", + " Index in Molecule = 0\n", + " Metal Adjacency (mconnec) = 4\n", + " Regular Adjacencies (connec) = 4\n", + " Atom Charge = 2.0\n", + " Coordination Sphere Formula = O-Cl3\n", + " Possible Charges = [2, 3]\n", + " ----------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------]" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.unique_species" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "02d7b9f5", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 8\n", + " Formula = Cl6-Fe2\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = -2\n", + " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", + " Origin = cell.reconstruct\n", + " Number of Ligands = 6\n", + " Number of Metals = 2\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 15\n", + " Formula = H10-C4-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 7\n", + " Formula = H2-O-Cl3-Fe\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", + " Origin = cell.reconstruct\n", + " Number of Ligands = 4\n", + " Number of Metals = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 15\n", + " Formula = H10-C4-O\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 0\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 7\n", + " Formula = H2-O-Cl3-Fe\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = -1\n", + " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", + " Origin = cell.reconstruct\n", + " Number of Ligands = 4\n", + " Number of Metals = 1\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------,\n", + " ------------- Cell2mol MOLECULE Object --------------\n", + " Version = 0.1\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 53\n", + " Formula = H36-C16-N\n", + " Has Adjacency Matrix = YES\n", + " Total Charge = 1\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Origin = cell.reconstruct\n", + " ---------------------------------------------------]" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.moleclist" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "e42ac35f", + "metadata": {}, + "outputs": [], + "source": [ + "from cell2mol.hungarian import reorder" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65e61910", + "metadata": {}, + "outputs": [], + "source": [ + "np.where()" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "b9e7af66", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 0, 0, 4, 2, 3, 0, 0, 0, 4, 5, 5, 5, 5]" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.unique_indices" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "16272ddf", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cl6-Fe2\n", + "0 0 Cl 0\n", + "0 1 Cl 0\n", + "0 2 Cl 0\n", + "0 3 Cl 0\n", + "0 4 Cl 0\n", + "0 5 Cl 0\n", + "0 0 Fe 1\n", + "0 1 Fe 1\n", + "\n", + "H10-C4-O\n", + "1 H10-C4-O 2\n", + "\n", + "H2-O-Cl3-Fe\n", + "2 0 H2-O 3\n", + "2 1 Cl 0\n", + "2 2 Cl 0\n", + "2 3 Cl 0\n", + "2 0 Fe 4\n", + "\n", + "H10-C4-O\n", + "3 H10-C4-O 2\n", + "\n", + "H2-O-Cl3-Fe\n", + "4 0 H2-O 3\n", + "4 1 Cl 0\n", + "4 2 Cl 0\n", + "4 3 Cl 0\n", + "4 0 Fe 4\n", + "\n", + "H36-C16-N\n", + "5 H36-C16-N 5\n", + "\n", + "H36-C16-N\n", + "6 H36-C16-N 5\n", + "\n", + "H36-C16-N\n", + "7 H36-C16-N 5\n", + "\n", + "H36-C16-N\n", + "8 H36-C16-N 5\n", + "\n", + "24\n" + ] + } + ], + "source": [ + "count = 0\n", + "for idx, mol in enumerate(newcell.moleclist):\n", + " print(mol.formula)\n", + " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", + " print(idx, mol.formula, mol.unique_index)\n", + " count += 1\n", + " elif mol.iscomplex :\n", + " for jdx, lig in enumerate(mol.ligands):\n", + " print(idx, jdx, lig.formula, lig.unique_index)\n", + " count += 1\n", + " for jdx, met in enumerate(mol.metals):\n", + " print(idx, jdx, met.label, met.unique_index)\n", + " count += 1\n", + " print(\"\")\n", + "print(count)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "b835c8a1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(final_charge_distribution)" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "id": "79f1cd51", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def prepare_mols_v2 (moleclist: list, unique_indices: list, unique_species: list, \n", + " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", + " count = 0\n", + " for idx, mol in enumerate(moleclist):\n", + " if debug >= 2: print(f\"******************{idx=} {mol.formula=}******************\")\n", + " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", + " spec = unique_species[mol.unique_index] # This is the reference specie\n", + " if debug >= 2: print(f\"PREPARE: Doing molecule {idx} with unique_index: {mol.unique_index}\")\n", + " if debug >= 2: print(f\"PREPARE: Specie with poscharges: {spec.possible_cs}\")\n", + " count += 1\n", + " \n", + " indices = [index for index, value in enumerate(unique_indices) if value == mol.unique_index]\n", + " target_charge = [final_charge_distribution[i] for i in indices][0]\n", + " print(indices, target_charge)\n", + " \n", + " for cs in spec.possible_cs:\n", + " print(f\"{cs.corr_total_charge=}\")\n", + " if cs.corr_total_charge == target_charge:\n", + " ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", + " print(ref_data==target_data)\n", + " if debug >= 2: print(f\"PREPARE: reordering with data: \\n{ref_data=}\\n{target_data=}\")\n", + " dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", + " if debug >= 2: print(f\"PREPARE: reordering with {dummy1}\")\n", + " if debug >= 2: print(f\"PREPARE: reordering with {dummy2}\")\n", + " if debug >= 2: print(f\"PREPARE: reordering protonation with {map12}\")\n", + " prot = cs.protonation.reorder(map12, debug=debug)\n", + " if debug >= 2: print(f\"PREPARE: reordered protonation: \\n{prot}\") \n", + " new_cs = get_charge(target_charge, prot, allow=cs.allow, debug=debug)\n", + " \n", + " if new_cs.corr_total_charge == target_charge:\n", + " print(mol.labels)\n", + " mol.set_charges(new_cs.corr_total_charge, new_cs.corr_atom_charges, new_cs.smiles, new_cs.rdkit_obj)\n", + " for r, (atom, atom_rd) in enumerate(zip(mol.atoms, new_cs.rdkit_obj.GetAtoms())):\n", + " print(r, atom.label, atom_rd.GetSymbol(), atom.label==atom_rd.GetSymbol())\n", + " print(\"*\",mol.rdkit_obj.GetAtomWithIdx(r).GetSymbol(), new_cs.rdkit_obj.GetAtomWithIdx(r).GetSymbol(),\n", + " mol.rdkit_obj.GetAtomWithIdx(r).GetSymbol()== new_cs.rdkit_obj.GetAtomWithIdx(r).GetSymbol() )\n", + " print()\n", + " display(mol.rdkit_obj)\n", + " display(new_cs.rdkit_obj)\n", + " \n", + " \n", + " \n", + " elif mol.iscomplex :\n", + " for jdx, lig in enumerate(mol.ligands):\n", + " print(idx, jdx, lig.formula, lig.unique_index)\n", + " count += 1\n", + " for jdx, met in enumerate(mol.metals):\n", + " print(idx, jdx, met.label, met.unique_index)\n", + " count += 1\n" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "1bf6df20", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=0 mol.formula='Cl6-Fe2'******************\n", + "0 0 Cl 0\n", + "0 1 Cl 0\n", + "0 2 Cl 0\n", + "0 3 Cl 0\n", + "0 4 Cl 0\n", + "0 5 Cl 0\n", + "0 0 Fe 1\n", + "0 1 Fe 1\n", + "******************idx=1 mol.formula='H10-C4-O'******************\n", + "PREPARE: Doing molecule 1 with unique_index: 2\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[8, 14] 0\n", + "cs.corr_total_charge=0\n", + "True\n", + "PREPARE: reordering with data: \n", + "ref_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([ 9.3494897, 12.1903552, 15.2429643]), array([ 9.2503785, 11.6566577, 14.4151283]), array([10.314404 , 12.2675314, 15.4508048]), array([ 8.6286451, 11.513658 , 16.3827914]), array([ 8.7108809, 12.0604495, 17.1918845]), array([ 7.6814864, 11.4090764, 16.1540636]), array([ 8.7846918, 13.4878907, 15.0579171]), array([ 9.471571 , 14.2364155, 14.0572327]), array([10.4126702, 14.3786323, 14.3292759]), array([ 9.4670343, 13.7384022, 13.2015364]), array([ 8.7835726, 15.5620242, 13.8813982]), array([ 8.7874632, 16.0474661, 14.7327264]), array([ 9.2565273, 16.0881119, 13.2032201]), array([ 7.8584453, 15.4143785, 13.5937888]), array([ 9.0254048, 10.6319347, 16.5426468])]\n", + "PREPARE: reordering protonation with [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]\n", + "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'O', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. received map: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'O', 'H', 'H', 'H', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", + "0 14 H 0 1 1 1 0 True\n", + "['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + "0 C C True\n", + "* C C True\n", + "\n", + "1 H H True\n", + "* H H True\n", + "\n", + "2 H H True\n", + "* H H True\n", + "\n", + "3 C H False\n", + "* H H True\n", + "\n", + "4 H C False\n", + "* C C True\n", + "\n", + "5 H H True\n", + "* H H True\n", + "\n", + "6 O H False\n", + "* H H True\n", + "\n", + "7 C C True\n", + "* C C True\n", + "\n", + "8 H H True\n", + "* H H True\n", + "\n", + "9 H C False\n", + "* C C True\n", + "\n", + "10 C O False\n", + "* O O True\n", + "\n", + "11 H H True\n", + "* H H True\n", + "\n", + "12 H H True\n", + "* H H True\n", + "\n", + "13 H H True\n", + "* H H True\n", + "\n", + "14 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=2 mol.formula='H2-O-Cl3-Fe'******************\n", + "2 0 H2-O 3\n", + "2 1 Cl 0\n", + "2 2 Cl 0\n", + "2 3 Cl 0\n", + "2 0 Fe 4\n", + "******************idx=3 mol.formula='H10-C4-O'******************\n", + "PREPARE: Doing molecule 3 with unique_index: 2\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[8, 14] 0\n", + "cs.corr_total_charge=0\n", + "False\n", + "PREPARE: reordering with data: \n", + "ref_data=['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([11.3862448, 0.9466867, 1.8266461]), array([12.0703526, -0.864364 , 1.1511523]), array([12.9993706, -0.2312764, 2.29009 ]), array([12.0742433, -0.378922 , 2.0024806]), array([11.3907815, 1.4446999, 2.6823424]), array([10.4451456, 0.8044698, 1.5546029]), array([12.073124 , 1.6952115, 0.8259617]), array([11.5083262, 2.992747 , 0.6409145]), array([13.1763294, 3.7740258, -0.2701848]), array([12.146935 , 3.1226527, -1.3080057]), array([12.2291708, 3.6694442, -0.4989126]), array([11.6074373, 3.5264445, 1.4687505]), array([11.8324111, 4.5511675, -0.658768 ]), array([10.5434119, 2.9155708, 0.433074 ]), array([11.6012886, -0.9050097, 2.6806587])]\n", + "PREPARE: reordering protonation with [ 7 11 13 10 9 8 3 0 6 5 4 1 14 2 12]\n", + "PROTONATION.REORDER. labels: ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'O', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. received map: [ 7 11 13 10 9 8 3 0 6 5 4 1 14 2 12]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", + "0 14 H 0 1 1 1 0 True\n", + "['C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", + "0 C C True\n", + "* C C True\n", + "\n", + "1 H H True\n", + "* H H True\n", + "\n", + "2 H H True\n", + "* H H True\n", + "\n", + "3 O O True\n", + "* O O True\n", + "\n", + "4 C C True\n", + "* C C True\n", + "\n", + "5 H H True\n", + "* H H True\n", + "\n", + "6 H H True\n", + "* H H True\n", + "\n", + "7 C C True\n", + "* C C True\n", + "\n", + "8 H H True\n", + "* H H True\n", + "\n", + "9 H H True\n", + "* H H True\n", + "\n", + "10 C C True\n", + "* C C True\n", + "\n", + "11 H H True\n", + "* H H True\n", + "\n", + "12 H H True\n", + "* H H True\n", + "\n", + "13 H H True\n", + "* H H True\n", + "\n", + "14 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=4 mol.formula='H2-O-Cl3-Fe'******************\n", + "4 0 H2-O 3\n", + "4 1 Cl 0\n", + "4 2 Cl 0\n", + "4 3 Cl 0\n", + "4 0 Fe 4\n", + "******************idx=5 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 5 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[20, 21, 22, 23] 1\n", + "cs.corr_total_charge=1\n", + "True\n", + "PREPARE: reordering with data: \n", + "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([4.9621174, 4.887537 , 5.5174241]), array([7.446192 , 5.1831638, 4.9629179]), array([7.7980526, 4.4848237, 5.5700315]), array([7.3825766, 6.0292661, 5.4728857]), array([5.3205863, 4.1031323, 6.7652617]), array([6.1425014, 4.4939143, 7.1551156]), array([4.5936461, 4.2189016, 7.4272541]), array([5.5471833, 2.6222711, 6.5581359]), array([6.2077828, 2.4852999, 5.8335769]), array([4.6983522, 2.190974 , 6.2868233]), array([6.057791 , 1.9826907, 7.8434593]), array([6.9391501, 2.3707361, 8.0733785]), array([5.431816 , 2.189434 , 8.5820279]), array([3.7022164, 4.3387205, 4.8561783]), array([3.4349677, 4.9618726, 4.1348754]), array([3.9279863, 3.47383 , 4.4306174]), array([4.7422056, 6.3247204, 5.9588371]), array([5.4589056, 6.5656443, 6.5977344]), array([4.7174606, 7.3703135, 4.8550664]), array([4.1561668, 7.0530765, 4.1037748]), array([5.6347919, 7.5218327, 4.5148655]), array([6.0618142, 4.7800359, 4.475124 ]), array([5.821105 , 5.3510029, 3.7030087]), array([6.1009802, 3.8444751, 4.1536978]), array([8.4029106, 5.3669283, 3.7930703]), array([8.0834706, 6.1239713, 3.2408513]), array([9.2930954, 5.6125316, 4.1497904]), array([8.5582499, 4.1598483, 2.9070675]), array([9.2762403, 4.3201036, 2.2596406]), array([7.7185373, 3.9948779, 2.4295346]), array([8.7811323, 3.3787333, 3.4553631]), array([6.1935533, 0.4757138, 7.7087641]), array([6.8234881, 0.2677101, 6.9874295]), array([5.3187317, 0.0862111, 7.5010665]), array([6.5263333, 0.1012263, 8.5510861]), array([4.1489323, 8.6746576, 5.4130671]), array([3.1850923, 8.5523697, 5.6035306]), array([4.6023802, 8.8863394, 6.2671909]), array([4.3209594, 9.8367515, 4.4597166]), array([3.8962041, 9.6226212, 3.6031785]), array([ 3.9031592, 10.6368824, 4.841025 ]), array([2.501525 , 4.121721 , 5.7660068]), array([2.2683222, 4.9687278, 6.2223666]), array([2.7208457, 3.447188 , 6.4566855]), array([1.3217582, 3.6424323, 4.9319444]), array([1.004624 , 4.3858764, 4.3603789]), array([1.6204577, 2.9086724, 4.3382209]), array([0.1732351, 3.1506209, 5.7917387]), array([-0.5540774, 2.834949 , 5.2158846]), array([-0.1508494, 3.8844927, 6.3547269]), array([0.4825944, 2.4148768, 6.3604133]), array([3.8826125, 6.3703461, 6.4479176]), array([ 5.2765576, 10.003726 , 4.3176354])]\n", + "PREPARE: reordering protonation with [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n", + " 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n", + " 48 49 50 51 52]\n", + "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. received map: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n", + " 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n", + " 48 49 50 51 52]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['N', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", + "1 52 H 0 1 1 1 0 True\n", + "['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "0 N N True\n", + "* N N True\n", + "\n", + "1 C C True\n", + "* C C True\n", + "\n", + "2 H H True\n", + "* H H True\n", + "\n", + "3 H H True\n", + "* H H True\n", + "\n", + "4 C C True\n", + "* C C True\n", + "\n", + "5 H C False\n", + "* C C True\n", + "\n", + "6 H H True\n", + "* H H True\n", + "\n", + "7 C C True\n", + "* C C True\n", + "\n", + "8 H H True\n", + "* H H True\n", + "\n", + "9 H C False\n", + "* C C True\n", + "\n", + "10 C H False\n", + "* H H True\n", + "\n", + "11 H H True\n", + "* H H True\n", + "\n", + "12 H H True\n", + "* H H True\n", + "\n", + "13 C H False\n", + "* H H True\n", + "\n", + "14 H H True\n", + "* H H True\n", + "\n", + "15 H H True\n", + "* H H True\n", + "\n", + "16 C C True\n", + "* C C True\n", + "\n", + "17 H H True\n", + "* H H True\n", + "\n", + "18 C H False\n", + "* H H True\n", + "\n", + "19 H H True\n", + "* H H True\n", + "\n", + "20 H H True\n", + "* H H True\n", + "\n", + "21 C C True\n", + "* C C True\n", + "\n", + "22 H H True\n", + "* H H True\n", + "\n", + "23 H C False\n", + "* C C True\n", + "\n", + "24 C C True\n", + "* C C True\n", + "\n", + "25 H H True\n", + "* H H True\n", + "\n", + "26 H H True\n", + "* H H True\n", + "\n", + "27 C C True\n", + "* C C True\n", + "\n", + "28 H C False\n", + "* C C True\n", + "\n", + "29 H H True\n", + "* H H True\n", + "\n", + "30 H H True\n", + "* H H True\n", + "\n", + "31 C H False\n", + "* H H True\n", + "\n", + "32 H H True\n", + "* H H True\n", + "\n", + "33 H H True\n", + "* H H True\n", + "\n", + "34 H H True\n", + "* H H True\n", + "\n", + "35 C H False\n", + "* H H True\n", + "\n", + "36 H C False\n", + "* C C True\n", + "\n", + "37 H H True\n", + "* H H True\n", + "\n", + "38 C C True\n", + "* C C True\n", + "\n", + "39 H H True\n", + "* H H True\n", + "\n", + "40 H C False\n", + "* C C True\n", + "\n", + "41 C C True\n", + "* C C True\n", + "\n", + "42 H H True\n", + "* H H True\n", + "\n", + "43 H H True\n", + "* H H True\n", + "\n", + "44 C C True\n", + "* C C True\n", + "\n", + "45 H H True\n", + "* H H True\n", + "\n", + "46 H H True\n", + "* H H True\n", + "\n", + "47 C H False\n", + "* H H True\n", + "\n", + "48 H H True\n", + "* H H True\n", + "\n", + "49 H H True\n", + "* H H True\n", + "\n", + "50 H H True\n", + "* H H True\n", + "\n", + "51 H H True\n", + "* H H True\n", + "\n", + "52 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=6 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 6 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[20, 21, 22, 23] 1\n", + "cs.corr_total_charge=1\n", + "False\n", + "PREPARE: reordering with data: \n", + "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([10.0428971, 10.5229266, 3.4523611]), array([11.8733989, 12.2257773, 4.0834276]), array([12.3589362, 11.4822276, 4.5210125]), array([14.1921027, 13.2701784, 5.0182256]), array([ 9.2878696, 10.8380621, 4.7368903]), array([ 9.9484661, 10.9871945, 5.4590032]), array([ 8.7499872, 10.0449656, 4.9857113]), array([10.8496662, 9.2774969, 3.7581257]), array([10.2243057, 8.561043 , 4.0332345]), array([8.7778871, 8.247786 , 2.3477802]), array([11.7099487, 8.7509024, 2.6200458]), array([11.4384746, 9.4697312, 4.5304793]), array([ 8.6083835, 12.4769568, 6.6898609]), array([ 9.0950741, 10.2957077, 2.28982 ]), array([ 8.5075189, 11.0887502, 2.2120207]), array([7.8023242, 9.1628057, 0.3292887]), array([ 8.3680694, 12.0388317, 4.6754197]), array([11.3500672, 12.7030406, 4.7750275]), array([ 7.8446269, 12.3841443, 6.0668475]), array([ 9.6323575, 10.2446887, 1.4598555]), array([10.3649155, 12.4140361, 2.7063906]), array([10.9407695, 11.6750669, 3.0261966]), array([11.4876705, 11.3732003, 2.2581316]), array([11.193046 , 8.7700827, 1.7758335]), array([12.8714532, 13.1846309, 3.4390186]), array([13.4673836, 12.6741091, 2.8354312]), array([14.3603219, 14.4935384, 4.0003072]), array([13.0363529, 6.7607148, 1.8171157]), array([12.5610689, 6.8045682, 0.9612129]), array([12.5048515, 9.3303049, 2.5081121]), array([13.8620919, 7.2853566, 1.759489 ]), array([12.1535844, 7.3255982, 2.9158036]), array([13.2556564, 5.8277528, 2.0215889]), array([11.3539741, 6.7508332, 3.0181117]), array([12.6502934, 7.3107043, 3.7719447]), array([ 7.0420666, 13.6758184, 6.0600174]), array([ 6.2671024, 13.5758343, 5.46874 ]), array([ 6.7357016, 13.8748155, 6.9694171]), array([13.7137002, 13.9195235, 4.4616227]), array([12.3782166, 13.8451074, 2.8908977]), array([ 7.6064926, 14.409338 , 5.7377176]), array([8.2163096, 9.0630001, 2.3590737]), array([ 7.6063365, 11.8420287, 4.0744849]), array([7.6932824, 9.0687737, 3.1995691]), array([7.2709234, 9.0599274, 1.1582524]), array([6.661789 , 9.8374274, 1.225473 ]), array([7.0394425, 7.0132897, 1.0105641]), array([6.4427657, 7.7890359, 1.0608843]), array([5.8839448, 7.8240643, 0.2565564]), array([ 7.2723315, 11.6453853, 6.3936265]), array([5.8707793, 7.7103788, 1.8527909]), array([ 8.8598535, 12.813978 , 4.3048171]), array([13.1334677, 14.4702878, 5.0275971])]\n", + "PREPARE: reordering protonation with [ 0 41 43 48 1 2 3 25 27 16 28 26 8 12 14 19 4 42 7 13 39 38 40 29\n", + " 44 46 50 34 36 30 37 31 35 32 33 10 51 52 47 45 11 15 6 17 18 20 24 21\n", + " 23 9 22 5 49]\n", + "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. received map: [ 0 41 43 48 1 2 3 25 27 16 28 26 8 12 14 19 4 42 7 13 39 38 40 29\n", + " 44 46 50 34 36 30 37 31 35 32 33 10 51 52 47 45 11 15 6 17 18 20 24 21\n", + " 23 9 22 5 49]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", + "1 52 H 0 1 1 1 0 True\n", + "['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "0 N N True\n", + "* N N True\n", + "\n", + "1 C C True\n", + "* C C True\n", + "\n", + "2 H H True\n", + "* H H True\n", + "\n", + "3 H H True\n", + "* H H True\n", + "\n", + "4 C C True\n", + "* C C True\n", + "\n", + "5 H H True\n", + "* H H True\n", + "\n", + "6 H H True\n", + "* H H True\n", + "\n", + "7 C H False\n", + "* H H True\n", + "\n", + "8 H C False\n", + "* C C True\n", + "\n", + "9 H C False\n", + "* C C True\n", + "\n", + "10 C C True\n", + "* C C True\n", + "\n", + "11 H H True\n", + "* H H True\n", + "\n", + "12 C H False\n", + "* H H True\n", + "\n", + "13 H H True\n", + "* H H True\n", + "\n", + "14 H H True\n", + "* H H True\n", + "\n", + "15 C H False\n", + "* H H True\n", + "\n", + "16 H C False\n", + "* C C True\n", + "\n", + "17 H H True\n", + "* H H True\n", + "\n", + "18 C C True\n", + "* C C True\n", + "\n", + "19 H H True\n", + "* H H True\n", + "\n", + "20 H H True\n", + "* H H True\n", + "\n", + "21 C C True\n", + "* C C True\n", + "\n", + "22 H C False\n", + "* C C True\n", + "\n", + "23 H H True\n", + "* H H True\n", + "\n", + "24 H C False\n", + "* C C True\n", + "\n", + "25 C H False\n", + "* H H True\n", + "\n", + "26 H H True\n", + "* H H True\n", + "\n", + "27 H H True\n", + "* H H True\n", + "\n", + "28 C C True\n", + "* C C True\n", + "\n", + "29 H H True\n", + "* H H True\n", + "\n", + "30 H H True\n", + "* H H True\n", + "\n", + "31 C H False\n", + "* H H True\n", + "\n", + "32 H H True\n", + "* H H True\n", + "\n", + "33 H H True\n", + "* H H True\n", + "\n", + "34 C H False\n", + "* H H True\n", + "\n", + "35 H H True\n", + "* H H True\n", + "\n", + "36 H H True\n", + "* H H True\n", + "\n", + "37 H H True\n", + "* H H True\n", + "\n", + "38 C H False\n", + "* H H True\n", + "\n", + "39 H H True\n", + "* H H True\n", + "\n", + "40 H H True\n", + "* H H True\n", + "\n", + "41 C H False\n", + "* H H True\n", + "\n", + "42 H H True\n", + "* H H True\n", + "\n", + "43 H H True\n", + "* H H True\n", + "\n", + "44 C H False\n", + "* H H True\n", + "\n", + "45 H H True\n", + "* H H True\n", + "\n", + "46 H C False\n", + "* C C True\n", + "\n", + "47 C C True\n", + "* C C True\n", + "\n", + "48 H C False\n", + "* C C True\n", + "\n", + "49 H C False\n", + "* C C True\n", + "\n", + "50 H H True\n", + "* H H True\n", + "\n", + "51 H C False\n", + "* C C True\n", + "\n", + "52 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=7 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 7 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[20, 21, 22, 23] 1\n", + "cs.corr_total_charge=1\n", + "True\n", + "PREPARE: reordering with data: \n", + "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([15.8956985, 10.2955651, 10.3664547]), array([18.3562909, 11.0613812, 10.1178719]), array([19.8531919, 10.7972258, 11.5234999]), array([19.2373581, 12.2744298, 11.5456579]), array([17.1555994, 10.8443817, 11.0277005]), array([17.4228482, 10.2212295, 11.7490033]), array([15.0367109, 9.8320992, 12.1808701]), array([16.1403552, 7.8127887, 11.0288124]), array([16.2554357, 6.2967627, 9.6166879]), array([15.2230239, 7.6612695, 11.3690133]), array([16.7088835, 6.5084445, 10.4708117]), array([17.6727235, 6.6307324, 10.2803481]), array([16.701649 , 8.1300257, 11.780104 ]), array([15.5372296, 11.0799698, 9.1186171]), array([14.7153144, 10.6891879, 8.7287632]), array([15.3989102, 8.6174578, 9.2861444]), array([14.7960017, 10.4030663, 11.4087548]), array([16.9298296, 11.7092722, 11.4532614]), array([15.3106326, 12.5608311, 9.3257429]), array([15.4259999, 12.9936682, 7.3018508]), array([16.1594636, 12.9921282, 9.5970554]), array([16.1156103, 8.8583817, 9.9250417]), array([16.2641697, 10.9642006, 8.4566247]), array([16.9752033, 8.8127561, 9.4359611]), array([19.5360577, 11.5406699, 10.9519344]), array([20.3752215, 12.7682254, 9.5234654]), array([21.4118933, 12.3481531, 10.6679942]), array([20.6845807, 12.0324812, 10.0921401]), array([21.0086653, 11.2986095, 9.5291519]), array([18.1369702, 11.7359142, 9.4271932]), array([18.5894937, 10.2143743, 9.6615122]), array([16.5368564, 5.3463507, 11.4241621]), array([16.9546566, 4.5462197, 11.0428537]), array([15.5812583, 5.1793761, 11.5662434]), array([16.9616118, 5.560481 , 12.2807003]), array([14.8000248, 13.2004114, 8.0404194]), array([13.9186658, 12.8123661, 7.8105003]), array([14.650033 , 12.6978022, 10.0503019]), array([14.6642625, 14.7073883, 8.1751147]), array([14.3314826, 15.0818759, 7.3327926]), array([14.0343277, 14.915392 , 8.8964493]), array([13.4116238, 9.9999384, 10.9209609]), array([12.0766836, 11.8043689, 12.4285157]), array([13.1392786, 11.1882242, 13.4543442]), array([12.4549053, 9.8161739, 12.0908085]), array([13.0597633, 10.6982785, 10.3138472]), array([13.4752392, 9.1538361, 10.410993 ]), array([12.299566 , 11.0232539, 12.9768113]), array([11.5647205, 9.5705705, 11.7340884]), array([11.5815756, 10.8629985, 13.6242382]), array([12.7743452, 9.0591309, 12.6430275]), array([14.7568356, 11.3386271, 11.7301809]), array([15.5390842, 15.096891 , 8.3828123])]\n", + "PREPARE: reordering protonation with [ 0 41 45 46 13 14 22 18 37 20 35 36 19 4 5 17 21 15 7 12 9 16 6 51\n", + " 44 50 48 47 49 43 42 38 40 52 39 10 11 8 31 34 32 1 30 29 24 2 3 27\n", + " 26 28 25 23 33]\n", + "PROTONATION.REORDER. labels: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'H']\n", + "PROTONATION.REORDER. received map: [ 0 41 45 46 13 14 22 18 37 20 35 36 19 4 5 17 21 15 7 12 9 16 6 51\n", + " 44 50 48 47 49 43 42 38 40 52 39 10 11 8 31 34 32 1 30 29 24 2 3 27\n", + " 26 28 25 23 33]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['N', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", + "1 52 H 0 1 1 1 0 True\n", + "['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "0 N N True\n", + "* N N True\n", + "\n", + "1 C H False\n", + "* H H True\n", + "\n", + "2 H H True\n", + "* H H True\n", + "\n", + "3 H C False\n", + "* C C True\n", + "\n", + "4 C H False\n", + "* H H True\n", + "\n", + "5 H H True\n", + "* H H True\n", + "\n", + "6 H C False\n", + "* C C True\n", + "\n", + "7 C C True\n", + "* C C True\n", + "\n", + "8 H H True\n", + "* H H True\n", + "\n", + "9 H H True\n", + "* H H True\n", + "\n", + "10 C H False\n", + "* H H True\n", + "\n", + "11 H H True\n", + "* H H True\n", + "\n", + "12 H H True\n", + "* H H True\n", + "\n", + "13 C C True\n", + "* C C True\n", + "\n", + "14 H H True\n", + "* H H True\n", + "\n", + "15 H H True\n", + "* H H True\n", + "\n", + "16 C C True\n", + "* C C True\n", + "\n", + "17 H H True\n", + "* H H True\n", + "\n", + "18 C H False\n", + "* H H True\n", + "\n", + "19 H H True\n", + "* H H True\n", + "\n", + "20 H C False\n", + "* C C True\n", + "\n", + "21 C C True\n", + "* C C True\n", + "\n", + "22 H H True\n", + "* H H True\n", + "\n", + "23 H C False\n", + "* C C True\n", + "\n", + "24 C H False\n", + "* H H True\n", + "\n", + "25 H H True\n", + "* H H True\n", + "\n", + "26 H C False\n", + "* C C True\n", + "\n", + "27 C C True\n", + "* C C True\n", + "\n", + "28 H C False\n", + "* C C True\n", + "\n", + "29 H H True\n", + "* H H True\n", + "\n", + "30 H H True\n", + "* H H True\n", + "\n", + "31 C H False\n", + "* H H True\n", + "\n", + "32 H H True\n", + "* H H True\n", + "\n", + "33 H H True\n", + "* H H True\n", + "\n", + "34 H H True\n", + "* H H True\n", + "\n", + "35 C C True\n", + "* C C True\n", + "\n", + "36 H H True\n", + "* H H True\n", + "\n", + "37 H C False\n", + "* C C True\n", + "\n", + "38 C H False\n", + "* H H True\n", + "\n", + "39 H H True\n", + "* H H True\n", + "\n", + "40 H H True\n", + "* H H True\n", + "\n", + "41 C C True\n", + "* C C True\n", + "\n", + "42 H H True\n", + "* H H True\n", + "\n", + "43 H H True\n", + "* H H True\n", + "\n", + "44 C C True\n", + "* C C True\n", + "\n", + "45 H H True\n", + "* H H True\n", + "\n", + "46 H H True\n", + "* H H True\n", + "\n", + "47 C H False\n", + "* H H True\n", + "\n", + "48 H H True\n", + "* H H True\n", + "\n", + "49 H C False\n", + "* C C True\n", + "\n", + "50 H H True\n", + "* H H True\n", + "\n", + "51 H H True\n", + "* H H True\n", + "\n", + "52 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=8 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 8 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "[20, 21, 22, 23] 1\n", + "cs.corr_total_charge=1\n", + "False\n", + "PREPARE: reordering with data: \n", + "ref_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "target_data=['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with ['N40', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'H10', 'H10', 'H10']\n", + "PREPARE: reordering with [array([10.8149188, 4.6601756, 12.4315177]), array([12.6415063, 6.1201021, 13.5248051]), array([13.2514794, 3.3410734, 11.8093939]), array([13.1645334, 6.1143285, 12.6843097]), array([11.7627418, 4.8873944, 13.5940588]), array([12.350297 , 4.0943519, 13.6718581]), array([11.2254583, 4.9384134, 14.4240233]), array([12.4897464, 3.1442705, 11.2084591]), array([11.9979623, 2.3691241, 11.5790617]), array([10.4929004, 2.7690661, 13.1774882]), array([13.5868925, 6.1231747, 14.7256263]), array([14.1960268, 5.3456747, 14.6584058]), array([13.0554917, 6.0202965, 15.5545901]), array([ 9.9170464, 3.5080353, 12.8576822]), array([ 9.4193412, 5.713371 , 11.3533995]), array([ 9.5077487, 2.4800616, 11.1088513]), array([ 9.1478672, 6.4321998, 13.263833 ]), array([12.0799287, 6.9353161, 13.5360985]), array([10.0081497, 5.9056053, 12.1257531]), array([10.6335102, 6.6220592, 11.8506443]), array([13.8183734, 8.1698125, 14.8733146]), array([11.5699463, 4.3450401, 11.1469885]), array([12.1078287, 5.1381366, 10.8981675]), array([10.9093498, 4.1959076, 10.4248756]), array([14.4150501, 7.3940663, 14.8229945]), array([12.2494324, 2.7061454, 9.1940179]), array([14.9870366, 7.4727233, 14.0310879]), array([13.0131889, 2.7989579, 9.8170313]), array([14.1221143, 1.3082867, 8.9144616]), array([13.5854843, 3.5377169, 9.4902522]), array([14.5907134, 1.6072678, 10.4151387]), array([13.8157492, 1.5072838, 9.8238614]), array([13.2513233, 0.7737641, 10.1461611]), array([ 8.4795992, 1.3379948, 12.9929811]), array([14.973871 , 7.3590379, 15.6273224]), array([ 8.7042314, 7.857504 , 12.9680752]), array([ 6.995724 , 7.8977456, 14.1243898]), array([ 8.296747 , 8.378534 , 14.9226659]), array([ 7.8214629, 8.4223874, 14.0667631]), array([ 8.2075225, 7.8723979, 12.1119341]), array([ 7.6021595, 9.3553493, 13.8622899]), array([ 8.9844169, 2.9573249, 11.8004512]), array([ 8.3529643, 5.8527973, 13.3757667]), array([ 9.3701454, 3.8099018, 13.6257472]), array([ 7.9863626, 1.9984712, 12.4448602]), array([ 8.4988797, 3.7008746, 11.3628663]), array([ 7.7243481, 0.7128143, 10.8562817]), array([ 7.1441157, 1.2635787, 11.4222561]), array([ 6.6657131, 1.9129237, 10.8656532]), array([ 7.3904322, 2.5089931, 13.0484476]), array([ 6.497494 , 0.6895638, 11.8835716]), array([ 9.6647698, 6.4130195, 14.1080453]), array([ 9.5038417, 8.432269 , 12.8657671])]\n", + "PREPARE: reordering protonation with [ 0 15 6 17 12 14 13 4 5 39 18 20 19 38 26 42 28 16 25 27 24 1 3 2\n", + " 21 8 22 7 49 9 51 10 11 45 23 31 37 36 34 33 35 41 30 40 44 43 52 47\n", + " 48 46 50 29 32]\n", + "PROTONATION.REORDER. labels: ['N', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", + "PROTONATION.REORDER. received map: [ 0 15 6 17 12 14 13 4 5 39 18 20 19 38 26 42 28 16 25 27 24 1 3 2\n", + " 21 8 22 7 49 9 51 10 11 45 23 31 37 36 34 33 35 41 30 40 44 43 52 47\n", + " 48 46 50 29 32]\n", + "PREPARE: reordered protonation: \n", + "------------- Cell2mol Protonation ----------------\n", + " Status = True\n", + " Labels = ['N', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "---------------------------------------------------\n", + "\n", + "*****get_charge******\n", + "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", + "1 52 H 0 1 1 1 0 True\n", + "['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", + "0 N N True\n", + "* N N True\n", + "\n", + "1 C H False\n", + "* H H True\n", + "\n", + "2 H C False\n", + "* C C True\n", + "\n", + "3 H H True\n", + "* H H True\n", + "\n", + "4 C H False\n", + "* H H True\n", + "\n", + "5 H H True\n", + "* H H True\n", + "\n", + "6 H C False\n", + "* C C True\n", + "\n", + "7 C H False\n", + "* H H True\n", + "\n", + "8 H H True\n", + "* H H True\n", + "\n", + "9 H H True\n", + "* H H True\n", + "\n", + "10 C H False\n", + "* H H True\n", + "\n", + "11 H C False\n", + "* C C True\n", + "\n", + "12 C H False\n", + "* H H True\n", + "\n", + "13 H H True\n", + "* H H True\n", + "\n", + "14 H C False\n", + "* C C True\n", + "\n", + "15 C H False\n", + "* H H True\n", + "\n", + "16 H C False\n", + "* C C True\n", + "\n", + "17 H C False\n", + "* C C True\n", + "\n", + "18 C H False\n", + "* H H True\n", + "\n", + "19 H C False\n", + "* C C True\n", + "\n", + "20 H H True\n", + "* H H True\n", + "\n", + "21 C H False\n", + "* H H True\n", + "\n", + "22 H C False\n", + "* C C True\n", + "\n", + "23 H H True\n", + "* H H True\n", + "\n", + "24 H C False\n", + "* C C True\n", + "\n", + "25 C H False\n", + "* H H True\n", + "\n", + "26 H H True\n", + "* H H True\n", + "\n", + "27 H C False\n", + "* C C True\n", + "\n", + "28 C C True\n", + "* C C True\n", + "\n", + "29 H H True\n", + "* H H True\n", + "\n", + "30 H H True\n", + "* H H True\n", + "\n", + "31 C H False\n", + "* H H True\n", + "\n", + "32 H H True\n", + "* H H True\n", + "\n", + "33 H H True\n", + "* H H True\n", + "\n", + "34 C C True\n", + "* C C True\n", + "\n", + "35 H H True\n", + "* H H True\n", + "\n", + "36 H C False\n", + "* C C True\n", + "\n", + "37 H H True\n", + "* H H True\n", + "\n", + "38 C H False\n", + "* H H True\n", + "\n", + "39 H H True\n", + "* H H True\n", + "\n", + "40 H C False\n", + "* C C True\n", + "\n", + "41 C C True\n", + "* C C True\n", + "\n", + "42 H H True\n", + "* H H True\n", + "\n", + "43 H H True\n", + "* H H True\n", + "\n", + "44 C C True\n", + "* C C True\n", + "\n", + "45 H H True\n", + "* H H True\n", + "\n", + "46 H H True\n", + "* H H True\n", + "\n", + "47 C H False\n", + "* H H True\n", + "\n", + "48 H H True\n", + "* H H True\n", + "\n", + "49 H H True\n", + "* H H True\n", + "\n", + "50 H H True\n", + "* H H True\n", + "\n", + "51 H H True\n", + "* H H True\n", + "\n", + "52 H H True\n", + "* H H True\n", + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAeTElEQVR4nO3dfVBTd7oH8CcvYGBx7FqILitC68wutcB1xlnp1KqF2BbsWnEdLXe0Or4UXEV776WOcCniCxaY9bYMcmtk6frSncW2dlilxaAJGG1dEGwtCYiK4guCHCIWMSEkJOf+8evNZoWEk3MOEnKez19pNnn4nZ3td0/O+T3PEdE0DQghhNgSj/UCEEJofMMYRQghTjBGEUKIE4xRhBDiBGMUIYQ4wRj1Te3t7YODgwBgMpm6uro4Vuvp6ent7SWv29rauC7OuzkOsLe3t6enh2O1rq4uk8kEAIODg+3t7VwXh7wSxqhv2rlzJ0VRAKDT6Q4cOMCxWnl5uVqtJq83bdrEdXHezXGAarW6vLycY7UDBw7odDoAoChq586dHKsh74QxihBCnEjHegFotGRkZAQGBlIUFRMTw71aSUnJmTNnAMDn+zVomt64cSMAtLW1rVixgnvBgoICuVxuMpn8/f25V0NeCGPUZ+Xn54eGhtbV1Z06dYp7tZSUlGXLlgFAYmIi92reTCQSKZVKAPjqq69++ukn7gW3b98eGxvb0dGxY8cO7tWQF8If9YJQUVFBLpV66vHjx8eOHeN9PePIsWPHHj9+zOKLFEVVVFTwvh7kjWjki4xGo91up2l6cHDwyy+/lEgkUVFRXV1dHhXp6+ubN28eABQXF1ssFseb/C/XmzgO0GKxFBcXA8C8efM8Pequrq6oqCiJRPLll18ODg7SNG23241GI//LRV4AY9T3URQVHR0NAJGRkR0dHQy/ZTQa4+LiACAsLKy1tXVUV+i1bt26FRERAQBz58599OgRw285/xfe2dk5qitE3gBjVBA8TVLMUAdPkxQzVIAwRoWCeZJihj6BeZJihgoTxqiAMElSzNBhMUlSzFDBwhgVFvdJihnqhvskxQwVMoxRwXGVpJihI3KVpJihAocxKkRDk5SXDLVarWazmbz2wn1RjiWZzWar1cquyNAkxQxFGKMC5fwv/40bN3g5D1WpVIWFheR1YmIiTyvljWNJhYWFKpWKdR3nJL158yZmKMJmUIEKCQlRq9UKhUKv18fExBiNxrCwsJqamhkzZoz10rxdeHi4Wq2Oi4v77rvvoqOjjUZjVFSURqORy+VjvTQ0NjBGhUsul3/zzTczZ86USqV+fn6ff/459wz94osvrly5AgDcJ3Xyrqenh8wc0el0HNvbZ8yYceLEiZdeekkqlQYEBJSXl2OGChn21AvX48ePV61aZTQaTSaT1WpNSUlh13fvbMWKFUqlUqlUTp48mZdF8mjy5MlkbdznNlEUtXr1aovFYjKZ+vv7161bx67vHvkGjFGBMplMb7311vnz58PCwsiPU71ev2DBgs7OThbVaJrWaDS8L3JUaTQamtXQv+7u7oULF+r1+sjIyAsXLkRERJw/fz4hIaGvr4/3RaLxYawvzqIxMPS+PLu+e8Jut2/evBkA8vLyDAYDebOtrY33ZXPkWJLBYMjLywOAzZs3kwEuzA29L8+u7x75EoxRwXG1t4ldktrt9i1btgDAhAkTKioqRmfJ/KuqqgoICACAd999l3mSutrbhEkqcBijwuJ+f6inSTpOM5TwNEnd7w/FJBUyjFEBYbLHnnmSjusMJZgnKZM99pikgoUxKhTM+5SYJKkPZCjBJEmZ9ylhkgoTxqggeNrr6T5JfSZDCUeSpqSkDE1ST3s9MUkFCGPU97Hrl3eVpI4M9ff394EMJaqqqmQy2dAkZdcvj0kqNBijvq+srMzTDCWGJqlPZigxNEm5zBxpbW0NCwsDgLKystFZL/IiGKO+adOmTeTf/Pr6+tzcXKVSyW7miHOU3Lt3j5cMvXLlSmZmJnm9dOlS1nUcHEUyMzOvXLnCuo5zknZ1dXGcOdLa2qpUKnNzc+vr62ma7uzs3LRpE+u1IW+GXUy+aWBgwG63A4DNZrNarampqez65ckEk6ioqJaWlpiYmP3798tkshMnTvz+979nvTa73W6xWMhrs9nMuo6Do4jFYiFHzc7rr79eXl4uk8lKSkpmzpyp0+mioqK0Wu3UqVNZVJsxY0ZqaqrVarXZbABgt9sHBgZYrw15MxxN4rMyMjICAwMpioqJieFSRy6XazSamTNn9vf3i0SigwcPJiQkcFybWq0mU0Ju3LjBsRQpQqrV1tauW7eOS6mEhISjR48mJyebzeZnnnnm9OnT3GeOFBQUyOVyk8nk7+/PsRTyUmN9OoxGxfr16+/du0fTdG1tbU5ODpdSdrs9LS0NAMRiMQCweN79E5qamtLT08lrXsaSOoqkp6c3NTVxKUWeL+842LS0NE+7RZ+Qk5NTW1tL0/S9e/fWr1/PpRTyWvijHrlD0/R7771XXFzs7+9/9OhRjhNMAICM0RtVrP+E88yRv/3tbzKZrLi4eOPGjTSrCSZIQMY6x9GoaGxsJM/zePjw4bVr19gVGXpfnssEE5qmy8rKJBLJzp07m5ubyTsXL15ktzZnjiLNzc15eXkSieTw4cOeFhl6X97VLiiPXLt27eHDhzRNm83mxsZGdkWQl8MYRcNztbeJdZKSDAWA3NzcUVjvz/bt2wcAYrHYoyR1tbeJlyRFPg9jFA3D/f5QFkn6dDKU8DRJ3e8PxSRFI8IYRU9i0uvpUZI+zQwlmCcpkz327KbqIeHAGEX/gnm/PMMkffoZSjBJUuZ9SpikyA2MUfRPns4cGTFJxypDCfdJ6mmvJyYpcgVjFP2M3dwmN0k6thlKuEpSdv3ymKRoWBij6GdqtRoAZDKZSqXy6IvDJqk3ZCgxNEm5zBxRqVTkjpNarR6FxaJxCWNU0Pbv3082M3Z1dWVlZX388ceeZijxRJJ6T4YSzknKJUMJlUr18ccfZ2VlkW6uxsbG/fv3871kNJ5gjApaTk5OXV0dzUeroiOeQkNDvSpDCUeSTps2jUuGOjjabevq6ji226LxDkeTCF1BQUFISAj3wRlkFtTs2bMpirLZbFlZWVlZWXwtkrv09PSHDx/u3buXoqhp06ZptVruM0fI8Jfu7m7y/x9IsLCnXui2b9+uVCrz8/O5l1KpVB0dHWQI3okTJyiK4l6TLxRFnThxAgAsFktHR4dKpeJeMz8/X6lUbt++nXspNK5hjCJ+HDt2bN26dXa7PTMzk8UEk6tXr3Z0dACA3W7XarWuPqbVaslE0Y6OjqtXrzIs7jxzJCcnx263r1279siRIwy/jtAIxvqqAhpLDQ0NFEXRNG00GrVaLes6T9xTYtEtWlRUVFlZSdO02WxOSkpy9bGkpCQycqWysrKoqIhJ5aH3lNj13T9Bq9UajUZSv6GhgXUd5APw2qigzZ49m7wIDAycP38+uyLHjh1btWqVzWbLzc0l10NDQkI0Go1CodDpdPHx8dXV1b/61a9GrHP//v2bN286BuO70tbW5u/vf//+fSZr6+7uJsuIjIysqakhc+zT09MB4P333yczntesWcOk1BMc/3WFhISEhISwqIB8BsYo4mRohhIskvTbb7/t7u4mj9xwo7y8XCKRXL16ddasWe4/OWyGErwkKUI/G+vTYTSOjbg/lPmve95/1DPZH8rLr3uE8BYTYsnVeagzck4aHR3d0tISHx/v6o6TxWKZOHEi6bMUiUTBwcGu/mhwcLBIJAKAgICAiRMnuroC4OY81Fl6evq+ffvsdvu6devwjhNib6xzHI1LHvUpuT8n/eGHH6ZPn37mzBlP16DVaiMiIobOz/e0TwnPSRFHGKPIYyx6PV0lqcFgCA8PB4C0tDRPl0EetBceHm4wGIb9Q8z7lDBJERcYo8gzzc3NJEPz8vI8+uLQJLXZbImJiQAQGxtLrnh6xGKxvPLKKwCgUCgGBwdpbjNH8vLyAEAikTieE4UQQyIan3qIRnLq1KmgoKB58+YBQGZmZkhIiNVqZdG943zJsrq6+pNPPsnNzZXL5ZcuXSKt7p7q7OycPXt2Z2dndnb2li1bmFwPdaOgoMDPz6+7u5tE6vnz5x8/fkyCHiF3xjrH0ThQWlp6/Phx8johIYFLKccJ47Rp08RisUQiOX36NJeC1dXVUqlUJBKRiwPcZ444DvD48eOlpaVcSiGBwH2jiJHPP/+8sbERAGhuP1/IBJM5c+bcuXOHpuns7OzXXnuNS8G4uLjMzMw9e/bcuXMnPDyc+8wRmqZzcnIA4MqVK2+88QaXUkggcMMTYiQhIWHTpk2bNm0i+41Ys9vt+/fvJxkKAOXl5RwnmFAUVV5eDgA0Td+5c2f//v2k6Z41kUhEjjQhIYFLHSQcGKOIkUmTJk2ZMmXKlClcijx48GDRokW5ublisXjbtm0sJpg8wXnmyO7du6VSaW5u7sKFCzlGMznSSZMmcSmCBGRMLymg8aGhoaGpqYm8PnLkCLsi33///XPPPQcAwcHB5Hooiwkmzobel9dqteTOUlhYWG1tLbt1Og6wqakJZ44gJjBG0dNw5MgR0qQ0e/bstrY2x/usk9TV3qY7d+7ExsYCgEwmO3bsGI+HgJAr+KMeja6BgYHU1NQ1a9b09/enpKRcuHAhIiLC8Z+SO05RUVEtLS0bN2Yz/C1OUbBu3Z3bt+9ERUU5zkCJsLCwb7/9lmzGam9v//Of/0zef/PNN3k8KIScYYyiUXT37t0FCxaUlJTIZLLS0tKDBw8OfVSJXC7XaDRvvbVeoylUKGDEJKUoUCjg669nz5+v0Wg0Q+/LS6XS/Pz8pqam559/nv7/fQU07o9Gowa336PRUlNTk5ycTFHU9OnTjx8//rvf/c7Nh7u7QaEAnQ4iI6G6GlwN1XP+WE0NuN9iX15eXlhY+MILLwBAc3PzuXPn2B8MQq7h2SjiH03TBQUFr732GkVRixYtunz5svsMBYCQENBoIDoaWlogPh6GvXXvUYYSK1euVCqVSqUyKCiI1aEgNDKMUcSPCxcukBe3b9/esWNHRkYGTdO7du2qqKj45S9/yaSC+yRlkaEIPR34ox7xY9GiRZWVlQBw6NAhqVRaUlKSlZXFYgc7ufSp10NMDDQ0gJ/fz+/fuAGvvgrPPAMaDTBsUzIYDFarlUzdb2xsjImJ8XQxCDGBZ6OIHzRNd3V1dXV1PXr0SCaTnT9/nl0XkFwO1dXwb/8G6enwn/8JJhMAwP/+L8yYAbm5HmQoAAQHBzueXIIZikYP9tQjfgwMDHzyyScAcPny5VWrVnEpFRICDQ0glcKePTBxIuTlQVUVJCSAVguTJkFSEk8rRognGKOIHy0tLdXV1QCQmppaX1+/fPlyLtWkUgCA6Gh48AD0egCAGTPg3/8duI0xQWhUYIwir5abC6mpQC7gY4Yi74Qxivjxm9/85o9//CMAXL9+nbzgYnDw5xNSuRxefx3++7//5U2EvAr+rxLxIzAw8MCBAwBw6NAhjqW6u+G11+C//uvn08/UVGhrg88/h9xcOH3a5c58hMYK3qlH/DObzS+//PLf//53Ft+lKIiPhx9/hP/5H9iwAQBALIa9e+HDD0Gvh9dfH7lb1MFgMDhG8JGZ0wiNBoxRxI8PPviAvIiPj7927do//vGPZcuW7d6926Mhyt3dsHAh6PUQGQlVVf/cNOrnB2o1REeDXg8LFgzf4zTU+fPnKyoqyOuMjAzmy0DIIxijiB8vv/wyeREeHr579+78/HyRSJSTk7N48eKenh4mFdz3KTHpFh3KZrNZLBaLxeLZwSDkCexiQqOF9WgSN72eDCeYEOXl5cXFxS+++CIA/Pjjj1qtlv3BIOQano2i0RIXF9fQ0BAbG3vnzp358+eXlpa6+iRFURs2bLh583FUFGi17vrlQ0JArYaoKLh79/HGjRvcPCzk5s2bAPD2228XFRUVFRX94he/4HY0CLmEMYpGUVhYmFar3bp1q9lsfvfdd1evXt3f3//EZyiKUigUJ09+qlD8B5NeT7kcNBpQKP7j5MlPFQrF0CQdGBh47733XnzxxZs3bzoewMfxSXwIuTN2g/eRgBw5ciQwMBDcPkTEo+fLu3r6CD5EBD19GKNoZE/hkXYeZSgxNEnPnj2Lj7RDTx/GKBpZaWnp8ePHyeuEhATWdQwGAxn7JJFIyAOWWWco4Zyku3fv9vPzA4C4uLiuri7Wi3Qc4PHjx0tLS1nXQcKBXUyIkcuXL3O/S/Pss89+8803OTk5e/fu/dOf/gQAUVFRwz5PiSHyRDyFQqHX63fs2CESiT744INdu3aJxZwu+qtUKgC4fPmy89P3EHIFbzEhRiwWi9lsNpvNHOuIxeItW7ZMnz6d3PNZunQp6wwl5HL50qVLAUAkEk2fPn3Lli0cMxQAyJHiblPEEMYoYmTOnDlJSUlJnId9dnd3L1y48Pbt27/+9a/FYvGHH354+vRpLgVramry8vJIht6+fXvBggWdDLfmu0aOdM6cORzrIIHAGEUjCw0NdZwzzpo166OPPiooKGBRp7u7W6FQ6HS6yMjI+vr6rKwsm832zjvvtLe3s1tYZ2fnypUrBwcHs7Oz6+vro6OjW1pa4uPj2SVpQUHBRx99NGvWLPKPcrk8NDSU3cKQsIz1xVk0zjQ3N0skEgDIy8vz6ItD78vbbLbExEQAiI2NNZvNnq7EYrHMnTsXABYuXDg4OEi73gXFRF5eHgBIJJLm5mZPV4IEDmMUeaysrEwqlQLAnj17GH7F1d4mg8EQHh4OAGlpaZ4uIy0tDQDCw8MNBsOwf4h5kpL7XWKx+PDhw54uAyGMUcSGR0nqfn/oDz/8MH369DNnzni6Bq1WGxERUV9f7+bPMUlSzFDEEcYoYolhkjLZYz8wMHDo0KGamhryesOGDa6qbdiwYWBggKbpmpqaQ4cOkdfu/6j7JMUMRdzhLSbEUnJy8meffSaVSrOzs3Nzc4f9jPM9pZqamqkuho74+/v39fWRdnuapg0Gg6s/Sn6/A0B/f39fX5+/v/+wHwsJCdFoNCPecdq3b9+2bdvEYvFf/vKXNWvWuD9ehFzB7feIveTkZAB45513srOzwWlyM8EwQx2Ki4tPnDgx4phnsjP07t27pCHKFZKkZAHx8fHV1dW/+texepihiDdjfTqMxr1hf9172i9fVFRUWVlJ07TZbE5KSnL1saSkJHJPv7KysqioaMSyrn7d4295xCP8US9oly5d6u7uBgCTyXTu3Dl2RYb+uvf0PHT0DPvrnpfz0HPnzplMJgDo7u6+dOkSn4tG485Y5zgaSzk5OXV1dTRN37t3b/369VxKOc5JMzIyWMwcaWlpuXfvHk3TNpvt7Nmzrj529uxZm81GFtzS0sKwuPM5Kbn+wP08dP369WTBdXV1OTk5XEqh8Q6vjQrdzZs3AwMDyTkpF8nJyRaLZe3atfn5+eD5zJHf/va35IVYLF6wYIGrjzn+I4/6i5wnmOzZs0csFh86dGj16tXMKwzr6tWrPT09ZMw+EjKMUaG7dOmSwWDo7e3lXiohISE0NJSiKIvFsmTJEo4zR/gll8uXLFmi1+v9/f3lcrn721MMXbhwYdKkSbdv38YnlAgcXhsVuuXLl6elpa1du5ZjHTJzpL29PTg4WCqV7t2719UuqDGxb9++vXv3isViuVze3t7OywSTtWvXpqWlLV++nJcVovELY1TQgoODAwICAEAqlU6dOrWwsLCqqopFHed7SpcuXRpxP+lT5nxP6fvvv+c4waSqqqqwsHDq1KnkWnBAQEBwcDDfS0bjylhfnEXeQq1WA4BMJlOpVB59cdi9TSz67kfJ0L1NXCaYqFQqmUwGAGq1ehQWi8YljFH0M7vdvmXLFgDw9/evqKhg+C03+0O9IUld7Q9ll6RVVVUkQ1NSUux2+yisF41LGKPonzxN0hH32I9tkrrfY+9pkmKGIlcwRtG/YJ6kDPuUxipJmfQpMU9SzFDkBsYoepJzkp48eXLYz3jU6/n0k5R5ryeTJMUMRe5hjKJh2O32rVu3ukpSFs+Xf5pJ6mm/vPskxQxFI8IYRcNzlaQsMpR4OknKbuaIqyTFDEVMYIz6psbGRjIJ6eHDh9euXWNXZGiSss5QgiTprl27HM87unjxIru1OXMUaW5uzs/Pl0gkLPrlhyYpLxl67dq1hw8f0jRtNpsbGxvZFUFeDmPUNzkGZ9TW1nIZnOGcpJ999hmXDCWam5ubmprS09PJPyYmJrJem4OjSHp6elNTE+tn0jknaVlZGS/noTk5ObW1tTQfw1+Q18Keep/V19fX29trNBq5FBGJRIWFhXa7vbi4eM2aNXa73dOZI0944YUXmpubLRYL6eK32WxclkfYbDZSzWKxkD/Bro7zBJOVK1fa7fa0tLSioiKRSMRleUajsbe3t6+vj0sR5M0wRn1WUVFRUFBQZ2fn888/z6WOSCTKzs4uKyvr7+/v7+/ftm0b95kjtbW1H374IQCwfkK9s/b2dlKttrZ248aNXErJ5fIdO3YkJycHBAT4+fllZmZyzFAAOHz4cFVV1ePHjznWQV4LY9RnZWVlhYaG1tXVnTp1iksdiqIUCsWDBw+effZZk8mUmprKfULS/PnzCwoKAECn03GpQ4SHh5Nq77//PsdSKpVq9erVdrtdJpM9ePDgjTfe4HLqTWzevDk2Nrajo2PHjh0cl4e8E44m8U0TJkwQi8UAIJFI/Pz8Dh48eOPGDRZ1yNwmvV4fGRmp0+m2bt1qNpuXLFlSUVHBem1isdjxKDpy/ZEjRxF/f39y1OycPn166dKlZrM5JSWlubk5Ojpar9ezngV148aNgwcP+vn5SSQSABCLxRMmTGC9NuTVxvriLBp1ZWVlABAWFtba2urRF4fel3e/n3RcG3pfnssEk9bW1rCwMAAoKysbnfUiL4Ix6vuMRmNcXBwATJs27fr16wy/5Wpvk3OSMp9g4uVc7W1il6S3bt2KiIgAgLlz5z569Gh0loy8CMaoIHiapO73h/pYkrrfH+ppkmKGChDGqFAwT1Ime+zZTdXzQkz22DNPUsxQYcIYFRAmScq8T8kHkpR5nxKTJMUMFSyMUWFxn6Se9nqO6yT1tNfTfZJihgoZxqjguEpSdv3y4zRJ2fXLu0pSzFCBwxgVoqFJymXmiN1u37x5MwDk5eUZDAbyZltbG+/L5sixJIPBkJeXBwCbN2/2tF9+aJJihiKMUYFyTtK6ujqOM0fsdrtarVapVIWFheQdXmaO8MuxpMLCQpVKpVar2c0ccU7SixcvYoYi7GISqMDAwJMnT86bN6+9vf2VV17R6XRRUVFarXbq1KksqolEIoVCwfsiR5VCoWDXL08mmERFRbW0tMydO/fWrVvz5s1TqVQTJ07kfZFoXMCeeuEKCgr661//OnPmTKlUajKZSkpKuM8c+eKLL65cuQIAPT09fKyRTz09PWRwiU6n49jeLpfLjx49+tJLLwUEBFgslk8//TQoKIinZaLxB89GhYuiqDfffNNoNA4ODlqt1rfffptd372zFStWKJVKpVI5efJkXhbJo8mTJ5O1rVixgmOpGzduLFmyxGKxDA4O9vf3/+EPf6AoipdFovEIY1Sgnpg5EhcXd/fu3VdffbW1tXWsl+btbt++vXDhwrt3786dO1en03GcYIJ8wVhfnEVjYOh9eXZ990+wWq3kySU0Tff19fG2XJ44lmQ2m61WK7siQ+/Lc5lggnwDxqjguNrbxEuS+jZXe5swSQUOY1RY3O8PxSR1w/3+UExSIcMYFRAme+wxSYfFZI89JqlgYYwKBfM+JUzSJzDvU8IkFSaMUUHwtNcTk9TB015PTFIBwhj1fez65TFJabb98pikQoP7Rn2TyWSiaRoAbDabVqttbm72tNfTuVu0qqrKarWS933+QcGOA7RarV9//TWLXk9Ht+j169e/++47m80GADRNm0ym0Vo0GlMYo75p69atZDd4Q0ODXq8vLy9n8aDgoKCgysrKsrIymUx28uRJ8uby5cv5X643cRzgyZMnZTJZWVlZZWWlp72ecrlco9GUl5fr9fqGhgYA6OzsJE9eQb4HY1QQFi9ezK5fPigoKDk5mff1jCPJycns+uXlcvnixYt5Xw/yQjiaxGdlZGQEBgZSFBUTE8O9WklJyZkzZwCAXCvwYTRNkwkmbW1t3LvvAaCgoEAul5tMJn9/f+7VkBfCGPVZ+fn5oaGhdXV1p06d4l4tJSVl2bJlAJCYmMi9mjcTiURKpRIAvvrqq59++ol7we3bt8fGxnZ0dHAcK4W8Fv6oRwghTkQ+/xtNmNrb26dOnUoGifb19U2ZMoVLtZ6eHolEMmnSJABoa2t77rnneFqmN3IcYG9vr81m4zjxr6ura+LEiYGBgYODg/fv3582bRpPy0ReBGMUIYQ4wR/1CCHECcYoQghxgjGKEEKcYIwihBAnGKMIIcTJ/wHb0Tk8MUnmggAAAgt6VFh0cmRraXRQS0wgcmRraXQgMjAyMi4wMy41AAB4nJVSzU/UQBx9LUu7WihdF8uyrQKl4FZWVD5uhCnhYALEuyScOHnYiIlcOBATgjUeSUg8eFMPmHgzHHcn4eTNIwmJifEufwHGmdLp/kIkLJNO5s3r7+O9mTltfv0JMXpxPjQxZ8WcEfO1ZjqB5AqD8vfCqxcNOZ+vP91sjFTNLMPHhIaaDNMMDIu1oLYX1yt+XxF2gc62/2c7y70kqkOZ16vdWY9rtr5stWADZXk1gtAi6AZ0E7oFfQxdAQohusswxFeFMYSihxsebpZgDcK6C+sBekrorcEehh3AnkafC2cAjgdnBE4NJRelO7gVoTyK/hC3fbgB3BlU7qFSR+URKo/hhfAj+BMIHiKcxHgdtfuI6qhPoR8Db/Tzh5aO2cWP+3NiGZebxeo7tvd5mUt8/GMlFjiWeHlriR8eJa30iQ4dcMUHH4pszvvFJD77U4wPj8yUX332Nscb7w2Zm+LyZMIVn9Xh7fgk7/Xp20HKh2s297d75iWOGrstpSGrydvYJPWTXL+Kl74EZqQ+1d9SvNKT+WVEW15T5Wb1GcmNSa/8rJSXJ0tfYhqj8MnO36bSID0qPvOV5n5/+ZsVT7sY8Ri3zzyhZ051cnJu9I446ctI/Ra591yz8pt5iYlO6ovGc6KN3mOTvIGUd/8B/RDr0ULXeiMAAAMlelRYdE1PTCByZGtpdCAyMDIyLjAzLjUAAHicfVdLbhsxDN37FLqAB+JPGi26SOwgKYo4QJv2Dt33/iipiSUKMGh7MeI8iY+PFCWfkn1+Xn/8/ZfGB6+nU0o5+LXW0h/KOZ/ekz2k55fX77d0+Xx6vlsuH79vn7+SUBLUOfpdsU+fH+93C6RbyluGHUuxh/5xD+ny9voN7mhMbwm2XPeGJZ1pgx3aDg5+B1K6JNowZ+SaAhzrgrZOoQqczrp2yaXkB0gxpGy4SyaJliwKzJsQFUIlW2UvzA9wVSniBtRkr/aAQPjI8a7r8YYltxzimhHU95mysM1gLPyIIGRDKgCZKkdLAixBR4IDajiDZuSdVsllo0yUH0L5CEmJsrrPKlbF/JCoqHfLHiO1OI9QFp3OEVVL0YRGQu2GHJKGi1qeRmlGTNXTZVZ7BIRF0kBRRF+c56A60XaQS1OQelw3UURUfJFEKmHxKkURVQ+MfO9LQFE8zeseZYjyuj8CnmQ50vcIUsKOREuPi4B9I+WNWwW1R8mknqGxPaJFZSn5c1DzVDrRWksDey8gtPTwAazL5giyTtbrRk+MgM03xYgl52W7BRlSR76HBGln9K079L7mKEgRs1fzHMjJ4s+2aGNy8TUXhV6XOo6Q+1JJoffmvUdIyQsycC/gCyRqIILL2XEODg+h5TyM8vlyuy63l+M+8/xxu877TP/KvLHYGN3FpI/bvIDYmMcNR+ytVti8TYDOqfPSYMN93g1sCAPd+pjGezBCuuEHHTBven0ZC4IRLI4gGMPqDXwY5hTpBhpewUg27bDu4ATz7SzG1JxPi3FV71jcedctNK97cFh4Yrqe5NbBrig7CbFrqkGSO3cOy0xLOSwygsDOWZWYszpnjZzdyXBYhvcj4yrGwBAclsmHOufdrUx0WMh3aDBJZuKpV4K1WddwwSSZySPjrJLMciLjrJLMSKkdFhne2TirJOxb32EZsxi/LLNQ6bCIb1lgIk0+3Dn7KLh8WYY+3EtYVx4acq9iVWyu0+u4OT7SC1l/Iwrp+wY9xjgrBRnK23b1m9PG9z8q+nz6D9VcZMp8uez8AAABQHpUWHRTTUlMRVMgcmRraXQgMjAyMi4wMy41AAB4nJWSS27DMAxEr9Klg0oCP/pYyLKbrHoBwzfJ4UsnIGmEi8KbhBiNnokZbY/9Z9ke++318++4/X7vy6ULx3D1wkX/13PJrdDagFPmgivONd1zLUSVRzqGSr2KJIedByaxMzCLYvdMMY+TqCAwtDPJ4HJGyHR2uWQsLNChd5FkqsTzjDfJXVDqfN8bbX19kI4PVlkUCvIQOBTAlXrnBOkuN8c6ORkBSmPusoQRZBh9YpITbHx4ZE+ebSbblwsBUHOKYm1XdZggOXQQqjEUalGpwwRlaOLyT9iGM1WwSjQgz0fT0DA0sHNe7zZiGbELr0I9sftYvZNVcY8+q0gOL08FzTrHDnMoMccW/dkZKdTmbFNCkzlUmUOXOZSZP9vMoU613J5/vYftj930uZ4AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "prepare_mols_v2(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", + " selected_cs, final_charge_distribution[0], debug=debug)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e4ec229f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "0e070e5f", + "metadata": {}, + "outputs": [], + "source": [ + "def prepare_mols_test(moleclist: list, unique_indices: list, unique_species: list, \n", + " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", + " # The charge and connectivity of a given specie in the unit cell is only determined for one representative case. i\n", + " # For instance, if four molecules \"A\" are in the unit cell, only one is evaluated in the rest of the code. \n", + " # This function ensures that all other \"A\" molecules in the unit cell end up having the same interpretation (charge and connectivity).\n", + " # In some cases, this might be a difficult job, since the connectivity (i.e. Lewis Structure) often depends on the atom ordering, which might change\n", + " # Thus, an Hungarian ordering is implemented.\n", + " \n", + " Warning = False\n", + " idxtoallocate = 0\n", + " \n", + " for idx, mol in enumerate(moleclist):\n", + " #if hasattr(mol,\"totcharge\") and hasattr(mol,\"rdkit_obj\"): continue \n", + " if debug >= 2: print(f\"******************{idx=} {mol.formula=}******************\")\n", + " ###################################\n", + " ### FOR SOLVENT AND COUNTERIONS ###\n", + " ###################################\n", + " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", + " spec = unique_species[mol.unique_index] # This is the reference specie\n", + " if debug >= 2: print(f\"PREPARE: Doing molecule {idx} with unique_index: {mol.unique_index}\")\n", + " if debug >= 2: print(f\"PREPARE: Specie with poscharges: {spec.possible_cs}\")\n", + " \n", + " allocated = False\n", + " for jdx, cs in enumerate(spec.possible_cs):\n", + " # If the charge in poscharges coincides with the one for this entry in final_distribution\n", + " if final_charge_distribution[idxtoallocate] == cs.corr_total_charge and not allocated: \n", + "\n", + " print(\"***1\")\n", + " ## Reorders the atoms to increase chance of perfectly reproducing the desired charge\n", + " ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", + " print(ref_data==target_data)\n", + " if debug >= 2: print(f\"PREPARE: reordering with data: \\n{ref_data=}\\n{target_data=}\")\n", + " dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", + " if debug >= 2: print(f\"PREPARE: reordering with {dummy1}\")\n", + " if debug >= 2: print(f\"PREPARE: reordering with {dummy2}\")\n", + " if debug >= 2: print(f\"PREPARE: reordering protonation with {map12}\")\n", + " prot = cs.protonation.reorder(map12, debug=debug)\n", + " if debug >= 2: print(f\"PREPARE: reordered protonation: \\n{prot}\")\n", + " ############### \n", + "\n", + " allocated = True \n", + " idxtoallocate += 1\n", + " new_cs = get_charge(cs.corr_total_charge, prot, allow=cs.allow, debug=debug)\n", + " \n", + " if new_cs.corr_total_charge == cs.corr_total_charge:\n", + " for atom, atom_rd in zip(mol.atoms, new_cs.rdkit_obj.GetAtoms()):\n", + " print(atom.label, atom_rd.GetSymbol())\n", + " \n", + " mol.set_charges(new_cs.corr_total_charge, new_cs.corr_atom_charges, new_cs.smiles, new_cs.rdkit_obj)\n", + " \n", + " if debug >= 2: print(f\"PREPARE: Success doing molecule {idx}. Created Charge State with total_charge={new_cs.corr_total_charge}\") \n", + " else:\n", + " if debug >= 2: print(f\"PREPARE: Error doing molecule {idx}. Created Charge State is different than Target {new_cs.corr_total_charge} vs {cs.corr_total_charge}\")\n", + " \n", + " else :\n", + " print(\"0003\")\n", + " \n", + " if not allocated: Warning = False" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "61198b1c", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************idx=0 mol.formula='Cl6-Fe2'******************\n", + "******************idx=1 mol.formula='H10-C4-O'******************\n", + "PREPARE: Doing molecule 1 with unique_index: 2\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n", + "******************idx=2 mol.formula='H2-O-Cl3-Fe'******************\n", + "******************idx=3 mol.formula='H10-C4-O'******************\n", + "PREPARE: Doing molecule 3 with unique_index: 2\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n", + "******************idx=4 mol.formula='H2-O-Cl3-Fe'******************\n", + "******************idx=5 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 5 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n", + "******************idx=6 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 6 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n", + "******************idx=7 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 7 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n", + "******************idx=8 mol.formula='H36-C16-N'******************\n", + "PREPARE: Doing molecule 8 with unique_index: 5\n", + "PREPARE: Specie with poscharges: [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", + " Charge Tried = 1\n", + " Uncorrected Total Charge = 1\n", + " Corrected Total Charge = 1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "]\n", + "0003\n" + ] + } + ], + "source": [ + "prepare_mols_test(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", + " selected_cs, final_charge_distribution[0], debug=debug)\n" ] }, { "cell_type": "code", - "execution_count": 29, - "id": "d59b4c39", - "metadata": {}, + "execution_count": 92, + "id": "9a0ebd75", + "metadata": { + "scrolled": false + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cl6-Fe2\n", "[------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['Cl']\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "H10-C4-O\n", - "[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['C', 'H', 'H', 'H', 'H', 'O', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", "]\n", - "H2-O-Cl3-Fe\n", - "[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [1, 0, 0]\n", - "---------------------------------------------------\n", - "]\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "H10-C4-O\n", - "No protonation_states assigned H10-C4-O\n", - "H2-O-Cl3-Fe\n", - "No protonation_states assigned H2-O\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "No protonation_states assigned Cl\n", - "H36-C16-N\n", + "C C C 0 0\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 0 4 1.0\n", + "BUILD BONDS: bond 0 5 1.0\n", + "BUILD BONDS: bond 0 8 1.0\n", + "H H H 1 1\n", + "BUILD BONDS: bond 1 3 1.0\n", + "H H H 2 2\n", + "BUILD BONDS: bond 2 3 1.0\n", + "C C C 3 3\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 1 3 1.0\n", + "BUILD BONDS: bond 2 3 1.0\n", + "BUILD BONDS: bond 3 14 1.0\n", + "H H H 4 4\n", + "BUILD BONDS: bond 0 4 1.0\n", + "H H H 5 5\n", + "BUILD BONDS: bond 0 5 1.0\n", + "O C C 6 6\n", + "BUILD BONDS: bond 6 7 1.0\n", + "BUILD BONDS: bond 6 9 1.0\n", + "BUILD BONDS: bond 6 10 1.0\n", + "BUILD BONDS: bond 6 12 1.0\n", + "C C C 7 7\n", + "BUILD BONDS: bond 6 7 1.0\n", + "BUILD BONDS: bond 7 8 1.0\n", + "BUILD BONDS: bond 7 11 1.0\n", + "BUILD BONDS: bond 7 13 1.0\n", + "H O O 8 8\n", + "BUILD BONDS: bond 0 8 1.0\n", + "BUILD BONDS: bond 7 8 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 6 9 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 6 10 1.0\n", + "H H H 11 11\n", + "BUILD BONDS: bond 7 11 1.0\n", + "H H H 12 12\n", + "BUILD BONDS: bond 6 12 1.0\n", + "H H H 13 13\n", + "BUILD BONDS: bond 7 13 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 3 14 1.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "C C C 0 0\n", + "BUILD BONDS: bond 0 1 1.0\n", + "BUILD BONDS: bond 0 2 1.0\n", + "BUILD BONDS: bond 0 5 1.0\n", + "BUILD BONDS: bond 0 8 1.0\n", + "H H H 1 1\n", + "BUILD BONDS: bond 0 1 1.0\n", + "H H H 2 2\n", + "BUILD BONDS: bond 0 2 1.0\n", + "O H H 3 3\n", + "BUILD BONDS: bond 3 8 1.0\n", + "C H H 4 4\n", + "BUILD BONDS: bond 4 8 1.0\n", + "H O O 5 5\n", + "BUILD BONDS: bond 0 5 1.0\n", + "BUILD BONDS: bond 5 7 1.0\n", + "H C C 6 6\n", + "BUILD BONDS: bond 6 7 1.0\n", + "BUILD BONDS: bond 6 11 1.0\n", + "BUILD BONDS: bond 6 12 1.0\n", + "BUILD BONDS: bond 6 13 1.0\n", + "C C C 7 7\n", + "BUILD BONDS: bond 5 7 1.0\n", + "BUILD BONDS: bond 6 7 1.0\n", + "BUILD BONDS: bond 7 9 1.0\n", + "BUILD BONDS: bond 7 10 1.0\n", + "H C C 8 8\n", + "BUILD BONDS: bond 0 8 1.0\n", + "BUILD BONDS: bond 3 8 1.0\n", + "BUILD BONDS: bond 4 8 1.0\n", + "BUILD BONDS: bond 8 14 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 7 9 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 7 10 1.0\n", + "H H H 11 11\n", + "BUILD BONDS: bond 6 11 1.0\n", + "H H H 12 12\n", + "BUILD BONDS: bond 6 12 1.0\n", + "H H H 13 13\n", + "BUILD BONDS: bond 6 13 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 8 14 1.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "[------------- Cell2mol Protonation ----------------\n", " Status = True\n", - " Labels = ['N', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", + " Labels = ['N', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C']\n", " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "---------------------------------------------------\n", "]\n", - "H36-C16-N\n", - "No protonation_states assigned H36-C16-N\n", - "H36-C16-N\n", - "No protonation_states assigned H36-C16-N\n", - "H36-C16-N\n", - "No protonation_states assigned H36-C16-N\n" + "N N N 0 0\n", + "BUILD BONDS: bond 0 4 1.0\n", + "BUILD BONDS: bond 0 11 1.0\n", + "BUILD BONDS: bond 0 19 1.0\n", + "BUILD BONDS: bond 0 24 1.0\n", + "C H H 1 1\n", + "BUILD BONDS: bond 1 41 1.0\n", + "H H H 2 2\n", + "BUILD BONDS: bond 2 17 1.0\n", + "H H H 3 3\n", + "BUILD BONDS: bond 3 20 1.0\n", + "C C C 4 4\n", + "BUILD BONDS: bond 0 4 1.0\n", + "BUILD BONDS: bond 4 8 1.0\n", + "BUILD BONDS: bond 4 21 1.0\n", + "BUILD BONDS: bond 4 41 1.0\n", + "H H H 5 5\n", + "BUILD BONDS: bond 5 6 1.0\n", + "H C C 6 6\n", + "BUILD BONDS: bond 5 6 1.0\n", + "BUILD BONDS: bond 6 19 1.0\n", + "BUILD BONDS: bond 6 22 1.0\n", + "BUILD BONDS: bond 6 26 1.0\n", + "C H H 7 7\n", + "BUILD BONDS: bond 7 31 1.0\n", + "H H H 8 8\n", + "BUILD BONDS: bond 4 8 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 9 13 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 10 22 1.0\n", + "H C C 11 11\n", + "BUILD BONDS: bond 0 11 1.0\n", + "BUILD BONDS: bond 11 20 1.0\n", + "BUILD BONDS: bond 11 32 1.0\n", + "BUILD BONDS: bond 11 51 1.0\n", + "H H H 12 12\n", + "BUILD BONDS: bond 12 27 1.0\n", + "C C C 13 13\n", + "BUILD BONDS: bond 9 13 1.0\n", + "BUILD BONDS: bond 13 31 1.0\n", + "BUILD BONDS: bond 13 46 1.0\n", + "BUILD BONDS: bond 13 47 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 14 19 1.0\n", + "H H H 15 15\n", + "BUILD BONDS: bond 15 43 1.0\n", + "C H H 16 16\n", + "BUILD BONDS: bond 16 27 1.0\n", + "H C C 17 17\n", + "BUILD BONDS: bond 2 17 1.0\n", + "BUILD BONDS: bond 17 25 1.0\n", + "BUILD BONDS: bond 17 29 1.0\n", + "BUILD BONDS: bond 17 43 1.0\n", + "C H H 18 18\n", + "BUILD BONDS: bond 18 19 1.0\n", + "H C C 19 19\n", + "BUILD BONDS: bond 0 19 1.0\n", + "BUILD BONDS: bond 6 19 1.0\n", + "BUILD BONDS: bond 14 19 1.0\n", + "BUILD BONDS: bond 18 19 1.0\n", + "H C C 20 20\n", + "BUILD BONDS: bond 3 20 1.0\n", + "BUILD BONDS: bond 11 20 1.0\n", + "BUILD BONDS: bond 20 23 1.0\n", + "BUILD BONDS: bond 20 43 1.0\n", + "C H H 21 21\n", + "BUILD BONDS: bond 4 21 1.0\n", + "H C C 22 22\n", + "BUILD BONDS: bond 6 22 1.0\n", + "BUILD BONDS: bond 10 22 1.0\n", + "BUILD BONDS: bond 22 36 1.0\n", + "BUILD BONDS: bond 22 37 1.0\n", + "H H H 23 23\n", + "BUILD BONDS: bond 20 23 1.0\n", + "C C C 24 24\n", + "BUILD BONDS: bond 0 24 1.0\n", + "BUILD BONDS: bond 24 27 1.0\n", + "BUILD BONDS: bond 24 34 1.0\n", + "BUILD BONDS: bond 24 42 1.0\n", + "H H H 25 25\n", + "BUILD BONDS: bond 17 25 1.0\n", + "H H H 26 26\n", + "BUILD BONDS: bond 6 26 1.0\n", + "C C C 27 27\n", + "BUILD BONDS: bond 12 27 1.0\n", + "BUILD BONDS: bond 16 27 1.0\n", + "BUILD BONDS: bond 24 27 1.0\n", + "BUILD BONDS: bond 27 31 1.0\n", + "H H H 28 28\n", + "BUILD BONDS: bond 28 43 1.0\n", + "H H H 29 29\n", + "BUILD BONDS: bond 17 29 1.0\n", + "H H H 30 30\n", + "BUILD BONDS: bond 30 36 1.0\n", + "C C C 31 31\n", + "BUILD BONDS: bond 7 31 1.0\n", + "BUILD BONDS: bond 13 31 1.0\n", + "BUILD BONDS: bond 27 31 1.0\n", + "BUILD BONDS: bond 31 52 1.0\n", + "H H H 32 32\n", + "BUILD BONDS: bond 11 32 1.0\n", + "H H H 33 33\n", + "BUILD BONDS: bond 33 41 1.0\n", + "H H H 34 34\n", + "BUILD BONDS: bond 24 34 1.0\n", + "C C C 35 35\n", + "BUILD BONDS: bond 35 39 1.0\n", + "BUILD BONDS: bond 35 44 1.0\n", + "BUILD BONDS: bond 35 48 1.0\n", + "BUILD BONDS: bond 35 49 1.0\n", + "H C C 36 36\n", + "BUILD BONDS: bond 22 36 1.0\n", + "BUILD BONDS: bond 30 36 1.0\n", + "BUILD BONDS: bond 36 40 1.0\n", + "BUILD BONDS: bond 36 45 1.0\n", + "H H H 37 37\n", + "BUILD BONDS: bond 22 37 1.0\n", + "C H H 38 38\n", + "BUILD BONDS: bond 38 44 1.0\n", + "H H H 39 39\n", + "BUILD BONDS: bond 35 39 1.0\n", + "H H H 40 40\n", + "BUILD BONDS: bond 36 40 1.0\n", + "C C C 41 41\n", + "BUILD BONDS: bond 1 41 1.0\n", + "BUILD BONDS: bond 4 41 1.0\n", + "BUILD BONDS: bond 33 41 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "H H H 42 42\n", + "BUILD BONDS: bond 24 42 1.0\n", + "H C C 43 43\n", + "BUILD BONDS: bond 15 43 1.0\n", + "BUILD BONDS: bond 17 43 1.0\n", + "BUILD BONDS: bond 20 43 1.0\n", + "BUILD BONDS: bond 28 43 1.0\n", + "C C C 44 44\n", + "BUILD BONDS: bond 35 44 1.0\n", + "BUILD BONDS: bond 38 44 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "BUILD BONDS: bond 44 50 1.0\n", + "H H H 45 45\n", + "BUILD BONDS: bond 36 45 1.0\n", + "H H H 46 46\n", + "BUILD BONDS: bond 13 46 1.0\n", + "C H H 47 47\n", + "BUILD BONDS: bond 13 47 1.0\n", + "H H H 48 48\n", + "BUILD BONDS: bond 35 48 1.0\n", + "H H H 49 49\n", + "BUILD BONDS: bond 35 49 1.0\n", + "H H H 50 50\n", + "BUILD BONDS: bond 44 50 1.0\n", + "H H H 51 51\n", + "BUILD BONDS: bond 11 51 1.0\n", + "H H H 52 52\n", + "BUILD BONDS: bond 31 52 1.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "N N N 0 0\n", + "BUILD BONDS: bond 0 15 1.0\n", + "BUILD BONDS: bond 0 16 1.0\n", + "BUILD BONDS: bond 0 40 1.0\n", + "BUILD BONDS: bond 0 46 1.0\n", + "C C C 1 1\n", + "BUILD BONDS: bond 1 4 1.0\n", + "BUILD BONDS: bond 1 16 1.0\n", + "BUILD BONDS: bond 1 24 1.0\n", + "BUILD BONDS: bond 1 34 1.0\n", + "H C C 2 2\n", + "BUILD BONDS: bond 2 10 1.0\n", + "BUILD BONDS: bond 2 41 1.0\n", + "BUILD BONDS: bond 2 43 1.0\n", + "BUILD BONDS: bond 2 45 1.0\n", + "H H H 3 3\n", + "BUILD BONDS: bond 3 32 1.0\n", + "C H H 4 4\n", + "BUILD BONDS: bond 1 4 1.0\n", + "H H H 5 5\n", + "BUILD BONDS: bond 5 43 1.0\n", + "H H H 6 6\n", + "BUILD BONDS: bond 6 45 1.0\n", + "C H H 7 7\n", + "BUILD BONDS: bond 7 43 1.0\n", + "H C C 8 8\n", + "BUILD BONDS: bond 8 9 1.0\n", + "BUILD BONDS: bond 8 13 1.0\n", + "BUILD BONDS: bond 8 31 1.0\n", + "BUILD BONDS: bond 8 46 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 8 9 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 2 10 1.0\n", + "H H H 11 11\n", + "BUILD BONDS: bond 11 42 1.0\n", + "C H H 12 12\n", + "BUILD BONDS: bond 12 16 1.0\n", + "H H H 13 13\n", + "BUILD BONDS: bond 8 13 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 14 15 1.0\n", + "C C C 15 15\n", + "BUILD BONDS: bond 0 15 1.0\n", + "BUILD BONDS: bond 14 15 1.0\n", + "BUILD BONDS: bond 15 42 1.0\n", + "BUILD BONDS: bond 15 44 1.0\n", + "H C C 16 16\n", + "BUILD BONDS: bond 0 16 1.0\n", + "BUILD BONDS: bond 1 16 1.0\n", + "BUILD BONDS: bond 12 16 1.0\n", + "BUILD BONDS: bond 16 47 1.0\n", + "H H H 17 17\n", + "BUILD BONDS: bond 17 46 1.0\n", + "C H H 18 18\n", + "BUILD BONDS: bond 18 31 1.0\n", + "H C C 19 19\n", + "BUILD BONDS: bond 19 25 1.0\n", + "BUILD BONDS: bond 19 31 1.0\n", + "BUILD BONDS: bond 19 38 1.0\n", + "BUILD BONDS: bond 19 49 1.0\n", + "H H H 20 20\n", + "BUILD BONDS: bond 20 32 1.0\n", + "C H H 21 21\n", + "BUILD BONDS: bond 21 24 1.0\n", + "H H H 22 22\n", + "BUILD BONDS: bond 22 28 1.0\n", + "H H H 23 23\n", + "BUILD BONDS: bond 23 43 1.0\n", + "H C C 24 24\n", + "BUILD BONDS: bond 1 24 1.0\n", + "BUILD BONDS: bond 21 24 1.0\n", + "BUILD BONDS: bond 24 26 1.0\n", + "BUILD BONDS: bond 24 32 1.0\n", + "C H H 25 25\n", + "BUILD BONDS: bond 19 25 1.0\n", + "H H H 26 26\n", + "BUILD BONDS: bond 24 26 1.0\n", + "H H H 27 27\n", + "BUILD BONDS: bond 27 46 1.0\n", + "C C C 28 28\n", + "BUILD BONDS: bond 22 28 1.0\n", + "BUILD BONDS: bond 28 29 1.0\n", + "BUILD BONDS: bond 28 39 1.0\n", + "BUILD BONDS: bond 28 50 1.0\n", + "H H H 29 29\n", + "BUILD BONDS: bond 28 29 1.0\n", + "H H H 30 30\n", + "BUILD BONDS: bond 30 50 1.0\n", + "C C C 31 31\n", + "BUILD BONDS: bond 8 31 1.0\n", + "BUILD BONDS: bond 18 31 1.0\n", + "BUILD BONDS: bond 19 31 1.0\n", + "BUILD BONDS: bond 31 37 1.0\n", + "H C C 32 32\n", + "BUILD BONDS: bond 3 32 1.0\n", + "BUILD BONDS: bond 20 32 1.0\n", + "BUILD BONDS: bond 24 32 1.0\n", + "BUILD BONDS: bond 32 52 1.0\n", + "H H H 33 33\n", + "BUILD BONDS: bond 33 40 1.0\n", + "C H H 34 34\n", + "BUILD BONDS: bond 1 34 1.0\n", + "H H H 35 35\n", + "BUILD BONDS: bond 35 50 1.0\n", + "H H H 36 36\n", + "BUILD BONDS: bond 36 40 1.0\n", + "H H H 37 37\n", + "BUILD BONDS: bond 31 37 1.0\n", + "C H H 38 38\n", + "BUILD BONDS: bond 19 38 1.0\n", + "H H H 39 39\n", + "BUILD BONDS: bond 28 39 1.0\n", + "H C C 40 40\n", + "BUILD BONDS: bond 0 40 1.0\n", + "BUILD BONDS: bond 33 40 1.0\n", + "BUILD BONDS: bond 36 40 1.0\n", + "BUILD BONDS: bond 40 45 1.0\n", + "C H H 41 41\n", + "BUILD BONDS: bond 2 41 1.0\n", + "H C C 42 42\n", + "BUILD BONDS: bond 11 42 1.0\n", + "BUILD BONDS: bond 15 42 1.0\n", + "BUILD BONDS: bond 42 50 1.0\n", + "BUILD BONDS: bond 42 51 1.0\n", + "H C C 43 43\n", + "BUILD BONDS: bond 2 43 1.0\n", + "BUILD BONDS: bond 5 43 1.0\n", + "BUILD BONDS: bond 7 43 1.0\n", + "BUILD BONDS: bond 23 43 1.0\n", + "C H H 44 44\n", + "BUILD BONDS: bond 15 44 1.0\n", + "H C C 45 45\n", + "BUILD BONDS: bond 2 45 1.0\n", + "BUILD BONDS: bond 6 45 1.0\n", + "BUILD BONDS: bond 40 45 1.0\n", + "BUILD BONDS: bond 45 48 1.0\n", + "H C C 46 46\n", + "BUILD BONDS: bond 0 46 1.0\n", + "BUILD BONDS: bond 8 46 1.0\n", + "BUILD BONDS: bond 17 46 1.0\n", + "BUILD BONDS: bond 27 46 1.0\n", + "C H H 47 47\n", + "BUILD BONDS: bond 16 47 1.0\n", + "H H H 48 48\n", + "BUILD BONDS: bond 45 48 1.0\n", + "H H H 49 49\n", + "BUILD BONDS: bond 19 49 1.0\n", + "H C C 50 50\n", + "BUILD BONDS: bond 28 50 1.0\n", + "BUILD BONDS: bond 30 50 1.0\n", + "BUILD BONDS: bond 35 50 1.0\n", + "BUILD BONDS: bond 42 50 1.0\n", + "H H H 51 51\n", + "BUILD BONDS: bond 42 51 1.0\n", + "H H H 52 52\n", + "BUILD BONDS: bond 32 52 1.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "N N N 0 0\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 0 17 1.0\n", + "BUILD BONDS: bond 0 21 1.0\n", + "BUILD BONDS: bond 0 32 1.0\n", + "C H H 1 1\n", + "BUILD BONDS: bond 1 45 1.0\n", + "H C C 2 2\n", + "BUILD BONDS: bond 2 22 1.0\n", + "BUILD BONDS: bond 2 26 1.0\n", + "BUILD BONDS: bond 2 32 1.0\n", + "BUILD BONDS: bond 2 45 1.0\n", + "H C C 3 3\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 3 15 1.0\n", + "BUILD BONDS: bond 3 37 1.0\n", + "BUILD BONDS: bond 3 47 1.0\n", + "C H H 4 4\n", + "BUILD BONDS: bond 4 37 1.0\n", + "H H H 5 5\n", + "BUILD BONDS: bond 5 17 1.0\n", + "H H H 6 6\n", + "BUILD BONDS: bond 6 49 1.0\n", + "C H H 7 7\n", + "BUILD BONDS: bond 7 38 1.0\n", + "H H H 8 8\n", + "BUILD BONDS: bond 8 38 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 9 40 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 10 25 1.0\n", + "H H H 11 11\n", + "BUILD BONDS: bond 11 32 1.0\n", + "H C C 12 12\n", + "BUILD BONDS: bond 12 28 1.0\n", + "BUILD BONDS: bond 12 31 1.0\n", + "BUILD BONDS: bond 12 38 1.0\n", + "BUILD BONDS: bond 12 50 1.0\n", + "C H H 13 13\n", + "BUILD BONDS: bond 13 41 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 14 29 1.0\n", + "H H H 15 15\n", + "BUILD BONDS: bond 3 15 1.0\n", + "C H H 16 16\n", + "BUILD BONDS: bond 16 44 1.0\n", + "H C C 17 17\n", + "BUILD BONDS: bond 0 17 1.0\n", + "BUILD BONDS: bond 5 17 1.0\n", + "BUILD BONDS: bond 17 24 1.0\n", + "BUILD BONDS: bond 17 30 1.0\n", + "C H H 18 18\n", + "BUILD BONDS: bond 18 29 1.0\n", + "H H H 19 19\n", + "BUILD BONDS: bond 19 21 1.0\n", + "H H H 20 20\n", + "BUILD BONDS: bond 20 37 1.0\n", + "C C C 21 21\n", + "BUILD BONDS: bond 0 21 1.0\n", + "BUILD BONDS: bond 19 21 1.0\n", + "BUILD BONDS: bond 21 27 1.0\n", + "BUILD BONDS: bond 21 41 1.0\n", + "H H H 22 22\n", + "BUILD BONDS: bond 2 22 1.0\n", + "H H H 23 23\n", + "BUILD BONDS: bond 23 30 1.0\n", + "C H H 24 24\n", + "BUILD BONDS: bond 17 24 1.0\n", + "H C C 25 25\n", + "BUILD BONDS: bond 10 25 1.0\n", + "BUILD BONDS: bond 25 30 1.0\n", + "BUILD BONDS: bond 25 42 1.0\n", + "BUILD BONDS: bond 25 49 1.0\n", + "H H H 26 26\n", + "BUILD BONDS: bond 2 26 1.0\n", + "C H H 27 27\n", + "BUILD BONDS: bond 21 27 1.0\n", + "H H H 28 28\n", + "BUILD BONDS: bond 12 28 1.0\n", + "H C C 29 29\n", + "BUILD BONDS: bond 14 29 1.0\n", + "BUILD BONDS: bond 18 29 1.0\n", + "BUILD BONDS: bond 29 45 1.0\n", + "BUILD BONDS: bond 29 51 1.0\n", + "H C C 30 30\n", + "BUILD BONDS: bond 17 30 1.0\n", + "BUILD BONDS: bond 23 30 1.0\n", + "BUILD BONDS: bond 25 30 1.0\n", + "BUILD BONDS: bond 30 36 1.0\n", + "C H H 31 31\n", + "BUILD BONDS: bond 12 31 1.0\n", + "H C C 32 32\n", + "BUILD BONDS: bond 0 32 1.0\n", + "BUILD BONDS: bond 2 32 1.0\n", + "BUILD BONDS: bond 11 32 1.0\n", + "BUILD BONDS: bond 32 52 1.0\n", + "H H H 33 33\n", + "BUILD BONDS: bond 33 40 1.0\n", + "H H H 34 34\n", + "BUILD BONDS: bond 34 49 1.0\n", + "C H H 35 35\n", + "BUILD BONDS: bond 35 45 1.0\n", + "H H H 36 36\n", + "BUILD BONDS: bond 30 36 1.0\n", + "H C C 37 37\n", + "BUILD BONDS: bond 3 37 1.0\n", + "BUILD BONDS: bond 4 37 1.0\n", + "BUILD BONDS: bond 20 37 1.0\n", + "BUILD BONDS: bond 37 38 1.0\n", + "C C C 38 38\n", + "BUILD BONDS: bond 7 38 1.0\n", + "BUILD BONDS: bond 8 38 1.0\n", + "BUILD BONDS: bond 12 38 1.0\n", + "BUILD BONDS: bond 37 38 1.0\n", + "H H H 39 39\n", + "BUILD BONDS: bond 39 41 1.0\n", + "H C C 40 40\n", + "BUILD BONDS: bond 9 40 1.0\n", + "BUILD BONDS: bond 33 40 1.0\n", + "BUILD BONDS: bond 40 44 1.0\n", + "BUILD BONDS: bond 40 46 1.0\n", + "C C C 41 41\n", + "BUILD BONDS: bond 13 41 1.0\n", + "BUILD BONDS: bond 21 41 1.0\n", + "BUILD BONDS: bond 39 41 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "H H H 42 42\n", + "BUILD BONDS: bond 25 42 1.0\n", + "H H H 43 43\n", + "BUILD BONDS: bond 43 49 1.0\n", + "C C C 44 44\n", + "BUILD BONDS: bond 16 44 1.0\n", + "BUILD BONDS: bond 40 44 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "BUILD BONDS: bond 44 48 1.0\n", + "H C C 45 45\n", + "BUILD BONDS: bond 1 45 1.0\n", + "BUILD BONDS: bond 2 45 1.0\n", + "BUILD BONDS: bond 29 45 1.0\n", + "BUILD BONDS: bond 35 45 1.0\n", + "H H H 46 46\n", + "BUILD BONDS: bond 40 46 1.0\n", + "C H H 47 47\n", + "BUILD BONDS: bond 3 47 1.0\n", + "H H H 48 48\n", + "BUILD BONDS: bond 44 48 1.0\n", + "H C C 49 49\n", + "BUILD BONDS: bond 6 49 1.0\n", + "BUILD BONDS: bond 25 49 1.0\n", + "BUILD BONDS: bond 34 49 1.0\n", + "BUILD BONDS: bond 43 49 1.0\n", + "H H H 50 50\n", + "BUILD BONDS: bond 12 50 1.0\n", + "H H H 51 51\n", + "BUILD BONDS: bond 29 51 1.0\n", + "H H H 52 52\n", + "BUILD BONDS: bond 32 52 1.0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO2dZ1xTSdj2JwSQJoiAVBvWdUFXXbGguKBiAaUaFSyIFXXFBtjArmBFwa6ArBV0WRcQBaRIFQFBkB5KDKETEkhIP++HeZ68edRlk8CKyPw/jXdO7pmJPy/nnDP3NTgMwwACgUAgpEWmtweAQCAQfRskowgEAtEtkIwiEAhEt0AyikAgEN0CySgCgUB0CySjfRUej0elUmG7qalJ9CMSidTZ2QkA4HK55eXlbDa7+90Ju6BSqTweD7br6urodHr3k39jhHNhMpkMBgO26+vrP336JLyGSqV+9qt2sy8Gg8FkMkXzNzY2wnhpaSmfz+9+X4jeAsloX4VEIvn4+MC2i4uLMJ6YmGhhYZGZmVlWVubo6Pj8+fO4uLjudyfs4ujRo9XV1QAAb2/v8+fPu7i45Obmdj//t2T9+vVwn9+LFy/CwsIAAOHh4X5+fkePHr18+TIAgMViOTs7e3p6dr8v4e8WHh4eHR0N22w2e82aNfv27auvr9+0adPTp0+XLl3a/b4QvYVsbw8A0TNUV1crKCioqalduXJly5YtAIBLly6dOHFCW1tbW1u7Z/ui0WilpaVZWVmvXr0qKSm5du3alClTeraLb0lGRoadnd3y5cvz8/ODg4MBACdPnty+ffvTp097tiOBQJCVlWViYnL69Ont27c/evRIR0cnNDQUwzBra+ue7QvxLUEy2odJSkpyc3MDAFRUVNDpdIFAcPny5X379r179w4AUFlZ+eDBA4FAoKKicuTIkW72RSQSYV9paWkrVqzg8XjGxsaenp50Ol14X9yH2LZtGwCgsrJy5cqV9fX1srKykZGR58+fP3LkyIcPH9rb22fNmtUjMsrhcODvVlpaunnz5oaGhoKCgpaWFlNT00ePHgEAKBTKwYMHjY2Nu98XordAMtqH+e233wICAgAAVlZWEydObG1tTUxMxDAsOzu7rKxMXV3d09NTQ0Nj4cKF3e9r1KhR169fBwC4u7sPGTJk9OjR06dPb2lpyc/PT01N7X7+b8y1a9dwONzTp0/b29vt7OwAAEuXLl28eLG9vb2Ojg4ejz927FhOTk5lZaWhoWF3OpKXl4e/W0hICB6PX7p0qZubG4ZhR44cyc3NraioGD169P3791euXEmj0dTU1HpmeohvC5LRH4Tnz59rampmZmYCAPz9/SdNmoTD4TZv3jxo0CBbW9uEhIT09PTDhw9LkTkiImL27NmikbKysrS0NDk5uYqKitzc3Js3b/bMHHoJDw+Pn3/+ubCwkEajzZs3z93dHQBApVJpNNqIESOuX7++ceNGOTk5SdNmZmYqKyuLRrhcrre3N1RVOp3e0tKCx+NXr149evRoNputqqraUzNCfGswRN+Ex+PR6XTYplKpoh+xWCwul4thWEdHR1tbW3NzM/wn6u3tLWkv9+7dk5GRMTY2rqurgxE6nc7j8TAMY7PZJBJJIBB0dybfHOHPxWKxmEwmbLe2tra0tAivEQgEHR0dUFLt7Ow4HI5EXaSnp6uqqmppaeXl5cEIk8lksVif5cf68s+IEIJktF8QHh4O11Oenp7if+vRo0d4PB4AcPLkyf9ubN8z79+/19DQAABYWVmJimDXQA0FABAIBPj/GeLHBslof0FSJUUaCpFUSZGG9kOQjPYjxFdSpKGiiK+kSEP7J0hG+xfiKCnS0C8RR0mRhvZbkIz2O54+fdqFkiIN/Se6VlKkof0ZJKP9kbCwMFlZWQBARESEaLygoEBGRgYAcObMmd4a2/dMTk7O4MGDAQA+Pj6icTqdrqmpCQBwcnKC2xgQ/Qr80aNHv9HWKsR3w/jx47W1tfX19ffu3YvD4WCQSqUaGBgoKCjMmTNn+/btioqKUmSmUqnwi+3t7Xg8HooyAKCjo0MgEMjKyjKZzLq6OlVVVWG/PQifz+/o6BgwYIDoSETbLBartbX1s+2c4qOrqztlypTW1tZLly7Jy8vDYEdHh5ycnLGxsZycnJ+fH9pC3w9B1iT9jvz8fGtr64aGhvb2dg6HA4MRERGTJ08uLi6eMmVKYWHh3r17g4KCpEi+evVq2Dh+/HhZWRlsNzQ0mJmZ+fv7l5eX29jYhIaGCi/rWaqqqry9vUVHwmKxdu7cOXnyZABAUVGRg4ODn5/fwYMHpUjOYrFsbGySkpIGDx4snFp9fb2Zmdnly5cNDQ2bmpouXrwo9ItB9B9QFVO/4+TJk7dv3zYwMAAAVFRUaGpq4nA4WI8IALh69eqDBw+UlZUXLFjg6uranY46OjrKy8vHjBnj5eXl4eFRU1Pz6dOncePGeXh42Nra9sxkuoREIikqKl65coVEIgEAbt++febMmYkTJy5ZsoTNZsNFq/g8fvx4yZIl0PaFRqPBqe3fv3/v3r1kMjkiIuLAgQNz5sxZuHAhhmH/xVob8d2CVqP9jubmZqihAICGhgYmk7l//34fHx/4ZonJZKqoqOBwOOH9uETU1NS4ubm5ubnFxcWxWKz6+vro6OiJEyeOGDECADBlypSCgoL58+ebmpr23IT+D4mJiXAARCKxublZ1A6VQqEMHToUAKClpdXS0iJp5urq6vHjx8M2k8msr6+PioqaNGkSnNr8+fMvXbp05MiRiooKFovVM5NB9BHQarTfoampSSaToZKamppWVFQkJSUJBIJ3795xOBwlJSUGg6GkpIRJdfL28OHDYc24h4eHpqbmhAkTTExMjI2N37x5U1dXx+FwvL2958+fb21t3dTUpKWl1cNzA8Dc3Bx6hlpZWX1m36enp0cmk9XV1ZuamuAbIYkYPnx4aWnp3LlzAQC6urq6urpwaklJSQ0NDW5ubqGhoRwOJz09XbrHyoi+C5LRfsfBgwc3bty4YMGCuro6IyOjadOmFRcXAwAOHTq0atUqMpm8YcMGNTU1eI8vPjExMb/++qtopKqqKiMjIysrCwCQkZGRnJw8ffr0mzdvlpaWysvLSyFkkhIREaGjo1NQUFBeXu7n57dx48b9+/f//PPPv/zyC5vNPnfu3P79++EaXBxWrly5fPny+vp6Doczffr0pqYmOLW0tLTU1FQqlXrv3r3q6up169b9l3NCfJf09lYBRC/AZrPPnj27d+9e0WBLSwubzb5586anp2djY6NECeFeVGNj4+rqahihUqmi2yc7OzuhIQiVSi0vL+fz+d2exFfgcrlC2xHhFEgkEpFIJBKJGIYxGIza2loMw6B54OrVqyXanyQQCJ49e2Zvb89ms4VBOLWkpCRbW1tRcxNE/wHJaH8E+jYBAKA/qZCqqiq4M18iLyjhfn4PD48eHuh/hnS75YXfunjxomicxWLBp65SeEEhfgCQjPY7uq5T6rrGqYvr+5CGQiRV0q6vl84LCvFjgGS0fyFOraf4Stp3NRQivpKKcyVS0n4LktF+hPj18uIoaV/XUIg4+ii+2iIl7Z8gGe0vSOo50rUX1I+hoZCuVVLSe3+kpP0QJKP9Aul8m548eQIdTMLCwkTj2dnZUEMPHTrU0yPtHdLS0gYOHAgAOHXqlGi8rq4O1sivWrVK/Hf6SEn7G0hG+zDt7e3wDB8Oh9PZ2QmDdDq9qakJttva2lpaWshksoKCApDct4nP59+6dcvZ2Vm4ChMIBK2trTweb8eOHR4eHh0dHcJ+JUJ4ihSTyRTKE5PJhBuh2Gw23JYkhMFgwI94PB6DwRBeX19fL7wG7uiUYjCQ+Pj4BQsWCAdGo9FaW1sxDLtw4YKtrW1jY6NEM4VeULq6uh8/foQRFosluk2KQqEgL6gfBuTw1IdxdXW1sLBQVFRMTEyMjo6eOXNmfHz8uXPnYmNjy8vLm5qabty4ERERweFwXFxcJk+e7OXlJX7yzMzMzZs3Kykptbe329rawg1SISEhK1ascHZ2Xr58+eTJky0sLOh0+pw5cyQdub29vbOzMwDg6NGjmpqaOjo6Fy9edHd3nzRpEp/P3759e1FRUWhoqL29Pbx+//79I0aM0NTULCwsDAwMnD9/fm5u7sGDB7OyshITE6dPn+7k5FRTU1NdXf1Z5ZKYHDhw4O3bt7q6um1tbb/88ktoaOi1a9devnzZ1tY2ZsyYjIyMiooKNTU1uKtJHHR1dS0tLTdt2rRv3z440/v371dWVv7888/V1dUuLi5kMplGo/30009SjBbxvYGqmH4c8vPzZ8+ePX/+fAqF4unp+fvvv9va2hYXFwcGBkJDDYk4ceLEgwcPoL1meXm5gYEBg8FISEhYvHgxAACHwx04cGDfvn01NTXdHDaTySQSibt374Z2U8OGDQsNDcXhcNbW1v/0lfz8fCMjo9DQUAaDsXr16pCQkHXr1v3222/SmdRVVFSQyeQ//vhDmNzBwWHt2rVtbW3r16+3tbXduHHjvHnzVFRUJEoLbaVEwTCsoKDg9u3bx48fHzlyJHyMgPgBQDLat9m3b9+AAQPIZLK5ufnHjx8nTZoUHx9/4sQJHx8fBQWFyMhIPz+/CxcuSJG5s7MTaigAoLKyUkNDY+/evceOHTt79iwAICYmZsyYMYaGhtLJKJlM3rZtGwDg7du3FhYW1dXVo0aNgh/JyMhUVVUdOHAAFhoJOX78+KBBg1paWkaOHAlnmpWVdejQoU2bNr158+b9+/epqamdnZ2BgYGSDqaqqkp0VQiTAwAiIiLmz58/cuTI169fR0ZGmpqarl+/XtLkHA4HzrS0tHTTpk0lJSXl5eVBQUF8Pl9fX3///v2SJkR8j/T2UwWE9Dg7O8Pnd3FxcaJ1NTwez8rKCrbZbPayZcukSL5w4UIajSb8Y3Z2tpGR0ebNm3/66aczZ87MmDEDrtRMTEza2tokTb5kyRLYOHjw4Pv372H7zJkzaWlpwmusra2Fz2T37NlTXFyMYVh+fr6Xl5doqkWLFsG7ewzDLC0tJR0JhmHFxcUuLi6fBaOiorZs2SIsWuXz+dIlF840ODgYvqlbsWJFc3Oz1KNFfIeg1eiPw4EDB6ZOnZqbm4th2MSJE0NCQqqrq2k02syZM6XI5uXltXr16gULFjQ2Nuro6NjY2BQUFAAAtm7d6uLiApdRmZmZiYmJEt1KJyQkGBsbi0bIZPK7d+8MDAySk5NJJFJHR8eff/45cuRIRUVFuE/gqzOdP39+dHT0oEGDhg8f7uTkdPDgwUmTJo0dO5ZIJAYFBZ08eVJ8x8/x48crKSnt27dPT0/P0NAQPiS9cuXKxo0bQ0JC+Hz+p0+fGhsbV61aJf40vwqXyz127Jirq+vvv/+upaVlaWnZzYSI74Xe1nGE9NTX18PlEpPJbGtrg+3a2lpow4FhGIlEEnqFSEF7e/uFCxf27t0r6iTS1NTE4/HOnz/v6enJYrGEViDiEB0dPWDAAGNj49LSUhiBfih8Pr+xsREaiDCZTCqVWlxcLLpJs7m5Gb6FZ7PZzc3NcDyNjY1lZWWwTaPRqqqquFzu2LFjAQCbN2+GexjEJyIiwsHBAQ6mrq4ODubTp0/JycmrVq1qaGiQKJsQCoUCG3Q6vaOjA462qamJTCZLlxDxHYJkFPGPhIeHw/Xgq1evROMlJSUwLpGDSUxMDNx3tWvXLkk1TnzevHkD3wVt2LBBfB8p4R77wMBA0TiTydTV1QWSe0Eh+hVIRhFfp+t6UEkdTL6NhkIkVdKerWJC9EOQjCK+gkQ19f+qpN9SQyHiK2nP1tQj+idIRhGfI4XDUxdXfnsNhYijpD3r8ITotyAZRfwfJL1b79rBRFRDe3qk/07XStqzfqOI/gySUcT/R1INhQgdTB48eCAaLyoqgocYf+N1qCivX79WUlICAJw/f1403tzcPGjQICCh5whSUsRXQTL648Pn84WmGEwmUxgXdcpobW1taWlRV1cHABw+fFjSLkJDQ21tbUUTMhgMJpN5+PDhXbt2ica/PdHR0fPnzxd6jrS1tUGTkbt3765cuVJodCIm0AtKV1e3rKwMRjgcjqikMplMmJPL5cLiCMQPDzqn/sfnw4cPx44dg21HR0cAQHt7+++//25kZAQAIJPJdnZ2fn5+CQkJkZGRJ06cOHHihPjJMQzbsGEDXKa9efMGBplM5qJFiw4fPuzg4EClUtesWdPTcxILgUCwbt266OhoXV3d3NxcAEBgYKCPj4+dnd3r16+1tLR4PN7atWujo6PFzzlr1qxXr14lJCTs2rULRoKDg4UZOByOnZ3dzp07Kyoq7OzsTp065erq2uPzQnxvoCqmfgeZTFZRUbl8+bKdnR0AwN/f39vb+6effoKnq5uamkqULT4+Xl9f//jx4wAAFotVUVExevToo0ePbt26NScnZ+LEiTdv3ly7du1/MZF/JSYmZvTo0d7e3gCAzs7OysrK9evXKysr//333wUFBa9evXr+/DmGYXZ2dlZWVuKn/bIqTCAQlJaWjhs3zs/Pz9XVNTY2dsSIEY8fP1ZWVrawsMAwTPySKkRfBMlov+Dly5etra0AADKZXFlZOXToUPhkEABQWloaHBzM5XJHjhwpkZMehEgkwlUtAIDFYn38+LGjowPDsOnTp+fk5EB7vd6isrJSOLbOzs6ioiJDQ8O7d+/euHHjyZMn0dHR8vLyAAAulytFciaT6ebmBgAoLi7evn17Xl4eAKCurs7NzS02NlZWVlZWVpZMJquqqiIN/eFBMtovWLRo0alTpwAAVlZWZmZmoh+pqqp6e3sPGTJk0aJFUsiogYEBrLUHAAwaNMjGxmbp0qXDhg07d+5cbm5ufX09fN7aK+jr6xOJRNgePHgwdN7bsGHDrFmzAgICZGRk4Ot7eC6ApCgpKV2/fh0AcOvWLXl5eRsbG2dnZyUlpRMnTrx79666uhqPx7u7u1+9erUHZ4T4PkEy2u8IDw8fP358fn5+TU1NUFCQi4vL7t279fX1Z8+eLUW2RYsW3blzx9fXV15efty4cZWVlZGRkQAAIpF47do1eXn5u3fvEonE2NjYrp04SCRSfn7+0qVLAQCBgYE7duwAADx69CgyMvLhw4d0Ot3e3n7y5Mn79+8PDg5ubm4eOHDgoUOHuh7b0qVLHRwcBAKBjIzMhAkTSCRSa2ursrLy+/fvFy9ePHny5B07dggEgu4/c2CxWH5+fg8ePAAANDc3MxgMKpVqb2+/ZcuW6OhoJycnSb1KEX2MXn3BhfgWsFisxsZG2CaRSFwul8/nV1dXE4nEyspKDMPq6upgQzr4fP7Nmze3bdsmEAiEL+U5HE5zc/Ply5d///13IpEoetrHV8nOzhZW6ENzuba2tgMHDowdOxbDMDc3t1mzZn38+HH9+vUEAkH8sfF4vMePH69Zs4bH43E4HD6fX1RU9OnTJwzDkpOTXV1dSSSSFFPGMEz4RSqV2t7eLpw4j8drbGyk0WjE/wVtjfrhQYeI/PjIysoqKyvDtpqamoyMDA6HGzRokLq6OrzjVlFR6c6td0xMjIuLS2Zm5q+//ir0P8bj8fX19cuWLcvIyFBTU4PLzC6oq6sLCwtjsVh5eXlpaWkDBgxQUFDQ1tZ+8uSJkpJSTEyMQCCQk5N7/fp1S0tLRUVFQ0MDNFfumqysrBUrVkAjvmnTpuFwOC0tLVVVVQaDYWpqmpaWxmAwrK2tpXh8KbQHVFBQkJeXFz4ZkJGRUVZWHjBggPr/0rsPiBHfgt7WcUTfputaz65rnETJzs7esGHD27dv3759a25uDoPx8fGjR4/Oz8+Pj48fNmzYqVOnLCwsoGOei4tLSUnJv+aE/z18dbe8dF5QCMSXoP8nEdLz8uVLOzs7Fou1a9euixcvfrmmc3R0fPjwoZyc3NmzZ//1/ZWenp6JiYmJiYmioiKJRKLRaAAABQWFiRMnzp49++eff9bQ0Jg0aVJKSgqfz2cymV0/cMzJyVmwYAGVSiUQCA8ePPjSAXrOnDkvXrxQUVG5e/cu9CeV/AdAIAAAAN3UI6TkXzUUMmHChJ9++umvv/5KSUnp7OxcsGDBl9cUFBQMGjQIh8ONHz8eANDc3KykpDRgwICAgAA5Obm3b99qaGhERkby+XxPT8/09PTQ0FAnJydjY+OgoKBJkyZ9edf8rxoKGT58+Jw5c8LDw9++fVtbWyvd3T0CgW7qEdIgqW9TF3f3WVlZAwYMkKJKfeXKlQCAgwcPfhbv+l7+S9DdPaKbIBlFSIx03ndf9T3hcrmjR48GAGzbtk3SYSQkJMjKyuJwuOTkZGFQUg2FICVFdAcko4j/QSg6AoFAaHrEZrOFbiZwz1B7e7umpiYAwN3dXVLfprCwMFlZ2aFDh7a0tGAYBi08UlNT7e3t2Wy20D0E9vXVDEwmU7RTPz+/AwcOCC9mMBja2tpAQt8mCPSC0tXVFZ5exefzhX11dnbCV1twDMI2AoFhGA7DsN55moD4znBycrp+/bqamlpsbGxxcbG7u3tycvLt27e5XK6ZmZmRkdHFixcVFRUJBIKOjk5kZOTp06eleJL4/PlzY2NjJpPp5eU1evTolpaW4OBgJpO5bt26kSNHVlVVBQQEnD59Oi8vLyMjQ/SL8BodHR0KhXLmzJmxY8ceP3784cOHMTExJSUlycnJAICYmJjz588/evTo9u3bUtQmJSYm6urq7t27F1qNBAYGjho1avHixVeuXHn//n1ra+vOnTuJROL79++rqqo8PT0tLCwk7QLxY9LbOo74Xli1ahU8cf7Vq1f+/v4lJSV0Ol0gENTV1a1atcrZ2bmhoYHH4y1cuLD7fdnb28M98PD44o6ODugpt379eiKRKBAIbGxsPvtKYGBgaGgo/AqNRqurq+Nyubt27RIWDrx9+/bMmTPdH5vwZPmAgIDIyEgikQiPlf/48eP27dtpNBqGYS9evDh79mz3+0L8GKANT4j/z549e9zc3AICAgAAKSkpAwcOTEhIcHBw2LJli5mZ2enTp8+dO9fQ0ND9jlpbWw0MDAAAMjIyHz58oNFo6urqDAaDRCINGzbsq4vc8vJyuN9eRkamvr6+rKzss/fvAQEBmzZt6v7Y2tvb3dzc3Nzcnjx5wuFwsrKyNDQ0AADR0dFmZmaqqqr37t07fPgw9MdCIACqqUeIcvHiReFN/caNGwEA8+bNMzMzs7e3j4yMrKyslJGRSU1N7U4XTCZTQUFBUVGxra0NukwtWbIEANDe3r5ly5azZ8/+0+YkPT29ysrKiRMnAgDGjh0Lz6MXUlVVpaGhoaGhwWaziUTihAkTpB7hwIEDoedIYGCgoqKivb09ACA8PJxCoezbtw8AsG7duhkzZgQEBFy+fFnqXhA/EkhGEV/n+PHj48ePh7fY48aNy83Nzc7OTk1NhaYh0lFeXu7g4GBvb79v3z4XFxdbW1sSiTRixIixY8du2LDBysoqOzt7yJAhL168qK6uDgsLIxAIwu+uX7/eycmpoaGhra3NyMiIz+fLy8sXFBQ8evRo27Zt/v7+v//+OwBgx44d9+/fv3r1ao/4JTMYjMuXL9NotOfPn2/ZsuXly5cfPnxQU1MrKir69ddfu58f8WOAXjEh/oeampqhQ4fKyMi0t7ezWCxFRUUVFZXy8nIWi2VkZMThcPLy8kaNGgVf00vB8+fP161bR6PRJkyYkJOTw2QyS0tLDQ0NVVVV2Wz2/fv3oR3ymDFjysvLAQAKCgo///yzaAYWiwU36o8cOZLP50dGRgYHB3t7e//yyy9kMnn06NF8Pn/Tpk3BwcEAgB07dly4cAE6ikpEZWWloaEhAKC5uRkWy5NIJCaTCQBQU1MzNDSESjpy5EjpfgfED0hvP5xF9GGYTGZOTg5sp6SkwAaFQrl//35BQQGdTg/7X4Sv9R0dHUU3NkE8PDwAAD4+PuJ3LTxd7tKlS599dO/ePejk/+uvvwp3LyEQ/x1IRhHS8+nTp82bN8M2fMHN5/PXr1//+vVrKyurDx8+xMXFxcXFLV26NC4uTltb29fX96tbTcV3MIH86wmdOTk5I0aMAABoamrGxcV1Y4oIxL+DZBQhPZ8+fXJ2diaRSCQSad68ee/evSsoKIAfeXt7JyQkYBjW0dHh5OSEYRjcKvRPCE9pPn/+cdedpqdjU6fOBQA4OTl1sce+ubkZGkXj8fh/km8EokdAMoqQnk+fPk2bNu3UqVOnTp2aMGFCfX093GJZX1+/ePFiWOrj7+8v5nrwyZMnpqYr5eS4XSxJ09MxVVVMXb1lxw6ff61T4vF4R44cgcYly5Ytg7tiEYgeB8koQnq+vKnHMKysrIxAIEBzeB6PZ2trK/5KMDwck5PDAMC+qqRQQwHACARMfBuTyMhIuLNq7NixhYWF4n4NgRAbtP0eIT2ysrKDBw+GbS0traioqBcvXqxYsQKPx588efLNmzdJSUkEAkH8mlFHR3D/PpCVBWfPgoCA//MRhQIWLQJ0OnByAg8fgn/YXfoVrK2t3759a2RkVFZWFh4enpCQAOMnT54EAPB4vKNHj7q6uv7xxx8w/vbtWycnJ2Q/ihAftOEJ8d3x9Ck4dgzExgJd3f8fxDBw7hzIyQEPHgAuFygqSpaTwWA8e/ZMUVGRwWC4uLgAAKysrKKjo+vr64uKiiwsLObPnx8ZGYnH41euXMlms//++2/pTgxF9EPQahTx3REeDlatArq64OZN8OIFAADk5AAbG/D+PbC1BQwGuHgRSFqSqqysDE8AjY6O9vX19fX15XK5586dw+PxFhYWGIZxuVx5efnTp0/v2LED2gAiEGKCqpgQ3yNlZaCqCgAA+HxAIoHz58GdO0BLCyxYAExNQVsbaGoC2toSp6VSqePHj1+1ahUA4O+//4b7VWNjY+/cuWNiYlJaWvr3338LBAIKhVJUVGRsbNzDs0L8oKDVKOJ75OhRcOAAAABwOCA1FTQ3gyFDAA4HcDgwbBjw9ARGRtKkLSkpqaurGz58+PDhwysqKrKzs6lU6saNG3V0dBYuXFhRUaGvr8/lcouLixkMRs/OCPEDg2QU8T0ydD6FFMkAAB2DSURBVCiYMgW8eAEUFYGTE1BSAqKypqUlZVoDA4NBgwZRKBQKhaKrqxsbG/v+/Xs8Hk+hUP766y8TE5PIyMgzZ87o6OiYmJj0yEQQ/QF0U4/4Ttm9G9y7BxgMcO0a2LAB7NwJRowAZmbdyjl06NDU1NS7d+8CALS1tZcvX25gYHDp0iUNDY1jx47Bo+cjIyMdHBzQ4fII8UEyivjuIBDAtm3g2jUQHw8UFAAeD1RVgZERSEoCFIqUOQUCAbTTX7ZsmfBN/ZgxYzAMs7S0VFJSGj58eGtra1paWmpq6qVLl3puNogfH/RfLqJb+Pv7w8eIHz58iIyMBADU19d7e3v/+eefAICzZ89u2bJl+/bt4ifMyACuruDWLXDrFtDVBerqQFUVAAAGDQJ79gBvb3DkiMSDpNPpDg4Oc+fOLS0tVVJSgkENDY1z584VFxdv2bJly5YtQ4cO/fDhg6+vr5KS0qFDhzo7OyXuBtFv6eXt/4g+jrOzMzz/Iy4u7uLFixiGvXv37vHjx6dOncIwjEAgSJSt6zqlrmuc/onc3FxoaqepqRkfHy/ReBAIcUCrUUR38ff3P3PmzOPHjwEAnp6ev/76K3RXAgA0Njbu37/fz88PE6PKIyMj082tmE4Hq1Z9vU5JWON08SLvwoVwccZ2//792bNnV1VVTZkyJSsra968eRJNDYEQBySjiO7i6Ojo7OwMj8k8e/as6EeJiYm+vr4dHR3QjbSLJBkZGYsWLaRQzN3cav74A/xTARGBAB48ADNmuOzbR/Dx8ekiIZvNdnd3X7NmDZPJXLNmTWpqKjJaRvxHIBlFdBcDA4Nhw4YNGTIEAJCcnAzPsmexWFQqNSwsjEajkUgkWVnZmTNnPnv27KsZMjIyFi1aRKfTzc3nXrmi33URJoEA3N1t5eTkTpw44eXl9dVryGTyb7/9duXKlQEDBty6dSs0NFRR0upRBEJs8EePHu3tMSD6MDwez8jISFZWFsMwNTU1Go0GC9L5fL6CggKPx3v8+LGjo2NOTk5QUFB4eDiHw/ntt99EtxORSCRTU1M6nb5q1aoHDx7805F2okyYMGH8+PEREREpKSk6OjqfHYuUnJxsaWlZWlo6dOjQmJiYZcuW9fy0EQhRevnZLOK7RGht11NuxwKBQHjq54IFCzo7O0U/9fb2JhAI0J9UfJ4+fWpiYtLS0iLai7+/P+zF3Ny8oaGhRwaPQHQNuqlHfAVra2vYOHDgQEFBAWzTaLSpU6eeOnVKioQ4HM7Dw+P169c6Ojra2tokEsnOzm7z5s0uLi5cLvfgwYMqKipbtmxxdHTk8/lfzRAZGQm/cuzYMQBAVVVVWFjYmDFjLl269Pbt22XLlq1evTogICA1NZXP53t5ecXHx8PnDJJia2sLG9evX3/16hUA4Pbt205OTjY2NikpKUQikUAgbNmyJT4+XorkiB+T3tZxxPeI0IPZy8vr3bt3FAoFw7AdO3YEBwefPHmyO5nJZDKTySQQCFVVVRiGcTichoYGJpPZ1NSEYZi9vT2VSv3yWwKBYNasWfDYJQ6HU1NT097ezmAweDzeggULmpubmUwmhmHm5uY0Gi02NrY7IxTOPSAgICoqqra2lkwmYxj28ePH7du3r127tqampjv5ET8eaDWK+AokEsnNzc3NzS02NratrS0nJ+fNmzfq6uoTJkzoZmZ9fX1FRcWmpia4KUpOTi49Pb2lpUVeXt7V1VVBQQE61X9Ga2urnp4evFuXk5N7/vw5PPx5yZIl9vb2GhoaioqKubm5Y8eOVVVVXbBgQXdG2N7eDuf+5MkTNpsdFxenr68PAIiPj58xY0ZZWdnFixdXrFgB6wsQCADQahTxNURXox8+fMAwbNKkSWvWrLG1tZ02bdpXF4wSsXDhwi+PWcYwbPv27aWlpV/GuVyumZnZl3GBQGBpaYlhWFlZma2tbfcHhv3f1eiLFy9gOyoqavPmzXw+f+HChXw+n81mW1tbd78vxI8BqqlH/Au1tbUFBQV5eXkAgKysrLi4OFVV1devX0u3lT0nJ8fQ0NDd3X3Dhg0EAqG6utrAwMDY2PjmzZumpqZlZWVaX7NvkpWVNTc39/DwmD59OpPJrK+vnzNnTlxc3NChQwcOHBgfH79jxw4vL6/ExERjY+Pnz5/v3btXirGVlJRoaGiIRphM5s2bN9vb258+fbpnz560tDQbG5sDBw4AAOCxowgEQIeIIL5KeXn5mDFjAABkMllNTU1GRkZZWRkAwGAw6HT64cOHg4ODAwMDt23bJlHazMzMhQsXjhkz5vXr1wwGo6ioaNSoUYMHD1ZSUmppafn48eOkSZM0NTX/6etFRUV1dXWTJ0/m8/laWlolJSXPnj0zNTXV09MjkUgAAD6fv3Xr1urqam9v7+PHj0s0tuLiYnNz8yFDhly7dm327NkAgLq6Onl5eRwOV1FRQafTAQAaGhqTJ0/+8OGDjIyMkXSOp4gfkt5eDiP6Hrdu3cLhcDgc7sqVK+J/Kz09XVVVFQBAIBC4/7dgPiQk5NKlS5IOo7CwUEVFRU5ODj52gISHh8vJyQEAPCUpvC8pKdHV1QUAWFpawrdVCIT4IBlFSIOkStqFhubn58vIyPzyyy8S7RvlcDjjx48HAKxevfqzjyRVUqShiG6CZBQhJeIraRcaCnn69GlVVVVGRgb8o5+fX3NzM4ZhVCo1ISHh7NmzDQ0NPj4+mzdv9vX1DQsLCwkJ4XK5UVFRZmZmDAbjy4TiKynSUET3QTKKkB5xlPRfNRSSnZ3t7e0N26NGjcrPz8cwrKSkZPr06YsWLQoKCtq9e7eTk1NwcLClpeWsWbPa29u7Hps4Soo0FNEjoJp6hPRMnTpVT08vKirq5cuXgwcPnj59+mcXCD1HCARC1/XydXV1CQkJ2traZDI5LCyMz+e3t7dnZ2fn5eUpKSmtWbPG0tIyMzOzuLg4JCQkPT3d2tpaXl6+i7FNmDBhwoQJsO6+s7Pzy82kpaWl5ubmdXV1lpaWf/31F/IuQUgN2n6P6BabNm0KDAwEALi7uz99+lT0o7KyMqihTk5ODx8+/FfPkZaWltLS0tLSUh6Ph8fjGxsb79y5M2PGDOE78ba2Nn19fXhikjg4ODhA7T579iwcpGhfc+fOhRr6/PlzpKGI7oD2jSK6y7Zt2+Tk5EJDQxcuXCgaHzNmjJOTU2tr67179/Bdm98BAACYOHHiunXrAAAnTpyws7PT0tJKTExMSUmRlZXl8XheXl4FBQV+fn4SjW358uUyMjLHjh1zdHQUjWtoaHh4eMTGxv71118KCgoS5UQgPgOtRvsXQjW5d+8ePDrpzZs3tra2q1atevjwoXQ5jx8//ubNm2HDhqWkpAAAIiMj16xZY2VlFRcXN2TIEDU1NWdnZw8Pj66TqKioDB06FLaHDx+enZ3NYrHOnTvn6upqYGBgZWXl5eXV2dmZlJTk6+vb2Ni4e/duMY+Sd3BwcHZ23rt379q1a2EF57Nnz5YvX56WlrZ7926p16F2dnawERQUFBUVBQB48uSJmZnZP3mqIn5kevvhLOKbIqx0vH379rNnz+rr6318fKKjo2tra52dnaVImJ+fv2HDBtju7OxsaGiARh7v3r0Tvts5duxYZmZmTwxfGkpLS52cnGCbzWbX1dVVVVUJBILa2lphXAqEv+TNmzcjIiIoFAqDwXj48OHDhw97YNCIPgVajfYvWCwW9N24f/8+j8eLiIggEAh79uxZsmTJ1q1bpUj48eNHExMT2BYIBBEREfr6+uHh4Vu3bt2wYQMAgM1mFxYWfvn26ZtRUlIybdo02Mbj8WFhYSNGjMDhcElJScKRSwGTyYS/5MOHD7lcbnR0tPDMUUR/Az0b7V8oKChcv34dAHDnzh05ObmtW7euWrUqOTkZAEAgEGBDIoYMGVJSUgLbSkpKW7ZsAQAsX7581qxZsGY0NDTU2dm5RychGVpaWm/evIFtPB6/c+dOAEB6enp0dHRISIjUaZWUlOAveevWLXl5+Y0bN/bEYBF9EiSj/Rcul3vjxg0DA4Nnz57p6OgYGhpSKJT09PTP3sZ0zW+//Xbx4sXbt2+rqqpqaGgQiUSBQKCqqlpZWTl69GgMw6Kjo3vXU2769Om+vr7Xr1/X0tJSV1f/+PHjwIED/f399+/fn5KSAk/ik4iqqioVFRXRCJvNvn79+ty5c9++fQsAmDlzpvBsVER/AFmT9C/y8/MnTZoEAKBQKPAApSFDhqSmpnK53ClTppiYmBCJxKCgIPjGXEw4HM6dO3dKSkp8fX3b29s1NDTS0tLk5eVnzpx5//798vJy6FffWxQXFz979mzu3LksFmv27NltbW11dXWtra15eXkVFRU3btyQKFtlZeVvv/02aNCgq1evzpkzBwBQV1cnKyuLw+Ha29uJRCIA4Oeff4a7+hH9hV5+Nov4njh//jwAQEZGJiQkRPxvwTolHA4ndOeEEIlEOTk5HA539erVnh6puBQVFWlrawMA7t69Kxpvbm6GtVXC0ilxqK6uhstMeAZfTw8W0VdBMor4P0iqpF3XekrnBdVTdF3r+fTpU4kcTJCGIv4JJKOIzxFfScWpl+8tJRWnXl58JUUaiugCJKOIryCOkorpOYL1hpKK7zkijpIiDUV0DZJRxNfpWknF11DIt1RSSX2buvaCQhqK+FeQjCL+EV9fX6ikkZGRovGysjKooatWreLxeGJm+zZKKp333ZMnT6Bzir+/v2i8vr4elqjOmTPnX635EP0WJKOIrjh//vyXqzCBQODm5ibmOlSUq1ev4nA4PT09Go3Wo8P8Hzo7O6HqWVpadnZ2SvTd8PDwCRMmwEpWIQKBYMeOHWgdiugaVAzah1m5ciVsPH78+Pnz5wCAiIiIlStXOjg4JCUlJSUlOTg4rFixIiIiQorkAoHA3d29sLBQX18fbocMCgpav379kiVLioqKpk6disfjly9f/v79e/Fzbtu27c6dOwkJCZs3b4aRU6dOFRYWAgAuX768du1aOzu70tLSpKQkR0dHBweHd+/ewctOnz5dUFAAAKiqqjp48CAAoKioyNHRcfXq1QEBAXl5eY6Ojk5OTvfv3w8MDLS2tn7+/Ln4vk0Yhu3atSs6OtrIyKixsREGmUzm3LlzL168eOrUKRaLtW/fvqCgIPFnKkT4d/To0SP4dxQVFWVpaRkeHo5h2Pr167du3bpy5Uo2my1FcsR3Aqpi6sO0t7fDBpvNlpGRaWlpMTY2trGxIZPJhw8f1tPT2759+6hRo44dOya0IxKfyMhITU3Ny5cv83g8DodDp9PnzZvn6uoaFhaWmpoaGRkZFBSUlZWVlJQ0efJk8dO6urqKjpzJZLJYLBqNtnjxYnd39/j4+PDw8PT09D///LOzs3PDhg2wAorJZPJ4PAAAn89nMBjNzc2ampp37twZNGiQhYWFo6NjSEiIsrLyvHnzEhISli1bJulMBw8e7O/vDw+gp9Foampqx48fd3R0pNFodXV1VlZWUlcQiP4d4fH4lpYWU1NTNpvd0dHBYDBqamoSEhLWr1/f2NgoNLhC9DmQjPZhuFyum5sbAKCsrGzjxo337993d3cHAKSmpk6dOnXu3LkrVqxQUlKStFAHUlhYOHPmTACArKxsbW1tVlbW8uXLAwICHj58GBUVpaKisnjxYgzDXrx4IUVyMpkMR56VlTVnzpyKigq4aktNTZ0+fXpycrKCgoKCgkJHR4fwK6dPn9bU1KTT6ZqamkFBQZ6engCAqqoqbW1t+DD048eP0pVgCmeKx+Obmprevn07btw4Ho83ffr02NhYHA5HoVC2bdtmaGi4b98+SZNzOBw409LS0k2bNgn/jgAAKioq6urqS5YsUVJSQhrat+nlhwqIbiD0agsJCXny5AlsZ2ZmwptEAoHQ0NBQU1Njbm4uRfIbN26EhoZ+GU9MTDxx4oSlpSWHw0lJSXFxcenOyA8ePPj+/XvYfvbs2c6dOzEMmzdvHoZhPB5v4cKF8KNDhw7l5uZiGFZeXg6vwTCMQqHY2NjU1tZiGFZTU7Ns2bLGxkYpBnPz5s179+6JRmbMmOHm5rZ27do5c+a0tbXBoHAwEiGcaXBwcFhYGGw/ffo0JCQkPz/f3d2dz+fv3r07KipKiuSI7wS0Gv1B4PP5t27dGjBgwIULF/bv35+WlqapqRkTE6OmpjZixAgKhZKbm2ttbS1+QgKB4ODgoKCgwOPxdHR02tvbCwsLjY2NX79+/euvv2ZmZsbFxRGJxHHjxnVz5I2NjX/99Vd+fn58fPzOnTuzs7MtLCz8/Pw6OjpsbW2/+pXAwEATE5O1a9e6u7unpaXp6Ohs2rRpz549qampUjy+WL58ub29vaKiIpwpnU5/+fKlQCDIzc1NTEzMz89/9+6djo6OpGXyZDJ5wIABohEej3fr1i0zM7OMjAwWizVy5MiysrKMjIyGhobhw4dLOmzE9wOyJunD5OTkTJ06FQBQW1srIyPD5/MbGhqoVCoAYNCgQZMnT05MTBQIBFOmTJk1a1ZVVdXDhw+XL18ufn46nX737t26ujpvb28Wi6WgoJCSkqKlpTVt2rTExMSoqCg7O7vZs2d3Z+Tl5eXq6uoCgaC0tBS+ZtHT05swYUJKSoqcnNyMGTPg9eXl5To6OgMHDmQymTU1NcrKylwut6qqCn46bNgwEokEAMDj8ebm5lKMh06nP3v2LCMj48KFC52dnUOGDIHBlpYWDodz7dq1ZcuWmZmZwe2l4kAmk83NzeXk5Pz9/S0tLYHI3xGPx6uoqAAA/PTTTzweLzc3d+LEiaNGjZJi2Ijvhd5eDiO+BT4+PgAAPB7/4MED8b+VkZGhqqoqIyMTHx8vGq+trYXx4ODgHh5oL0EkEuHTyZs3b4rGmUwmjPv4+Iif7dOnT6NHjwYATJkypaWlpacHi/juQDLaX5BUSbOzs9XV1cE/1ClduHABAIDD4W7cuPEfDPab0nWdkjjn3YuCNLQfgmS0HyG+knatoZAfQ0nFqfUUX0mRhvZPkIz2L8RRUnE0FNLXlVT8enlxlBRpaL8FyWi/o2slFV9DIVBJJXV6/h6Q1HOkayVFGtqfQTLaH/H29gYAyMrKxsbGisaLi4ul8ByRzjO/d5HOt0noYHLhwgXROJ1Oh6/ap02bRqVS/4PxIr5rkIz2U3x8fGbNmvWZgvB4vNWrV0vhOeLn5wcA0NfX7+jo6NFh/idwOBy4cpTCtyk8PNzQ0JBIJH4WP3fuHFqH9lvwR48e/a/2UiG+V/7888+kpCQdHR0ajTZ16tTs7Oxdu3ZVV1fPmjUrISFBRkbm2bNnVlZWcOUlDqamppqamkePHt2zZw88WPTIkSN6enqampp79+79888/7969W1NTI90mU/Hx9/eXk5PT09Orq6s7ceLEggULGhoatm7d+ueff5aVlRkZGc2dOzc7O5tKpRIIhPr6+r///nvgwIHi57958+arV6+GDh06ePDgn3766dWrV4cOHQoPD9fQ0BgzZkxRUVF0dPTw4cP19fX/uzkivkd6W8cR35r29nZzc3N4z97R0UGlUpubm/Py8g4fPszlcktKSjAMO3jwYFpamhTJhbWP+/bty8vLE1ZS7tq1q7y8vIdm8I+cOHEiPT0dw7BPnz5t3rwZTq21tVUgEFhYWBQWFh49elTq5NXV1XZ2drANf7eSkhIul9vQ0AArvqhUKp1Ot7W17ZnJIPoOyCiv31FVVWVkZITH4wEAysrK165d09DQkJGRAQDIysqOGzcOw7APHz6MHTtWiuQ1NTVubm5ubm5xcXENDQ3x8fEAACqV2traCu+j/2vOnTvn5uYGzfSuXr2qoaFBJpOtrKzs7e1xOFxNTc327dsDAwOlyFxUVCSsqlJWVr5+/fq4ceNkZWUzMzMnTZo0fvz4hw8fhoeHUyiUnpwPok/Q2zqO+NaQyWQCgfBZ8MOHD4cPH8YwTCAQHDhw4I8//pAuuehq9OPHj7B9+vRp6da2kvLZalQY53K5osYilpaWUiTPzMzcs2fPZ8H8/HwHBwfo4xcXF5eVlWVlZSXV2BF9GGRN0u/Q19eXl5e/du3a+PHjORxOTU2NnZ1dZmZmVVVVQUGBj4+PoaGhjo5OXV2dpGYcn0GhUCoqKhYvXvzu3bsDBw701PjF58aNG1OmTMnIyBg5ciQej09OTv748aOGhoZ085o2bdqJEydCQ0N1dHQUFRWLi4sHDx7s6+t79OjRgoICVVVVgUAQEhKycePGHp8I4jsHWZP0RwQCwbVr1yorKz09PZlM5oABA9LT0wEABgYG4eHhAICZM2eamJhIYTuUm5s7ZcoUAEBpaammpqZAIBgwYEBzc7OhoWGPz+JLysrKtLS01NXVWSxWaWnpwIEDDQ0NMzMzKRTKvHnzVFVVU1NTGQyGhYWFvLy8FPk5HE5YWNjr168vXbrU2tpaW1tbX18PAFBXVx84cOD169f3798/fvz4np4W4runt5fDiF4Aeo7g8fiUlBTReEFBgaysrKysrNAZEyHKp0+f4P7Qq1evisZZLBaMS+RggvhhQDLa7+i6Tkk6L6j+QNd1SpI6mCB+JJCM9i/EqfVESvol4tR6IiXttyAZ7UeIXy+PlFQU8evlkZL2T5CM9hck9RxBSgqR1HMEKWk/BMlov0BSDYUgJZXOtwkpaX8DyeiPD4vFMjAwABL6NkGgF9TQoUOZTOZ/NLzvGVdXVyCVbxP0glJQUCgrK/uPxob4fkAy2ocRHm787Nmzv//+G8OwtLS0pUuXbt68OSEhoaCgYPny5QQCISUlJT09fdOmTZJqKOTs2bPFxcXCvo4cOVJdXY1h2L1791xcXJYtW1ZZWXnt2rUZM2ZQKJQemtl/S25u7qVLl2B77dq1GIa1t7cfOnRo7ty5MCgQCFxdXT08PBgMhru7u3Ted2FhYTExMTA//GNkZCSGYW/evFm5cqWXl1d6evrjx4/hQaHdnxSiF0FVTH2YxsZG2GAwGHJycgwGo7KyctOmTUuXLgUArFixIiAgQFVV1d7ePiYmZubMmdL14uHhIdoXlUplsVgsFgsecRwaGpqcnGxjY1NcXMzlcntiWv85HA6HTqfDdnNzM5PJxOPxe/bsKSwshMGQkJDJkyfn5OQoKSn5+/tL1ws8hDUgIAD+kcFgAADa29srKyvXrFmzZMkSAIChoSGFQuns7OzmjBC9C5LRPgyPx3NzcwMAlJWVubq6Xr58edy4cXFxcU+ePHF1daVSqdra2gAAPp/f/b6IRCLsKy0tzcrKKi8vb8WKFZcuXXr8+HFMTMzgwYO738W3JCoqqq6uDgDQ0NAQHR09adIkoRVLQ0NDVFTU7du3c3Jyut8Rh8OBv1tpaenGjRtv3LgxcuTIV69ePXjwYMOGDRYWFt3vAtHrIBntw8jKyl6/fh0A8Mcff+DxeGhr5ODgwGazHR0dcTgcn8/H4/FYT9T7jho1Cvbl7u5uaGgIX7zs3r3b0NAwNDR0165d3e/iW2JtbQ1foFlZWcFloxAvLy8NDY0rV64UFBSQSKRhw4Z1pyN5eXn4u4WEhMjJycGlvaOjI4vFIhAISEZ/DJCM/iDw+fx79+7h8XhlZWUKhWJiYqKmpubr66ulpTVt2rSe7au2tra6ujo7O3vmzJkpKSlTpkx5//79p0+fUlNTbW1tlZSUera7/5rY2Nhx48ZVV1c3NTUlJyefPn2axWLRaLTCwkItLa0e7IjP54eEhOBwOBUVFRKJZGpqWlJSUlZWJhAIJk6cqKGh0YN9Ib4lyJqkD5Oamgr95GtqanA4HIvFGjZs2MuXL1VVVc3NzXE43OvXr1ks1uLFi6GdaI/0lZeXp6ury+PxFBQUYmNjDQwM5syZk5KSAk06Fi9erKKi0v2p/adQqdSGhgboIZKRkTFixAhVVdX4+HgOhyMvL29jYwMA4HA4+fn53f8fKCMjAz6VJpFIOByOy+Xq6enFx8erqqqamZm9f/++oqICADBnzhwdHZ1uzwzROyAZRSAQiG6B3O8RCASiWyAZRSAQiG6BZBSBQCC6BZJRBAKB6BZIRhEIBKJbIBlFIBCIbvH/ANLgAzewfHi8AAACYXpUWHRyZGtpdFBLTCByZGtpdCAyMDIyLjAzLjUAAHicVZPLaxNRFMa/mUkz02bSNs1r8n40SWeaR5s23Ukz0oXQinsFV65cBBV040IE0YhLQXDhTruo4EakK+kMdOXOpSAI4t7+BYpzJ3NOrpe58JvvfOfcM+cmF2cffiBYScyWEuy9YI+C/VjRrabQYgURvnz/zkTs27euPZg0inqUUUbXgmLYwqhYStyoBxSzVAKNYzGmBaY4k85kMC0yLTElqLDJUpJpmWmFaZUSUiytMaWZMmTLspRjyjNZZCuwVGQqMZXJViGocqxGUp2lBlOTaZ2pRQltgg7HNkiyCRyObTJ1Kdgj6HNswLTFtE22IUs7TLtMowQ0IAVkgTqUPtQc1CLUOtQ+tBVobWhbiLWxkEJ8CL0Do4NFG0sFJOowyzBrMDswd5B0sFzBag8pC6kq1ipIZ5FpI1tC1kG+ikLwbKIwRKWPyi6qLdRHaNhoDrHeR7uDDQd2D/YATg/dIXrbyCD/TJ39pMO1d/D21Wfg47F4SQ+m7um57gu++zrOfFB84Z2eTz3B375e9Ym/P/m7f6n0cxz+SWon7svjI1fwn9+G8IS5N64/96mOyH336cSd15+6Uh1v7p/yuVTz6OGhG+SG+pd7vzzjQpP8euhxJk/HQa7cT+hvvjE86jOqKX/XmHJJF2eR3rq57JYfmfuky/3QHKJ+Qv+Vw/c+1ZnNcyrP05Xm4Es9e1Ku/L3yrNj//5zns6VzozsaS/OU/a501y7Nis6K6nAPVFP0Rp5onp5011LNGUd+X6rvS/M8E5z7B5sE+ksidAzrAAADk3pUWHRNT0wgcmRraXQgMjAyMi4wMy41AAB4nH1Xy27cMAy871foB9YQH5KsQw/JbpAURTdAm/Yfeu//o6QcUxQkdDcHmzuWhhxy5FyCfn7cv/35G+yD98slhPifv1pr+E0xxsv3oBfh+eX16yPcPp6ez8jt/dfj42dIFBLKM/IdsU8f79/PCIRHuMYtwo45t6v2Cf0i3N5ev8CJx/AWeENkKhyuuAECoYMbkMItyM+RYloC8QSyAK+wxbJXzO0qx5wdkk5kkr2vtGGMyGWF5BOZBRk3rgWU0lbSnpk7Lp24Iri04Z4ipUAb7FB36Lh84nbdWXKgmnbZWQrAmNkhy4msipTfc6yxrPLerfJxSCdtFImiW7MaEgRptZw3B9MX0Cd+nTMH0wdUIMd0saxJBKxUTaO5UGAagYokgExFnrrOWYGJBPlYtZRcpRjSewkSSRd2rAkFZajrou9MK9glMeHKSJXD3CRgWkH18l8XaZlY2MQShkSZcNFSYGohDMVaLIumF+LQ/DNZ7INHsqyltVrV5EL2GiwWNbUwtc6ScWapQJQGL+iHH00sYXfray52N6mwDB2w2N6kwn3ogLkB0LTCNljSTggpl2X+JpZaoDOpubPRxCLwNjW3FZlUhKP7zJ1N3fvIt+DK0kwr4iGvOS0ysWgYrcX+JhZlbxiLApCpRcW31WJ7E4t0rpwJLoplalFVbC/WYl1Ti0cfXBTL1GIYPGvOi00uxoHtTJZNLSZ/pi2Q/ahibxizAmxacRoKMOfPJhYPk7UoFZtYXIZmWRAwtXgfDGtxFLCpxXU43hZlNbHSMFoLpGmVYBzYmWwysRIORryAmliJvGNdZ8tKptbL4z686hwvP8/vj3t/+dFv97gj0H2k3aN7U9F7cu8j8quredZfnbuW497qvLf7/nxt9/15UEbsj7JGz80KYAt0PUA5Jo9QktklAcqyuGKD0tzdVIHyrD6gRMGPCChVYeOsu1UPXTbYikfOXBGPSHc7pM9Ix/AR6QqjEpY0+tjpyah5dDNGpSy8+2hg47z7c6geEWfLjXP1pt4E9menHu6aSq8oUWsCf77wEekMqbUC+72Us74r9Ug5It0kaD8iXRtqLTHMcTwiva25NSE4t2VsbSmz4SwNlKYzOeWsptUdUjkLTbdXa2DfGurHSsFZoHIWCs6U6mfE+KTWx+gwqTUyjyOvizjD0HH1w6n35381cn35Bx4PbnnQU9o0AAACvXpUWHRTTUlMRVMgcmRraXQgMjAyMi4wMy41AAB4nG1Wu24cMQz8lZQ+ZG8hkdQzVZDmmhjpjSscIF0OZxhO54/PrJ5OxMa7OyZHM6RO1NPj52yuD0/fMuPvJVt3PZWvUD7l+LpkMtfTAcYChgrGglkqGMUKsgV6yc6Uh4TKZiuba2xS2UzN5BpDrgowNUioBEkqqG/sUmm5PNi3TFszU6MPNbOh3FJTRaWiLVWqhpbJlVd8fVSDTKU8zSa1NXxla5qbjqrVtqLZWEtRK8LNvG0Fouun94ez2Y2N5D1vZvtytrsJMfF2vHjjfYFC8MluiHTWccFot5xc2o4XskyAeCdjyP2b2ch4t9Gm+DFqQoNLdhLyAghv3hxLTvoBzSi3M1kXVHr8zzB/DBoIbDB7kB7OXDyoIFSI0zakm11SsNsIoJ1IBCWC1kDHtzVs3Db0QYLnktEYOjC09ZShXw5ODpOjAyPC7RSd4cnRSbuXHtC/u49ZkN6C2ZRhf5gbHVYaPBvQmdZiT+6OzJjetrWRs489a+nZpOnICOn6Bku3PrdfL/jcRCNmKeh56duM6W05L42ae3Fk/d+ZSTOQHjL0DZa2687Ltju3fXfant/utx+v95ds9tv991d8fX9+efxz+/nrdTfZriBnWkHrMiuhIcuKSnYrSCZ7hSDmsKIhxxWMOSmyCGevsljEkaWsZnHyr7BDGRRzEnAqKksCVvw5HM+KEMEYUYRgRcUiMeaBAjvMMkWIwRBRZBMOfAVOGFor7DHYFH2CyaZwYGtoTQSJYpIsBqwiG0I0kwGzVVnSYjorJIwRpyhJGIcKiWAIKyQeA06JNhjSKwxqrZMQopgUUCsmJWJ4KySEwa+UBPcJBQWseCSPa4KyosO8V6zjvqBwJFx+lGDBtUKBYUbx6CwuUopHh0uFQoJo7SdJ738BVj60Hh3moEkAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "N N N 0 0\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 0 22 1.0\n", + "BUILD BONDS: bond 0 24 1.0\n", + "BUILD BONDS: bond 0 52 1.0\n", + "C H H 1 1\n", + "BUILD BONDS: bond 1 22 1.0\n", + "H H H 2 2\n", + "BUILD BONDS: bond 2 28 1.0\n", + "H C C 3 3\n", + "BUILD BONDS: bond 0 3 1.0\n", + "BUILD BONDS: bond 3 8 1.0\n", + "BUILD BONDS: bond 3 20 1.0\n", + "BUILD BONDS: bond 3 42 1.0\n", + "C C C 4 4\n", + "BUILD BONDS: bond 4 13 1.0\n", + "BUILD BONDS: bond 4 16 1.0\n", + "BUILD BONDS: bond 4 35 1.0\n", + "BUILD BONDS: bond 4 50 1.0\n", + "H H H 5 5\n", + "BUILD BONDS: bond 5 51 1.0\n", + "H H H 6 6\n", + "BUILD BONDS: bond 6 41 1.0\n", + "C H H 7 7\n", + "BUILD BONDS: bond 7 36 1.0\n", + "H H H 8 8\n", + "BUILD BONDS: bond 3 8 1.0\n", + "H H H 9 9\n", + "BUILD BONDS: bond 9 41 1.0\n", + "C H H 10 10\n", + "BUILD BONDS: bond 10 51 1.0\n", + "H H H 11 11\n", + "BUILD BONDS: bond 11 36 1.0\n", + "C H H 12 12\n", + "BUILD BONDS: bond 12 24 1.0\n", + "H C C 13 13\n", + "BUILD BONDS: bond 4 13 1.0\n", + "BUILD BONDS: bond 13 25 1.0\n", + "BUILD BONDS: bond 13 27 1.0\n", + "BUILD BONDS: bond 13 36 1.0\n", + "H H H 14 14\n", + "BUILD BONDS: bond 14 23 1.0\n", + "C H H 15 15\n", + "BUILD BONDS: bond 15 18 1.0\n", + "H H H 16 16\n", + "BUILD BONDS: bond 4 16 1.0\n", + "H H H 17 17\n", + "BUILD BONDS: bond 17 44 1.0\n", + "C C C 18 18\n", + "BUILD BONDS: bond 15 18 1.0\n", + "BUILD BONDS: bond 18 28 1.0\n", + "BUILD BONDS: bond 18 31 1.0\n", + "BUILD BONDS: bond 18 42 1.0\n", + "H H H 19 19\n", + "BUILD BONDS: bond 19 24 1.0\n", + "H H H 20 20\n", + "BUILD BONDS: bond 3 20 1.0\n", + "C H H 21 21\n", + "BUILD BONDS: bond 21 33 1.0\n", + "H C C 22 22\n", + "BUILD BONDS: bond 0 22 1.0\n", + "BUILD BONDS: bond 1 22 1.0\n", + "BUILD BONDS: bond 22 36 1.0\n", + "BUILD BONDS: bond 22 47 1.0\n", + "H C C 23 23\n", + "BUILD BONDS: bond 14 23 1.0\n", + "BUILD BONDS: bond 23 26 1.0\n", + "BUILD BONDS: bond 23 33 1.0\n", + "BUILD BONDS: bond 23 52 1.0\n", + "H C C 24 24\n", + "BUILD BONDS: bond 0 24 1.0\n", + "BUILD BONDS: bond 12 24 1.0\n", + "BUILD BONDS: bond 19 24 1.0\n", + "BUILD BONDS: bond 24 41 1.0\n", + "C H H 25 25\n", + "BUILD BONDS: bond 13 25 1.0\n", + "H H H 26 26\n", + "BUILD BONDS: bond 23 26 1.0\n", + "H H H 27 27\n", + "BUILD BONDS: bond 13 27 1.0\n", + "C C C 28 28\n", + "BUILD BONDS: bond 2 28 1.0\n", + "BUILD BONDS: bond 18 28 1.0\n", + "BUILD BONDS: bond 28 38 1.0\n", + "BUILD BONDS: bond 28 45 1.0\n", + "H H H 29 29\n", + "BUILD BONDS: bond 29 43 1.0\n", + "H H H 30 30\n", + "BUILD BONDS: bond 30 51 1.0\n", + "C H H 31 31\n", + "BUILD BONDS: bond 18 31 1.0\n", + "H H H 32 32\n", + "BUILD BONDS: bond 32 52 1.0\n", + "H C C 33 33\n", + "BUILD BONDS: bond 21 33 1.0\n", + "BUILD BONDS: bond 23 33 1.0\n", + "BUILD BONDS: bond 33 40 1.0\n", + "BUILD BONDS: bond 33 51 1.0\n", + "C H H 34 34\n", + "BUILD BONDS: bond 34 42 1.0\n", + "H H H 35 35\n", + "BUILD BONDS: bond 4 35 1.0\n", + "H C C 36 36\n", + "BUILD BONDS: bond 7 36 1.0\n", + "BUILD BONDS: bond 11 36 1.0\n", + "BUILD BONDS: bond 13 36 1.0\n", + "BUILD BONDS: bond 22 36 1.0\n", + "H H H 37 37\n", + "BUILD BONDS: bond 37 42 1.0\n", + "C H H 38 38\n", + "BUILD BONDS: bond 28 38 1.0\n", + "H H H 39 39\n", + "BUILD BONDS: bond 39 43 1.0\n", + "H H H 40 40\n", + "BUILD BONDS: bond 33 40 1.0\n", + "C C C 41 41\n", + "BUILD BONDS: bond 6 41 1.0\n", + "BUILD BONDS: bond 9 41 1.0\n", + "BUILD BONDS: bond 24 41 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "H C C 42 42\n", + "BUILD BONDS: bond 3 42 1.0\n", + "BUILD BONDS: bond 18 42 1.0\n", + "BUILD BONDS: bond 34 42 1.0\n", + "BUILD BONDS: bond 37 42 1.0\n", + "H C C 43 43\n", + "BUILD BONDS: bond 29 43 1.0\n", + "BUILD BONDS: bond 39 43 1.0\n", + "BUILD BONDS: bond 43 44 1.0\n", + "BUILD BONDS: bond 43 49 1.0\n", + "C C C 44 44\n", + "BUILD BONDS: bond 17 44 1.0\n", + "BUILD BONDS: bond 41 44 1.0\n", + "BUILD BONDS: bond 43 44 1.0\n", + "BUILD BONDS: bond 44 48 1.0\n", + "H H H 45 45\n", + "BUILD BONDS: bond 28 45 1.0\n", + "H H H 46 46\n", + "BUILD BONDS: bond 46 52 1.0\n", + "C H H 47 47\n", + "BUILD BONDS: bond 22 47 1.0\n", + "H H H 48 48\n", + "BUILD BONDS: bond 44 48 1.0\n", + "H H H 49 49\n", + "BUILD BONDS: bond 43 49 1.0\n", + "H H H 50 50\n", + "BUILD BONDS: bond 4 50 1.0\n", + "H C C 51 51\n", + "BUILD BONDS: bond 5 51 1.0\n", + "BUILD BONDS: bond 10 51 1.0\n", + "BUILD BONDS: bond 30 51 1.0\n", + "BUILD BONDS: bond 33 51 1.0\n", + "H C C 52 52\n", + "BUILD BONDS: bond 0 52 1.0\n", + "BUILD BONDS: bond 23 52 1.0\n", + "BUILD BONDS: bond 32 52 1.0\n", + "BUILD BONDS: bond 46 52 1.0\n" ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "for mol in newcell.moleclist:\n", - " print(mol.formula)\n", - " if not mol.iscomplex:\n", - "# try :\n", - "# print(mol.possible_cs)\n", - "# except:\n", - "# print(\"No possible_cs assigned\", mol.formula)\n", + "for mol in newcell.moleclist: \n", + " if not mol.iscomplex: \n", " try :\n", " print(mol.protonation_states)\n", " except:\n", - " print(\"No protonation_states assigned\", mol.formula)\n", - " else :\n", - " for lig in mol.ligands:\n", - "# try :\n", - "# print(lig.possible_cs)\n", - "# except:\n", - "# print(\"No possible_cs assigned\", lig.formula)\n", - " \n", - " try :\n", - " print(lig.protonation_states)\n", - " except:\n", - " print(\"No protonation_states assigned\", lig.formula)\n", - "# for met in mol.metals:\n", - "# try :\n", - "# print(met.possible_cs)\n", - "# except:\n", - "# print(\"No possible_cs assigned\", met.label)" + " pass\n", + " for idx, (atom, atom_rd) in enumerate(zip(mol.atoms, mol.rdkit_obj.GetAtoms())):\n", + " rdkitatom = mol.rdkit_obj.GetAtomWithIdx(idx) \n", + " tmp = rdkitatom.GetSymbol()\n", + " print(atom.label, atom_rd.GetSymbol(), tmp, idx, atom_rd.GetIdx())\n", + " for b in rdkitatom.GetBonds():\n", + " bond_startatom = b.GetBeginAtomIdx()\n", + " bond_endatom = b.GetEndAtomIdx()\n", + " bond_order = b.GetBondTypeAsDouble() \n", + " print(\"BUILD BONDS: bond\", bond_startatom, bond_endatom, bond_order)\n", + " # For each atom, set the property \"molAtomMapNumber\" to a custom number, let's say, the index of the atom in the molecule\n", + " atom_rd.SetProp(\"molAtomMapNumber\", str(atom_rd.GetIdx()))\n", + " display(mol.rdkit_obj, )\n", + "# mol.create_bonds(debug=debug) " + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "77b28b23", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "------------- Cell2mol CELL Object ----------------\n", + " Version = 0.1\n", + " Type = cell\n", + " Name (Refcode) = INOVAL\n", + " Num Atoms = 264\n", + " Cell Parameters a:c = [10.9964, 14.8813, 16.6887]\n", + " Cell Parameters al:ga = [80.719, 72.58, 70.917]\n", + " # Molecules: = 9\n", + " With Formulae: \n", + " 0: Cl6-Fe2 \n", + " 1: H10-C4-O \n", + " 2: H2-O-Cl3-Fe \n", + " 3: H10-C4-O \n", + " 4: H2-O-Cl3-Fe \n", + " 5: H36-C16-N \n", + " 6: H36-C16-N \n", + " 7: H36-C16-N \n", + " 8: H36-C16-N \n", + "---------------------------------------------------\n", + " # of Ref Molecules: = 9\n", + " With Formulae: \n", + " 0: H2-O-Cl3-Fe \n", + " 1: H10-C4-O \n", + " 2: Cl6-Fe2 \n", + " 3: H10-C4-O \n", + " 4: H2-O-Cl3-Fe \n", + " 5: H36-C16-N \n", + " 6: H36-C16-N \n", + " 7: H36-C16-N \n", + " 8: H36-C16-N " + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell" ] }, { "cell_type": "code", "execution_count": 28, + "id": "6c43e8ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newcell.error_prepare_mols" + ] + }, + { + "cell_type": "code", + "execution_count": 29, "id": "ff13834d", "metadata": { "scrolled": false @@ -3698,13 +6759,7 @@ "BUILD BONDS: atom 37 H\n", "BUILD BONDS: bond 35 37 1.0 C H H\n", "BUILD BONDS: atom 38 C\n", - "BUILD BONDS: bond 35 38 1.0 C C C\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "BUILD BONDS: bond 35 38 1.0 C C C\n", "BUILD BONDS: bond 38 39 1.0 C H H\n", "BUILD BONDS: bond 38 40 1.0 C H H\n", "BUILD BONDS: bond 38 52 1.0 C H H\n", @@ -3743,7 +6798,13 @@ "BUILD BONDS: bond 47 50 1.0 C H H\n", "BUILD BONDS: atom 51 H\n", "BUILD BONDS: bond 16 51 1.0 C H H\n", - "BUILD BONDS: atom 52 H\n", + "BUILD BONDS: atom 52 H\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "BUILD BONDS: bond 38 52 1.0 C H H\n", "CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N\n", "BUILD BONDS: atom 0 N\n", @@ -4005,14 +7066,14 @@ "Error in Create Bonds. Atom labels do not coincide. GMOL vs. MOL: H C\n", "BUILD BONDS: atom 38 C\n", "BUILD BONDS: bond 10 38 1.0 C C C\n", - "BUILD BONDS: bond 38 39 1.0 C H H\n", - "BUILD BONDS: bond 38 47 1.0 C C H\n" + "BUILD BONDS: bond 38 39 1.0 C H H\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ + "BUILD BONDS: bond 38 47 1.0 C C H\n", "Error with Bond EndAtom C H\n", "BUILD BONDS: bond 38 52 1.0 C H H\n", "BUILD BONDS: atom 39 H\n", @@ -4191,9 +7252,151 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, + "id": "a3f78dcd", + "metadata": {}, + "outputs": [], + "source": [ + "from cell2mol.classes import *" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "222df538", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cl6-Fe2\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "H2-O-Cl3-Fe\n", + "BUILD BONDS: atom 0 O\n", + "()\n", + "BUILD BONDS: atom 1 H\n", + "()\n", + "BUILD BONDS: atom 2 H\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "H2-O-Cl3-Fe\n", + "BUILD BONDS: atom 0 O\n", + "()\n", + "BUILD BONDS: atom 1 H\n", + "()\n", + "BUILD BONDS: atom 2 H\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n", + "BUILD BONDS: atom 0 Cl\n", + "()\n" + ] + } + ], + "source": [ + "for mol in newcell.moleclist:\n", + " if mol.iscomplex:\n", + " print(mol.formula)\n", + " for lig in mol.ligands:\n", + " for idx, atom in enumerate(lig.atoms):\n", + " # Security Check. Confirms that the labels are the same\n", + " if debug >= 2: print(\"BUILD BONDS: atom\", idx, atom.label)\n", + " rdkitatom = lig.rdkit_obj.GetAtomWithIdx(idx) \n", + " tmp = rdkitatom.GetSymbol()\n", + "\n", + " if atom.label != tmp: \n", + " print(\"Error in Create Bonds. Atom labels do not coincide. GMOL vs. MOL:\", atom.label, tmp)\n", + " else:\n", + " print(rdkitatom.GetBonds())\n", + " # First part. Creates bond information\n", + " for b in rdkitatom.GetBonds():\n", + " print(b)\n", + " bond_startatom = b.GetBeginAtomIdx()\n", + " bond_endatom = b.GetEndAtomIdx()\n", + " bond_order = b.GetBondTypeAsDouble()\n", + " \n", + " if debug >= 2: print(\"BUILD BONDS: bond\", bond_startatom, bond_endatom, bond_order, \n", + " lig.atoms[bond_startatom].label, lig.atoms[bond_endatom].label, \n", + " lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol())\n", + "# if (lig.subtype == \"ligand\") and (bond_startatom >= lig.natoms or bond_endatom >= lig.natoms):\n", + "# continue\n", + "# else:\n", + "# if lig.atoms[bond_endatom].label != lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol():\n", + "# if debug >= 1: \n", + "# print(\"Error with Bond EndAtom\", \n", + "# lig.atoms[bond_endatom].label, lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol())\n", + "# else:\n", + "# if bond_endatom == idx:\n", + "# start = bond_endatom\n", + "# end = bond_startatom\n", + "# elif bond_startatom == idx:\n", + "# start = bond_startatom\n", + "# end = bond_endatom\n", + "\n", + "# ## This has changed. Now there is a bond object, and we send the atom objects, not only the index\n", + "# new_bond = bond(lig.atoms[start], lig.atoms[end], bond_order) \n", + "# atom.add_bond(new_bond)\n", + "# print(new_bond)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, "id": "4167f2dd", "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'met1' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [32]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmet1\u001b[49m\u001b[38;5;241m.\u001b[39mcheck_connectivity(met2, debug\u001b[38;5;241m=\u001b[39mdebug)\n", + "\u001b[0;31mNameError\u001b[0m: name 'met1' is not defined" + ] + } + ], + "source": [ + "met1.check_connectivity(met2, debug=debug)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "858555da", + "metadata": {}, + "outputs": [], + "source": [ + "met1.radii" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "83d65b32", + "metadata": {}, "outputs": [], "source": [] }