diff --git a/bluephos/modules/octahedral_embed.py b/bluephos/modules/octahedral_embed.py deleted file mode 100644 index c1dd881..0000000 --- a/bluephos/modules/octahedral_embed.py +++ /dev/null @@ -1,174 +0,0 @@ -import os.path - -from rdkit import Chem -from rdkit.Chem import AllChem, rdchem, rdChemReactions, rdmolfiles, rdmolops - -CARBENE_SKELETON_SMARTS = ( - "[Ir]135(<-[CH0](~N(~*)~*~2)~N(~*~2)~c~c~1)(<-[CH0](~N(~*)~*~4)~N(~*~4)~c~c~3)(<-[CH0](~N(~*)~*~6)~N(~*~6)~c~c~5)" -) - - -def make_bonds_dative(mol, target_elem="Ir"): - """ - Modifies a molecule to change specific bonds to dative based on the element targeting. - - Parameters: - mol (Mol): The RDKit molecule object to modify. - target_elem (str): Target element symbol for bond modifications. - - Returns: - Mol: The modified RDKit molecule with dative bonds where applicable. - """ - editable_mol = rdchem.RWMol(mol) - - # If you don't make a list, it loops infinitely over the bonds it's creating - for bond in list(editable_mol.GetBonds()): - iridium = None - nitrogen = None - carbene = None - if ( - bond.GetBeginAtom().GetSymbol() == target_elem - and bond.GetEndAtom().GetSymbol() in ["N", "P"] - and bond.GetEndAtom().GetFormalCharge() == 1 - ): - iridium = bond.GetBeginAtom() - nitrogen = bond.GetEndAtom() - start_idx = bond.GetEndAtomIdx() - end_idx = bond.GetBeginAtomIdx() - elif ( - bond.GetEndAtom().GetSymbol() == target_elem - and bond.GetBeginAtom().GetSymbol() in ["N", "P"] - and bond.GetBeginAtom().GetFormalCharge() == 1 - ): - iridium = bond.GetEndAtom() - nitrogen = bond.GetBeginAtom() - start_idx = bond.GetBeginAtomIdx() - end_idx = bond.GetEndAtomIdx() - if ( - bond.GetBeginAtom().GetSymbol() == target_elem - and bond.GetEndAtom().GetSymbol() == "C" - and bond.GetEndAtom().GetTotalValence() == 3 - ): - iridium = bond.GetBeginAtom() - carbene = bond.GetEndAtom() - start_idx = bond.GetEndAtomIdx() - end_idx = bond.GetBeginAtomIdx() - elif ( - bond.GetEndAtom().GetSymbol() == target_elem - and bond.GetBeginAtom().GetSymbol() == "C" - and bond.GetBeginAtom().GetTotalValence() == 3 - ): - iridium = bond.GetEndAtom() - carbene = bond.GetBeginAtom() - start_idx = bond.GetBeginAtomIdx() - end_idx = bond.GetEndAtomIdx() - - if nitrogen is not None: - # Replace N+ - Ir with N -> Ir - nitrogen.SetFormalCharge(0) - - if iridium is not None and (nitrogen is not None or carbene is not None): - editable_mol.RemoveBond(start_idx, end_idx) - editable_mol.AddBond(start_idx, end_idx, Chem.rdchem.BondType.DATIVE) - - outmol = editable_mol.GetMol() - Chem.SanitizeMol(outmol) - - return outmol - - -def transfer_conformation(mol, substruct, conformer=0): - """Given a molecule, and a second molecule which is a substructure of the - first, assign coordinates to the substructure based on the matching part of - the original molecule""" - match = mol.GetSubstructMatch(substruct) - substruct_conformation = rdchem.Conformer(substruct.GetNumAtoms()) - for i, index in enumerate(match): - point = mol.GetConformer(conformer).GetAtomPosition(index) - substruct_conformation.SetAtomPosition(i, point) - substruct.AddConformer(substruct_conformation) - - -def run_three_times(mol, reaction): - for i in range(3): - mol = reaction.RunReactants([mol])[0][0] - return mol - - -def get_directory_path(): - """Returns the directory path of the current script.""" - return os.path.dirname(os.path.abspath(__file__)) - - -def skeleton_extraction(mol, template): - """Extracts and returns the skeleton of a molecule based on the provided SMARTS template.""" - matches = mol.GetSubstructMatches(template) - matching_indices = set(sum(matches, ())) - editable_mol = rdchem.RWMol(mol) - editable_mol.BeginBatchEdit() - for atom in editable_mol.GetAtoms(): - if atom.GetIdx() not in matching_indices: - editable_mol.RemoveAtom(atom.GetIdx()) - atom.SetFormalCharge(0) - editable_mol.CommitBatchEdit() - return editable_mol.GetMol() - - -def load_molecule(file_name): - """Loads a molecule from a .mol2 file given a file name.""" - dir_path = get_directory_path() - base_mol = rdmolfiles.MolFromMol2File(os.path.join(dir_path, file_name)) - dative_mol = make_bonds_dative(base_mol) - rdmolops.RemoveStereochemistry(dative_mol) - return dative_mol - - -def compute_skeletons(isomer): - """Computes and returns all skeletons based on the isomer type.""" - - if isomer == "fac": - base_mol = load_molecule("OHUZEW.mol2") - carbene_mol = load_molecule("MAXYIU.mol2") - elif isomer == "mer": - base_mol = load_molecule("OHUZIA.mol2") - carbene_mol = load_molecule("MAXYOA.mol2") - else: - raise ValueError(f'Isomer should be "mer" or "fac", given {isomer}') - - template = rdmolfiles.MolFromSmarts("[Ir]1~n:[*]~[*]:c~1") - - skeleton = skeleton_extraction(base_mol, template) - - carbene_skeleton = rdmolfiles.MolFromSmarts(CARBENE_SKELETON_SMARTS) - transfer_conformation(carbene_mol, carbene_skeleton) - - REACTION_PREFIX = "[Ir:1]1<-[n:2]:[n:3]~[c:4]:[c:5]~1>>[Ir:1]1<-[n:2]:" - REACTION_SUFFIX = ":[c:5]~1" - - reactions = [ - rdChemReactions.ReactionFromSmarts(f"{REACTION_PREFIX}{core}{REACTION_SUFFIX}") - for core in ["[c:3]~[n:4]", "[n:3]~[n:4]", "[c:3]~[c:4]"] - ] - skeletons = [skeleton] + [run_three_times(skeleton, reaction) for reaction in reactions] + [carbene_skeleton] - - return skeletons - - -def octahedral_embed(mol, isomer): - """Embeds a molecule based on the skeletons for 'fac' or 'mer' isomers.""" - rdmolops.RemoveStereochemistry(mol) - skeletons = compute_skeletons(isomer) - - finished = False - for skeleton in skeletons: - if len(mol.GetSubstructMatch(skeleton)) > 0: - # Carbene embedding with a large template gives output "Could not - # triangle bounds smooth molecule" and raises a ValueError. But - # with a small template the imidazole is hroribly twisted, probably - # because it thinks the atoms are aliphatic. Ignoring smoothing - # failures with the large template, it works - AllChem.ConstrainedEmbed(mol, skeleton, ignoreSmoothingFailures=True) - finished = True - # break - if not finished: - raise ValueError("Doesn't match templates") diff --git a/bluephos/modules/octahedral_embed/BIPLET.mol2 b/bluephos/modules/octahedral_embed/BIPLET.mol2 new file mode 100644 index 0000000..60825c8 --- /dev/null +++ b/bluephos/modules/octahedral_embed/BIPLET.mol2 @@ -0,0 +1,243 @@ +@MOLECULE +01 + 111 120 1 0 0 +SMALL +USER_CHARGES +**** +Generated from the CSD + +@ATOM + 1 C1 -4.7958 13.6996 19.1037 C.ar 1 RES1 0.0000 + 2 C2 -6.1226 13.9321 18.7618 C.ar 1 RES1 0.0000 + 3 C3 -6.5256 15.1353 18.1796 C.ar 1 RES1 0.0000 + 4 C4 -5.5363 16.0977 18.0134 C.ar 1 RES1 0.0000 + 5 H1 -5.7949 16.9296 17.6331 H 1 RES1 0.0000 + 6 C5 -4.1916 15.9432 18.3583 C.ar 1 RES1 0.0000 + 7 C6 -3.8584 14.6974 18.9083 C.ar 1 RES1 0.0000 + 8 C7 -7.9560 15.4358 17.7353 C.3 1 RES1 0.0000 + 9 H2 -7.9844 16.3131 17.2989 H 1 RES1 0.0000 + 10 H3 -8.5465 15.4429 18.5176 H 1 RES1 0.0000 + 11 H4 -8.2554 14.7470 17.1062 H 1 RES1 0.0000 + 12 C8 -3.2322 17.0813 18.1206 C.3 1 RES1 0.0000 + 13 H5 -2.8382 17.3619 18.9726 H 1 RES1 0.0000 + 14 H6 -3.7118 17.8353 17.7190 H 1 RES1 0.0000 + 15 H7 -2.5194 16.7879 17.5124 H 1 RES1 0.0000 + 16 C9 -6.2673 11.7126 19.6086 C.3 1 RES1 0.0000 + 17 C10 -8.4905 11.3667 19.5576 C.2 1 RES1 0.0000 + 18 H8 -9.3316 10.9387 19.6690 H 1 RES1 0.0000 + 19 C11 -8.2892 12.5870 19.0619 C.2 1 RES1 0.0000 + 20 H9 -8.9524 13.1965 18.7590 H 1 RES1 0.0000 + 21 C12 -7.0673 9.5668 20.5611 C.3 1 RES1 0.0000 + 22 H10 -6.1213 9.2847 20.4861 H 1 RES1 0.0000 + 23 H11 -7.6294 8.8737 20.1309 H 1 RES1 0.0000 + 24 C13 -7.4527 9.6957 22.0437 C.3 1 RES1 0.0000 + 25 H12 -6.8703 10.3789 22.4593 H 1 RES1 0.0000 + 26 H13 -8.3835 10.0288 22.0971 H 1 RES1 0.0000 + 27 C14 -7.3649 8.5406 22.7935 C.3 1 RES1 0.0000 + 28 H14 -6.4343 8.2062 22.7680 H 1 RES1 0.0000 + 29 H15 -7.9491 7.8476 22.3943 H 1 RES1 0.0000 + 30 C15 -7.7841 8.7688 24.2769 C.3 1 RES1 0.0000 + 31 H16 -7.1669 9.4038 24.6971 H 1 RES1 0.0000 + 32 H17 -7.7554 7.9156 24.7597 H 1 RES1 0.0000 + 33 H18 -8.6959 9.1288 24.3071 H 1 RES1 0.0000 + 34 C16 -2.4936 12.9740 19.8517 C.3 1 RES1 0.0000 + 35 C17 -0.4789 13.9817 19.9058 C.2 1 RES1 0.0000 + 36 H19 0.4480 14.1206 20.0659 H 1 RES1 0.0000 + 37 C18 -1.3300 14.8689 19.3821 C.2 1 RES1 0.0000 + 38 H20 -1.1272 15.7490 19.0910 H 1 RES1 0.0000 + 39 C19 -0.6269 11.6431 20.8276 C.3 1 RES1 0.0000 + 40 H21 0.2872 11.4872 20.4815 H 1 RES1 0.0000 + 41 H22 -1.1745 10.8480 20.6091 H 1 RES1 0.0000 + 42 C20 -0.5705 11.8146 22.3337 C.3 1 RES1 0.0000 + 43 H23 -1.4897 11.9195 22.6844 H 1 RES1 0.0000 + 44 H24 -0.0650 12.6366 22.5498 H 1 RES1 0.0000 + 45 C21 0.0941 10.6255 23.0141 C.3 1 RES1 0.0000 + 46 H25 -0.3891 9.7992 22.7587 H 1 RES1 0.0000 + 47 H26 1.0238 10.5447 22.6844 H 1 RES1 0.0000 + 48 C22 0.1158 10.7318 24.5114 C.3 1 RES1 0.0000 + 49 H27 0.5206 11.5864 24.7714 H 1 RES1 0.0000 + 50 H28 0.6428 9.9934 24.8828 H 1 RES1 0.0000 + 51 H29 -0.8005 10.6864 24.8549 H 1 RES1 0.0000 + 52 C23 -3.6450 10.1053 20.6365 C.ar 1 RES1 0.0000 + 53 C24 -3.6967 9.8517 22.0122 C.ar 1 RES1 0.0000 + 54 C25 -3.3178 8.6384 22.5598 C.ar 1 RES1 0.0000 + 55 C26 -2.8809 7.6747 21.6570 C.ar 1 RES1 0.0000 + 56 H30 -2.6299 6.8286 22.0089 H 1 RES1 0.0000 + 57 C27 -2.7799 7.8533 20.2658 C.ar 1 RES1 0.0000 + 58 C28 -3.1700 9.1005 19.7932 C.ar 1 RES1 0.0000 + 59 C29 -3.3855 8.3025 24.0376 C.3 1 RES1 0.0000 + 60 H31 -3.0271 7.4026 24.1840 H 1 RES1 0.0000 + 61 H32 -4.3168 8.3380 24.3396 H 1 RES1 0.0000 + 62 H33 -2.8543 8.9517 24.5439 H 1 RES1 0.0000 + 63 C30 -2.2698 6.7194 19.4067 C.3 1 RES1 0.0000 + 64 H34 -2.9367 6.4997 18.7242 H 1 RES1 0.0000 + 65 H35 -2.1056 5.9328 19.9684 H 1 RES1 0.0000 + 66 H36 -1.4347 6.9901 18.9726 H 1 RES1 0.0000 + 67 C31 -4.5102 12.1122 21.8987 C.3 1 RES1 0.0000 + 68 C32 -4.9742 12.5389 24.0733 C.2 1 RES1 0.0000 + 69 H37 -5.2652 12.9981 24.8526 H 1 RES1 0.0000 + 70 C33 -4.4894 11.2789 24.0185 C.2 1 RES1 0.0000 + 71 H38 -4.3714 10.6864 24.7528 H 1 RES1 0.0000 + 72 C34 -5.4697 14.3615 22.3996 C.3 1 RES1 0.0000 + 73 H39 -5.1229 14.5996 21.5029 H 1 RES1 0.0000 + 74 H40 -5.1271 15.0319 23.0443 H 1 RES1 0.0000 + 75 C35 -6.9778 14.4210 22.3785 C.3 1 RES1 0.0000 + 76 H41 -7.3269 14.2070 23.2810 H 1 RES1 0.0000 + 77 H42 -7.3233 13.7407 21.7489 H 1 RES1 0.0000 + 78 C36 -7.4761 15.7887 21.9602 C.3 1 RES1 0.0000 + 79 H43 -7.0907 16.4704 22.5661 H 1 RES1 0.0000 + 80 H44 -7.1563 15.9829 21.0432 H 1 RES1 0.0000 + 81 C37 -8.9828 15.8993 21.9904 C.3 1 RES1 0.0000 + 82 H45 -9.3735 15.2076 21.4170 H 1 RES1 0.0000 + 83 H46 -9.2527 16.7837 21.6654 H 1 RES1 0.0000 + 84 H47 -9.3004 15.7774 22.9096 H 1 RES1 0.0000 + 85 C38 -3.6909 10.8381 18.2174 C.3 1 RES1 0.0000 + 86 C39 -3.0713 9.8715 16.2721 C.2 1 RES1 0.0000 + 87 H48 -2.9136 9.7553 15.3419 H 1 RES1 0.0000 + 88 C40 -2.7994 8.9885 17.2359 C.2 1 RES1 0.0000 + 89 H49 -2.4129 8.1268 17.1248 H 1 RES1 0.0000 + 90 C41 -4.2341 12.1023 16.1468 C.3 1 RES1 0.0000 + 91 H50 -3.7252 12.2681 15.3141 H 1 RES1 0.0000 + 92 H51 -4.1877 12.9215 16.6999 H 1 RES1 0.0000 + 93 C42 -5.6820 11.8104 15.8006 C.3 1 RES1 0.0000 + 94 H52 -5.7193 10.9997 15.2328 H 1 RES1 0.0000 + 95 H53 -6.1789 11.6162 16.6349 H 1 RES1 0.0000 + 96 C43 -6.3643 12.9428 15.0773 C.3 1 RES1 0.0000 + 97 H54 -5.9037 13.1072 14.2184 H 1 RES1 0.0000 + 98 H55 -6.2956 13.7662 15.6228 H 1 RES1 0.0000 + 99 C44 -7.8466 12.6381 14.8080 C.3 1 RES1 0.0000 + 100 H56 -7.9151 11.8529 14.2230 H 1 RES1 0.0000 + 101 H57 -8.2632 13.4091 14.3693 H 1 RES1 0.0000 + 102 H58 -8.3024 12.4566 15.6553 H 1 RES1 0.0000 + 103 N1 -6.9132 12.7940 19.0763 N.pl3 1 RES1 0.0000 + 104 N2 -7.2535 10.8324 19.8809 N.pl3 1 RES1 0.0000 + 105 N3 -2.5713 14.2510 19.3479 N.pl3 1 RES1 0.0000 + 106 N4 -1.1960 12.8181 20.1753 N.pl3 1 RES1 0.0000 + 107 N5 -4.1984 11.0138 22.6819 N.pl3 1 RES1 0.0000 + 108 N6 -4.9676 13.0335 22.7733 N.pl3 1 RES1 0.0000 + 109 N7 -3.1912 9.5739 18.4319 N.pl3 1 RES1 0.0000 + 110 N8 -3.6232 10.9883 16.8768 N.pl3 1 RES1 0.0000 + 111 Ir1 -4.2365 11.8980 19.8829 Ir 1 RES1 1.0000 +@BOND + 1 1 2 ar + 2 2 3 ar + 3 3 4 ar + 4 4 5 1 + 5 6 4 ar + 6 7 1 ar + 7 8 3 1 + 8 9 8 1 + 9 10 8 1 + 10 11 8 1 + 11 12 6 1 + 12 13 12 1 + 13 14 12 1 + 14 15 12 1 + 15 16 103 1 + 16 17 18 1 + 17 19 17 2 + 18 20 19 1 + 19 21 22 1 + 20 23 21 1 + 21 24 21 1 + 22 25 24 1 + 23 26 24 1 + 24 27 24 1 + 25 28 27 1 + 26 29 27 1 + 27 30 27 1 + 28 31 30 1 + 29 32 30 1 + 30 33 30 1 + 31 34 105 1 + 32 35 36 1 + 33 37 35 2 + 34 38 37 1 + 35 39 40 1 + 36 41 39 1 + 37 42 39 1 + 38 43 42 1 + 39 44 42 1 + 40 45 42 1 + 41 46 45 1 + 42 47 45 1 + 43 48 45 1 + 44 49 48 1 + 45 50 48 1 + 46 51 48 1 + 47 52 53 ar + 48 53 54 ar + 49 54 55 ar + 50 55 56 1 + 51 57 55 ar + 52 58 52 ar + 53 59 54 1 + 54 60 59 1 + 55 61 59 1 + 56 62 59 1 + 57 63 57 1 + 58 64 63 1 + 59 65 63 1 + 60 66 63 1 + 61 67 107 1 + 62 68 69 1 + 63 70 68 2 + 64 71 70 1 + 65 72 73 1 + 66 74 72 1 + 67 75 72 1 + 68 76 75 1 + 69 77 75 1 + 70 78 75 1 + 71 79 78 1 + 72 80 78 1 + 73 81 78 1 + 74 82 81 1 + 75 83 81 1 + 76 84 81 1 + 77 85 109 1 + 78 86 87 1 + 79 88 86 2 + 80 89 88 1 + 81 90 91 1 + 82 92 90 1 + 83 93 90 1 + 84 94 93 1 + 85 95 93 1 + 86 96 93 1 + 87 97 96 1 + 88 98 96 1 + 89 99 96 1 + 90 100 99 1 + 91 101 99 1 + 92 102 99 1 + 93 103 2 1 + 94 104 16 1 + 95 105 7 1 + 96 106 34 1 + 97 107 53 1 + 98 108 67 1 + 99 109 58 1 + 100 110 85 1 + 101 111 1 1 + 102 6 7 ar + 103 16 111 1 + 104 17 104 1 + 105 19 103 1 + 106 21 104 1 + 107 34 111 1 + 108 35 106 1 + 109 37 105 1 + 110 39 106 1 + 111 52 111 1 + 112 57 58 ar + 113 67 111 1 + 114 68 108 1 + 115 70 107 1 + 116 72 108 1 + 117 85 111 1 + 118 86 110 1 + 119 88 109 1 + 120 90 110 1 +@SUBSTRUCTURE + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/octahedral_embed/EGUFIZ.mol2 b/bluephos/modules/octahedral_embed/EGUFIZ.mol2 new file mode 100644 index 0000000..41da0fa --- /dev/null +++ b/bluephos/modules/octahedral_embed/EGUFIZ.mol2 @@ -0,0 +1,237 @@ +@MOLECULE +01 + 107 118 1 0 0 +SMALL +NO_CHARGES +**** +Generated from the CSD + +@ATOM + 1 Ir1 6.8706 4.9263 7.9920 Ir 1 RES1 0.0000 + 2 F1 3.1190 -1.2442 3.7594 F 1 RES1 0.0000 + 3 F2 1.2308 -0.8273 4.6339 F 1 RES1 0.0000 + 4 F3 1.7726 0.0968 2.7999 F 1 RES1 0.0000 + 5 F4 5.9629 6.9778 1.8732 F 1 RES1 0.0000 + 6 F5 4.5181 7.1985 3.4439 F 1 RES1 0.0000 + 7 F6 5.8403 8.8100 2.9729 F 1 RES1 0.0000 + 8 F7 3.7359 2.6295 13.1817 F 1 RES1 0.0000 + 9 F8 5.0562 4.0126 14.1433 F 1 RES1 0.0000 + 10 F9 3.7024 4.6952 12.6291 F 1 RES1 0.0000 + 11 O1 9.7023 5.9196 6.6779 O.3 1 RES1 0.0000 + 12 O2 8.2836 2.2093 9.1656 O.3 1 RES1 0.0000 + 13 N1 5.8582 2.3759 6.2982 N.pl3 1 RES1 0.0000 + 14 N2 2.4220 3.0006 5.7848 N.ar 1 RES1 0.0000 + 15 N3 4.4068 3.9079 6.8302 N.pl3 1 RES1 0.0000 + 16 N4 6.0826 7.4207 9.2461 N.pl3 1 RES1 0.0000 + 17 N5 5.5021 9.4974 10.3437 N.ar 1 RES1 0.0000 + 18 N6 8.1713 7.2375 9.8259 N.pl3 1 RES1 0.0000 + 19 N7 8.0506 7.2090 3.7583 N.ar 1 RES1 0.0000 + 20 N8 8.9065 4.0869 7.9136 N.ar 1 RES1 0.0000 + 21 N9 6.3269 2.3572 12.1831 N.ar 1 RES1 0.0000 + 22 C1 5.7469 3.5566 6.9498 C.3 1 RES1 0.0000 + 23 C2 4.6341 1.9761 5.7739 C.ar 1 RES1 0.0000 + 24 C3 4.1857 0.8704 5.0701 C.ar 1 RES1 0.0000 + 25 H1 4.7638 0.1581 4.8263 H 1 RES1 0.0000 + 26 C4 2.8447 0.8725 4.7460 C.ar 1 RES1 0.0000 + 27 C5 2.0157 1.9303 5.1039 C.ar 1 RES1 0.0000 + 28 H2 1.1032 1.8882 4.8461 H 1 RES1 0.0000 + 29 C6 3.7168 2.9715 6.1035 C.ar 1 RES1 0.0000 + 30 C7 4.0006 5.1287 7.4480 C.ar 1 RES1 0.0000 + 31 C8 2.7295 5.6889 7.4578 C.ar 1 RES1 0.0000 + 32 H3 2.0027 5.2450 7.0381 H 1 RES1 0.0000 + 33 C9 2.5423 6.9091 8.0920 C.ar 1 RES1 0.0000 + 34 C10 3.6283 7.5629 8.6935 C.ar 1 RES1 0.0000 + 35 H4 3.5124 8.4052 9.1197 H 1 RES1 0.0000 + 36 C11 4.8748 6.9549 8.6533 C.ar 1 RES1 0.0000 + 37 C12 5.0825 5.7368 8.0528 C.ar 1 RES1 0.0000 + 38 C13 6.3496 8.5271 10.0315 C.ar 1 RES1 0.0000 + 39 C14 6.0472 10.4407 11.1302 C.ar 1 RES1 0.0000 + 40 H5 5.5021 11.1737 11.3914 H 1 RES1 0.0000 + 41 C15 7.3657 10.4116 11.5892 C.ar 1 RES1 0.0000 + 42 C16 8.2151 9.3746 11.2357 C.ar 1 RES1 0.0000 + 43 H6 9.1137 9.3314 11.5433 H 1 RES1 0.0000 + 44 C17 7.6845 8.4125 10.4144 C.ar 1 RES1 0.0000 + 45 C18 7.2073 6.6301 9.1004 C.3 1 RES1 0.0000 + 46 C19 7.1476 1.6929 6.0709 C.3 1 RES1 0.0000 + 47 H7 7.8554 2.2401 6.5154 H 1 RES1 0.0000 + 48 C20 7.1661 0.3186 6.7203 C.3 1 RES1 0.0000 + 49 H8 8.0633 -0.0687 6.6363 H 1 RES1 0.0000 + 50 H9 6.5166 -0.2627 6.2739 H 1 RES1 0.0000 + 51 H10 6.9344 0.4023 7.6683 H 1 RES1 0.0000 + 52 C21 7.4623 1.6679 4.5828 C.3 1 RES1 0.0000 + 53 H11 8.3638 1.3094 4.4457 H 1 RES1 0.0000 + 54 H12 7.4143 2.5784 4.2239 H 1 RES1 0.0000 + 55 H13 6.8110 1.0997 4.1202 H 1 RES1 0.0000 + 56 C22 2.2564 -0.2665 3.9824 C.3 1 RES1 0.0000 + 57 C23 1.1724 7.5276 8.1910 C.3 1 RES1 0.0000 + 58 C24 0.0658 6.6863 7.5981 C.3 1 RES1 0.0000 + 59 H14 -0.7694 7.1989 7.6022 H 1 RES1 0.0000 + 60 H15 -0.0472 5.8718 8.1297 H 1 RES1 0.0000 + 61 H16 0.2978 6.4469 6.6767 H 1 RES1 0.0000 + 62 C25 1.1806 8.9206 7.6068 C.3 1 RES1 0.0000 + 63 H17 0.2706 9.2829 7.6142 H 1 RES1 0.0000 + 64 H18 1.5117 8.8863 6.6850 H 1 RES1 0.0000 + 65 H19 1.7660 9.4988 8.1414 H 1 RES1 0.0000 + 66 C26 0.8248 7.7358 9.7378 C.3 1 RES1 0.0000 + 67 H20 -0.0834 8.0938 9.8211 H 1 RES1 0.0000 + 68 H21 1.4619 8.3663 10.1352 H 1 RES1 0.0000 + 69 H22 0.8820 6.8764 10.2046 H 1 RES1 0.0000 + 70 C27 7.8161 11.4777 12.5258 C.3 1 RES1 0.0000 + 71 F10 7.1723 11.5089 13.5820 F 1 RES1 0.0000 + 72 F11 9.1222 11.4756 12.7597 F 1 RES1 0.0000 + 73 F12 7.6166 12.7250 11.9210 F 1 RES1 0.0000 + 74 C28 9.5315 6.7009 10.0195 C.3 1 RES1 0.0000 + 75 H23 9.5894 5.8520 9.4946 H 1 RES1 0.0000 + 76 C29 9.7557 6.3406 11.4772 C.3 1 RES1 0.0000 + 77 H24 10.6344 5.9171 11.5778 H 1 RES1 0.0000 + 78 H25 9.0583 5.7180 11.7714 H 1 RES1 0.0000 + 79 H26 9.7207 7.1527 12.0245 H 1 RES1 0.0000 + 80 C30 10.5682 7.6546 9.4430 C.3 1 RES1 0.0000 + 81 H27 11.4600 7.2537 9.5203 H 1 RES1 0.0000 + 82 H28 10.5471 8.4999 9.9379 H 1 RES1 0.0000 + 83 H29 10.3682 7.8238 8.4985 H 1 RES1 0.0000 + 84 C31 7.3039 5.8909 6.1873 C.ar 1 RES1 0.0000 + 85 C32 6.3742 6.3219 5.2464 C.ar 1 RES1 0.0000 + 86 H30 5.4484 6.1740 5.4019 H 1 RES1 0.0000 + 87 C33 6.7733 6.9549 4.0944 C.ar 1 RES1 0.0000 + 88 C34 8.9474 6.7904 4.6437 C.ar 1 RES1 0.0000 + 89 H31 9.8690 6.9275 4.4555 H 1 RES1 0.0000 + 90 C35 8.6039 6.1720 5.8174 C.ar 1 RES1 0.0000 + 91 C36 9.9141 4.7352 7.2685 C.ar 1 RES1 0.0000 + 92 C37 11.2202 4.2875 7.2772 C.ar 1 RES1 0.0000 + 93 H32 11.9045 4.7757 6.8337 H 1 RES1 0.0000 + 94 C38 11.5102 3.1235 7.9386 C.ar 1 RES1 0.0000 + 95 H33 12.3978 2.7877 7.9450 H 1 RES1 0.0000 + 96 C39 10.5168 2.4467 8.5913 C.ar 1 RES1 0.0000 + 97 H34 10.7020 1.6434 9.0613 H 1 RES1 0.0000 + 98 C40 9.2292 2.9652 8.5478 C.ar 1 RES1 0.0000 + 99 C41 7.3554 2.7591 10.0750 C.ar 1 RES1 0.0000 + 100 C42 6.5882 3.8752 9.7759 C.ar 1 RES1 0.0000 + 101 C43 5.6687 4.1854 10.7636 C.ar 1 RES1 0.0000 + 102 H35 5.0976 4.9374 10.6543 H 1 RES1 0.0000 + 103 C44 5.7839 7.4776 3.0991 C.3 1 RES1 0.0000 + 104 C45 7.2258 2.0427 11.2596 C.ar 1 RES1 0.0000 + 105 H36 7.8034 1.3041 11.4135 H 1 RES1 0.0000 + 106 C46 5.5700 3.4192 11.9003 C.ar 1 RES1 0.0000 + 107 C47 4.5189 3.6961 12.9620 C.3 1 RES1 0.0000 +@BOND + 1 1 20 1 + 2 2 56 1 + 3 3 56 1 + 4 4 56 1 + 5 5 103 1 + 6 6 103 1 + 7 7 103 1 + 8 8 107 1 + 9 9 107 1 + 10 10 107 1 + 11 11 90 1 + 12 12 98 1 + 13 13 22 1 + 14 14 27 ar + 15 15 22 1 + 16 16 36 1 + 17 17 38 ar + 18 18 44 1 + 19 19 87 ar + 20 20 91 ar + 21 21 104 ar + 22 22 1 1 + 23 23 13 1 + 24 24 23 ar + 25 25 24 1 + 26 26 24 ar + 27 27 26 ar + 28 28 27 1 + 29 29 14 ar + 30 30 15 1 + 31 31 30 ar + 32 32 31 1 + 33 33 31 ar + 34 34 33 ar + 35 35 34 1 + 36 36 34 ar + 37 37 1 1 + 38 38 16 1 + 39 39 17 ar + 40 40 39 1 + 41 41 39 ar + 42 42 41 ar + 43 43 42 1 + 44 44 38 ar + 45 45 1 1 + 46 46 13 1 + 47 47 46 1 + 48 48 46 1 + 49 49 48 1 + 50 50 48 1 + 51 51 48 1 + 52 52 46 1 + 53 53 52 1 + 54 54 52 1 + 55 55 52 1 + 56 56 26 1 + 57 57 33 1 + 58 58 57 1 + 59 59 58 1 + 60 60 58 1 + 61 61 58 1 + 62 62 57 1 + 63 63 62 1 + 64 64 62 1 + 65 65 62 1 + 66 66 57 1 + 67 67 66 1 + 68 68 66 1 + 69 69 66 1 + 70 70 41 1 + 71 71 70 1 + 72 72 70 1 + 73 73 70 1 + 74 74 18 1 + 75 75 74 1 + 76 76 74 1 + 77 77 76 1 + 78 78 76 1 + 79 79 76 1 + 80 80 74 1 + 81 81 80 1 + 82 82 80 1 + 83 83 80 1 + 84 84 1 1 + 85 85 84 ar + 86 86 85 1 + 87 87 85 ar + 88 88 19 ar + 89 89 88 1 + 90 90 84 ar + 91 91 11 1 + 92 92 91 ar + 93 93 92 1 + 94 94 92 ar + 95 95 94 1 + 96 96 94 ar + 97 97 96 1 + 98 98 20 ar + 99 99 12 1 + 100 100 1 1 + 101 101 100 ar + 102 102 101 1 + 103 103 87 1 + 104 104 99 ar + 105 105 104 1 + 106 106 21 ar + 107 107 106 1 + 108 15 29 1 + 109 16 45 1 + 110 18 45 1 + 111 23 29 ar + 112 30 37 ar + 113 36 37 ar + 114 42 44 ar + 115 88 90 ar + 116 96 98 ar + 117 99 100 ar + 118 101 106 ar +@SUBSTRUCTURE + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/MAXYIU.mol2 b/bluephos/modules/octahedral_embed/MAXYIU.mol2 similarity index 99% rename from bluephos/modules/MAXYIU.mol2 rename to bluephos/modules/octahedral_embed/MAXYIU.mol2 index cfad289..a285d50 100644 --- a/bluephos/modules/MAXYIU.mol2 +++ b/bluephos/modules/octahedral_embed/MAXYIU.mol2 @@ -184,4 +184,4 @@ Generated from the CSD 92 69 78 ar 93 76 78 ar @SUBSTRUCTURE - 1 RES1 1 GROUP 0 **** **** 0 \ No newline at end of file + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/MAXYOA.mol2 b/bluephos/modules/octahedral_embed/MAXYOA.mol2 similarity index 99% rename from bluephos/modules/MAXYOA.mol2 rename to bluephos/modules/octahedral_embed/MAXYOA.mol2 index c76585c..e6a88f6 100644 --- a/bluephos/modules/MAXYOA.mol2 +++ b/bluephos/modules/octahedral_embed/MAXYOA.mol2 @@ -184,4 +184,4 @@ Generated from the CSD 92 69 78 ar 93 76 78 ar @SUBSTRUCTURE - 1 RES1 1 GROUP 0 **** **** 0 \ No newline at end of file + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/OHUZEW.mol2 b/bluephos/modules/octahedral_embed/OHUZEW.mol2 similarity index 99% rename from bluephos/modules/OHUZEW.mol2 rename to bluephos/modules/octahedral_embed/OHUZEW.mol2 index 1810e17..3c32947 100644 --- a/bluephos/modules/OHUZEW.mol2 +++ b/bluephos/modules/octahedral_embed/OHUZEW.mol2 @@ -145,4 +145,4 @@ Generated from the CSD 71 52 54 2 72 58 60 2 @SUBSTRUCTURE - 1 RES1 1 GROUP 0 **** **** 0 \ No newline at end of file + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/OHUZIA.mol2 b/bluephos/modules/octahedral_embed/OHUZIA.mol2 similarity index 99% rename from bluephos/modules/OHUZIA.mol2 rename to bluephos/modules/octahedral_embed/OHUZIA.mol2 index cf8fc5e..109924b 100644 --- a/bluephos/modules/OHUZIA.mol2 +++ b/bluephos/modules/octahedral_embed/OHUZIA.mol2 @@ -145,4 +145,4 @@ Generated from the CSD 71 52 54 2 72 58 60 2 @SUBSTRUCTURE - 1 RES1 1 GROUP 0 **** **** 0 \ No newline at end of file + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/octahedral_embed/SOYNOM.mol2 b/bluephos/modules/octahedral_embed/SOYNOM.mol2 new file mode 100644 index 0000000..f285145 --- /dev/null +++ b/bluephos/modules/octahedral_embed/SOYNOM.mol2 @@ -0,0 +1,189 @@ +@MOLECULE +02 + 84 93 1 0 0 +SMALL +NO_CHARGES +**** +Generated from the CSD + +@ATOM + 1 Ir2 5.0007 7.5926 5.0937 Ir 1 RES1 0.0000 + 2 N9 6.6144 7.1068 6.2628 N.ar 1 RES1 0.0000 + 3 N10 8.9666 6.9501 6.3737 N.ar 1 RES1 0.0000 + 4 N11 4.1860 7.4153 7.0525 N.2 1 RES1 0.0000 + 5 N12 2.9823 7.6185 7.6004 N.2 1 RES1 0.0000 + 6 N13 5.6472 10.6389 5.8744 N.pl3 1 RES1 0.0000 + 7 N14 4.1382 10.2809 4.3951 N.pl3 1 RES1 0.0000 + 8 N15 3.2842 5.8703 3.4870 N.pl3 1 RES1 0.0000 + 9 N16 4.4189 4.4688 4.6434 N.pl3 1 RES1 0.0000 + 10 C41 6.4701 7.5809 3.7011 C.ar 1 RES1 0.0000 + 11 C42 6.3892 7.7814 2.3119 C.ar 1 RES1 0.0000 + 12 H45 5.5515 7.9562 1.9000 H 1 RES1 0.0000 + 13 C43 7.5352 7.7222 1.5558 C.ar 1 RES1 0.0000 + 14 C44 8.7951 7.4833 2.0671 C.ar 1 RES1 0.0000 + 15 H46 9.5606 7.4501 1.5046 H 1 RES1 0.0000 + 16 C45 8.8975 7.2963 3.4293 C.ar 1 RES1 0.0000 + 17 H47 9.7500 7.1444 3.8200 H 1 RES1 0.0000 + 18 C46 7.7618 7.3263 4.2380 C.ar 1 RES1 0.0000 + 19 C47 7.8386 7.0985 5.6853 C.ar 1 RES1 0.0000 + 20 C48 8.8605 6.7677 7.7131 C.ar 1 RES1 0.0000 + 21 C49 7.6227 6.7175 8.3487 C.ar 1 RES1 0.0000 + 22 H48 7.5622 6.5430 9.2793 H 1 RES1 0.0000 + 23 C50 6.4771 6.9298 7.5882 C.ar 1 RES1 0.0000 + 24 C51 5.0940 7.0750 8.0190 C.2 1 RES1 0.0000 + 25 C52 4.4450 7.0479 9.2483 C.2 1 RES1 0.0000 + 26 H49 4.8075 6.8412 10.1011 H 1 RES1 0.0000 + 27 C53 3.1476 7.3941 8.9300 C.2 1 RES1 0.0000 + 28 C54 1.9759 7.5425 9.8247 C.3 1 RES1 0.0000 + 29 C55 10.1765 6.7266 8.4673 C.3 1 RES1 0.0000 + 30 C56 11.1809 5.8637 7.7082 C.3 1 RES1 0.0000 + 31 H50 10.8174 4.9610 7.5979 H 1 RES1 0.0000 + 32 H51 12.0201 5.8192 8.2121 H 1 RES1 0.0000 + 33 H52 11.3480 6.2569 6.8269 H 1 RES1 0.0000 + 34 C57 10.6860 8.1723 8.5586 C.3 1 RES1 0.0000 + 35 H53 10.8120 8.5308 7.6554 H 1 RES1 0.0000 + 36 H54 11.5388 8.1885 9.0384 H 1 RES1 0.0000 + 37 H55 10.0304 8.7190 9.0384 H 1 RES1 0.0000 + 38 C58 10.0139 6.1429 9.8767 C.3 1 RES1 0.0000 + 39 H56 9.4260 6.7214 10.4038 H 1 RES1 0.0000 + 40 H57 10.8913 6.0857 10.3088 H 1 RES1 0.0000 + 41 H58 9.6218 5.2471 9.8161 H 1 RES1 0.0000 + 42 C59 5.0329 9.6389 5.2138 C.3 1 RES1 0.0000 + 43 C60 5.1496 11.8729 5.4759 C.2 1 RES1 0.0000 + 44 H59 5.4243 12.7216 5.8017 H 1 RES1 0.0000 + 45 C61 4.2096 11.6487 4.5486 C.2 1 RES1 0.0000 + 46 H60 3.6954 12.3010 4.0873 H 1 RES1 0.0000 + 47 C62 3.2897 9.4523 3.6015 C.ar 1 RES1 0.0000 + 48 C63 2.3273 9.8626 2.6888 C.ar 1 RES1 0.0000 + 49 H61 2.1582 10.7876 2.5452 H 1 RES1 0.0000 + 50 C64 1.6115 8.8907 1.9853 C.ar 1 RES1 0.0000 + 51 C65 1.8916 7.5315 2.2047 C.ar 1 RES1 0.0000 + 52 H62 1.4247 6.8608 1.7211 H 1 RES1 0.0000 + 53 C66 2.8537 7.1823 3.1306 C.ar 1 RES1 0.0000 + 54 C67 3.5560 8.1254 3.8527 C.ar 1 RES1 0.0000 + 55 C68 2.8301 4.6141 3.1373 C.2 1 RES1 0.0000 + 56 H63 2.1501 4.4109 2.5076 H 1 RES1 0.0000 + 57 C69 3.5427 3.7351 3.8650 C.2 1 RES1 0.0000 + 58 H64 3.4600 2.7898 3.8465 H 1 RES1 0.0000 + 59 C70 4.2827 5.7872 4.4350 C.3 1 RES1 0.0000 + 60 C71 6.6597 10.4443 6.9106 C.3 1 RES1 0.0000 + 61 H65 6.2236 10.1739 7.7460 H 1 RES1 0.0000 + 62 H66 7.1471 11.2815 7.0522 H 1 RES1 0.0000 + 63 H67 7.2854 9.7460 6.6280 H 1 RES1 0.0000 + 64 C72 0.5338 9.2594 0.9595 C.3 1 RES1 0.0000 + 65 C73 0.2170 10.7411 0.9511 C.3 1 RES1 0.0000 + 66 H68 1.0199 11.2448 0.6982 H 1 RES1 0.0000 + 67 H69 -0.0751 11.0174 1.8448 H 1 RES1 0.0000 + 68 H70 -0.4964 10.9196 0.3049 H 1 RES1 0.0000 + 69 C74 0.9791 8.8249 -0.4306 C.3 1 RES1 0.0000 + 70 H71 0.2604 9.0002 -1.0737 H 1 RES1 0.0000 + 71 H72 1.1854 7.8657 -0.4220 H 1 RES1 0.0000 + 72 H73 1.7783 9.3279 -0.6893 H 1 RES1 0.0000 + 73 C75 -0.7783 8.5244 1.3057 C.3 1 RES1 0.0000 + 74 H74 -1.0807 8.7973 2.1961 H 1 RES1 0.0000 + 75 H75 -0.6234 7.5576 1.2947 H 1 RES1 0.0000 + 76 H76 -1.4640 8.7533 0.6429 H 1 RES1 0.0000 + 77 C76 5.3677 3.8871 5.5797 C.3 1 RES1 0.0000 + 78 H77 6.2341 3.7727 5.1367 H 1 RES1 0.0000 + 79 H78 5.0365 3.0147 5.8791 H 1 RES1 0.0000 + 80 H79 5.4698 4.4818 6.3519 H 1 RES1 0.0000 + 81 F5 7.4179 7.8970 0.2050 F 1 RES1 0.0000 + 82 F6 1.0225 6.6390 9.5886 F 1 RES1 0.0000 + 83 F7 1.3528 8.7058 9.7048 F 1 RES1 0.0000 + 84 F8 2.3101 7.3779 11.0914 F 1 RES1 0.0000 +@BOND + 1 1 2 1 + 2 2 19 ar + 3 3 19 ar + 4 4 1 1 + 5 5 4 1 + 6 6 42 1 + 7 7 42 1 + 8 8 53 1 + 9 9 57 1 + 10 10 1 1 + 11 11 10 ar + 12 12 11 1 + 13 13 11 ar + 14 14 13 ar + 15 15 14 1 + 16 16 14 ar + 17 17 16 1 + 18 18 10 ar + 19 19 18 1 + 20 20 3 ar + 21 21 20 ar + 22 22 21 1 + 23 23 2 ar + 24 24 4 1 + 25 25 24 2 + 26 26 25 1 + 27 27 5 2 + 28 28 27 1 + 29 29 20 1 + 30 30 29 1 + 31 31 30 1 + 32 32 30 1 + 33 33 30 1 + 34 34 29 1 + 35 35 34 1 + 36 36 34 1 + 37 37 34 1 + 38 38 29 1 + 39 39 38 1 + 40 40 38 1 + 41 41 38 1 + 42 42 1 1 + 43 43 6 1 + 44 44 43 1 + 45 45 7 1 + 46 46 45 1 + 47 47 7 1 + 48 48 47 ar + 49 49 48 1 + 50 50 48 ar + 51 51 50 ar + 52 52 51 1 + 53 53 51 ar + 54 54 1 1 + 55 55 8 1 + 56 56 55 1 + 57 57 55 2 + 58 58 57 1 + 59 59 1 1 + 60 60 6 1 + 61 61 60 1 + 62 62 60 1 + 63 63 60 1 + 64 64 50 1 + 65 65 64 1 + 66 66 65 1 + 67 67 65 1 + 68 68 65 1 + 69 69 64 1 + 70 70 69 1 + 71 71 69 1 + 72 72 69 1 + 73 73 64 1 + 74 74 73 1 + 75 75 73 1 + 76 76 73 1 + 77 77 9 1 + 78 78 77 1 + 79 79 77 1 + 80 80 77 1 + 81 81 13 1 + 82 82 28 1 + 83 83 28 1 + 84 84 28 1 + 85 8 59 1 + 86 9 59 1 + 87 16 18 ar + 88 21 23 ar + 89 23 24 1 + 90 25 27 1 + 91 43 45 2 + 92 47 54 ar + 93 53 54 ar +@SUBSTRUCTURE + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/octahedral_embed/UYOKUR.mol2 b/bluephos/modules/octahedral_embed/UYOKUR.mol2 new file mode 100644 index 0000000..ed105eb --- /dev/null +++ b/bluephos/modules/octahedral_embed/UYOKUR.mol2 @@ -0,0 +1,195 @@ +@MOLECULE +02 + 86 97 1 0 0 +SMALL +NO_CHARGES +**** +Generated from the CSD + +@ATOM + 1 Ir2 4.9212 8.9382 24.4923 Ir 1 RES1 0.0000 + 2 O2 4.1966 12.2308 24.6888 O.3 1 RES1 0.0000 + 3 N8 6.0028 10.7780 24.5690 N.ar 1 RES1 0.0000 + 4 N9 6.9145 8.2946 24.3767 N.2 1 RES1 0.0000 + 5 N10 7.5031 7.0860 24.3332 N.2 1 RES1 0.0000 + 6 N11 5.0636 9.3212 21.3110 N.pl3 1 RES1 0.0000 + 7 N12 3.8401 7.7064 22.0917 N.pl3 1 RES1 0.0000 + 8 N13 4.0917 7.1816 26.6586 N.pl3 1 RES1 0.0000 + 9 N14 5.2326 8.7521 27.6492 N.pl3 1 RES1 0.0000 + 10 C42 3.1514 9.9570 24.7585 C.ar 1 RES1 0.0000 + 11 C43 1.8946 9.3478 24.9079 C.ar 1 RES1 0.0000 + 12 H33 1.8372 8.4008 24.8574 H 1 RES1 0.0000 + 13 C44 0.7463 10.0685 25.1227 C.ar 1 RES1 0.0000 + 14 C45 0.7313 11.4321 25.2176 C.ar 1 RES1 0.0000 + 15 H34 -0.0724 11.9142 25.3685 H 1 RES1 0.0000 + 16 C46 1.9416 12.0673 25.0813 C.ar 1 RES1 0.0000 + 17 H35 1.9819 13.0150 25.1434 H 1 RES1 0.0000 + 18 C47 3.1080 11.3483 24.8568 C.ar 1 RES1 0.0000 + 19 C48 5.5057 12.0075 24.5747 C.ar 1 RES1 0.0000 + 20 C49 6.2788 13.1623 24.4366 C.ar 1 RES1 0.0000 + 21 H36 5.8734 14.0206 24.3919 H 1 RES1 0.0000 + 22 C50 7.6282 13.0192 24.3675 C.ar 1 RES1 0.0000 + 23 H37 8.1835 13.7889 24.3067 H 1 RES1 0.0000 + 24 C51 8.2047 11.7487 24.3858 C.ar 1 RES1 0.0000 + 25 H38 9.1473 11.6452 24.3432 H 1 RES1 0.0000 + 26 C52 7.3842 10.6493 24.4658 C.ar 1 RES1 0.0000 + 27 C53 7.8478 9.2851 24.4117 C.2 1 RES1 0.0000 + 28 C54 9.1189 8.7091 24.3694 C.2 1 RES1 0.0000 + 29 H39 9.9664 9.1395 24.3706 H 1 RES1 0.0000 + 30 C55 8.8331 7.3290 24.3256 C.2 1 RES1 0.0000 + 31 C56 9.7990 6.2468 24.2538 C.3 1 RES1 0.0000 + 32 C57 4.6364 8.7778 22.4638 C.3 1 RES1 0.0000 + 33 C58 4.5711 8.6247 20.2048 C.ar 1 RES1 0.0000 + 34 C59 4.7651 8.8111 18.8448 C.ar 1 RES1 0.0000 + 35 H40 5.3101 9.5161 18.5137 H 1 RES1 0.0000 + 36 C60 4.1382 7.9377 18.0011 C.ar 1 RES1 0.0000 + 37 H41 4.2300 8.0511 17.0625 H 1 RES1 0.0000 + 38 C61 3.3669 6.8851 18.4873 C.ar 1 RES1 0.0000 + 39 H42 2.9638 6.2861 17.8687 H 1 RES1 0.0000 + 40 C62 3.1698 6.6838 19.8409 C.ar 1 RES1 0.0000 + 41 H43 2.6408 5.9633 20.1658 H 1 RES1 0.0000 + 42 C63 3.7783 7.5818 20.7013 C.ar 1 RES1 0.0000 + 43 C64 3.9230 7.2377 24.3578 C.ar 1 RES1 0.0000 + 44 C65 3.4059 6.8408 23.1399 C.ar 1 RES1 0.0000 + 45 C66 2.5377 5.7719 23.0352 C.ar 1 RES1 0.0000 + 46 H44 2.1783 5.5288 22.1891 H 1 RES1 0.0000 + 47 C67 2.1891 5.0461 24.1850 C.ar 1 RES1 0.0000 + 48 C68 2.7093 5.4427 25.4303 C.ar 1 RES1 0.0000 + 49 H45 2.4806 4.9681 26.2204 H 1 RES1 0.0000 + 50 C69 3.5682 6.5425 25.4878 C.ar 1 RES1 0.0000 + 51 C70 4.8075 8.3505 26.4419 C.3 1 RES1 0.0000 + 52 C71 4.0602 6.8814 28.0231 C.ar 1 RES1 0.0000 + 53 C72 3.4755 5.8605 28.7664 C.ar 1 RES1 0.0000 + 54 H46 2.9742 5.1688 28.3502 H 1 RES1 0.0000 + 55 C73 3.6574 5.8950 30.1395 C.ar 1 RES1 0.0000 + 56 H47 3.2739 5.2101 30.6716 H 1 RES1 0.0000 + 57 C74 4.3871 6.9120 30.7620 C.ar 1 RES1 0.0000 + 58 H48 4.4858 6.9069 31.7061 H 1 RES1 0.0000 + 59 C75 4.9682 7.9259 30.0236 C.ar 1 RES1 0.0000 + 60 H49 5.4703 8.6160 30.4404 H 1 RES1 0.0000 + 61 C76 4.7866 7.8907 28.6493 C.ar 1 RES1 0.0000 + 62 C77 6.0362 10.4015 21.2006 C.3 1 RES1 0.0000 + 63 H50 6.0258 10.9355 22.0218 H 1 RES1 0.0000 + 64 H51 5.8062 10.9707 20.4366 H 1 RES1 0.0000 + 65 H52 6.9302 10.0230 21.0695 H 1 RES1 0.0000 + 66 C78 1.1943 3.8886 24.0231 C.3 1 RES1 0.0000 + 67 C79 1.6287 2.9643 22.8858 C.3 1 RES1 0.0000 + 68 H53 2.5581 2.6858 23.0288 H 1 RES1 0.0000 + 69 H54 1.5581 3.4410 22.0309 H 1 RES1 0.0000 + 70 H55 1.0491 2.1726 22.8676 H 1 RES1 0.0000 + 71 C80 -0.1755 4.4715 23.6742 C.3 1 RES1 0.0000 + 72 H56 -0.8088 3.7410 23.5126 H 1 RES1 0.0000 + 73 H57 -0.1008 5.0239 22.8676 H 1 RES1 0.0000 + 74 H58 -0.4961 5.0239 24.4193 H 1 RES1 0.0000 + 75 C81 1.0736 3.0748 25.3089 C.3 1 RES1 0.0000 + 76 H59 1.9638 2.7872 25.5998 H 1 RES1 0.0000 + 77 H60 0.5142 2.2864 25.1464 H 1 RES1 0.0000 + 78 H61 0.6641 3.6252 26.0075 H 1 RES1 0.0000 + 79 C82 6.0333 9.9564 27.8759 C.3 1 RES1 0.0000 + 80 H62 6.6124 10.1161 27.0997 H 1 RES1 0.0000 + 81 H63 6.5866 9.8347 28.6758 H 1 RES1 0.0000 + 82 H64 5.4393 10.7245 28.0034 H 1 RES1 0.0000 + 83 F5 -0.4354 9.3874 25.2426 F 1 RES1 0.0000 + 84 F6 9.7959 5.4605 25.4148 F 1 RES1 0.0000 + 85 F7 9.5659 5.2846 23.3939 F 1 RES1 0.0000 + 86 F8 11.0646 6.5737 24.1850 F 1 RES1 0.0000 +@BOND + 1 1 3 1 + 2 2 18 1 + 3 3 19 ar + 4 4 1 1 + 5 5 4 1 + 6 6 32 1 + 7 7 32 1 + 8 8 50 1 + 9 9 51 1 + 10 10 1 1 + 11 11 10 ar + 12 12 11 1 + 13 13 11 ar + 14 14 13 ar + 15 15 14 1 + 16 16 14 ar + 17 17 16 1 + 18 18 10 ar + 19 19 2 1 + 20 20 19 ar + 21 21 20 1 + 22 22 20 ar + 23 23 22 1 + 24 24 22 ar + 25 25 24 1 + 26 26 3 ar + 27 27 4 1 + 28 28 27 2 + 29 29 28 1 + 30 30 5 2 + 31 31 30 1 + 32 32 1 1 + 33 33 6 1 + 34 34 33 ar + 35 35 34 1 + 36 36 34 ar + 37 37 36 1 + 38 38 36 ar + 39 39 38 1 + 40 40 38 ar + 41 41 40 1 + 42 42 7 1 + 43 43 1 1 + 44 44 7 1 + 45 45 44 ar + 46 46 45 1 + 47 47 45 ar + 48 48 47 ar + 49 49 48 1 + 50 50 43 ar + 51 51 1 1 + 52 52 8 1 + 53 53 52 ar + 54 54 53 1 + 55 55 53 ar + 56 56 55 1 + 57 57 55 ar + 58 58 57 1 + 59 59 57 ar + 60 60 59 1 + 61 61 9 1 + 62 62 6 1 + 63 63 62 1 + 64 64 62 1 + 65 65 62 1 + 66 66 47 1 + 67 67 66 1 + 68 68 67 1 + 69 69 67 1 + 70 70 67 1 + 71 71 66 1 + 72 72 71 1 + 73 73 71 1 + 74 74 71 1 + 75 75 66 1 + 76 76 75 1 + 77 77 75 1 + 78 78 75 1 + 79 79 9 1 + 80 80 79 1 + 81 81 79 1 + 82 82 79 1 + 83 83 13 1 + 84 84 31 1 + 85 85 31 1 + 86 86 31 1 + 87 8 51 1 + 88 16 18 ar + 89 24 26 ar + 90 26 27 1 + 91 28 30 1 + 92 33 42 ar + 93 40 42 ar + 94 43 44 ar + 95 48 50 ar + 96 52 61 ar + 97 59 61 ar +@SUBSTRUCTURE + 1 RES1 1 GROUP 0 **** **** 0 diff --git a/bluephos/modules/octahedral_embed/__init__.py b/bluephos/modules/octahedral_embed/__init__.py new file mode 100644 index 0000000..6a80600 --- /dev/null +++ b/bluephos/modules/octahedral_embed/__init__.py @@ -0,0 +1,198 @@ +import os.path + +from rdkit import Chem +from rdkit.Chem.AllChem import ConstrainedEmbed +from rdkit.Chem.rdchem import Conformer, RWMol +from rdkit.Chem.rdChemReactions import ReactionFromSmarts +from rdkit.Chem.rdmolfiles import MolFromMol2File, MolFromSmarts +from rdkit.Chem.rdmolops import RemoveStereochemistry + + +def make_bonds_dative(mol, target_elem="Ir"): + editable_mol = RWMol(mol) + + # If you don't make a list, it loops infinitely over the bonds it's creating + for bond in list(editable_mol.GetBonds()): + iridium = None + nitrogen = None + carbene = None + if ( + bond.GetBeginAtom().GetSymbol() == target_elem + and bond.GetEndAtom().GetSymbol() in ["N", "P"] + and bond.GetEndAtom().GetFormalCharge() == 1 + ): + iridium = bond.GetBeginAtom() + nitrogen = bond.GetEndAtom() + start_idx = bond.GetEndAtomIdx() + end_idx = bond.GetBeginAtomIdx() + elif ( + bond.GetEndAtom().GetSymbol() == target_elem + and bond.GetBeginAtom().GetSymbol() in ["N", "P"] + and bond.GetBeginAtom().GetFormalCharge() == 1 + ): + iridium = bond.GetEndAtom() + nitrogen = bond.GetBeginAtom() + start_idx = bond.GetBeginAtomIdx() + end_idx = bond.GetEndAtomIdx() + if ( + bond.GetBeginAtom().GetSymbol() == target_elem + and bond.GetEndAtom().GetSymbol() == "C" + and bond.GetEndAtom().GetTotalValence() == 3 + ): + iridium = bond.GetBeginAtom() + carbene = bond.GetEndAtom() + start_idx = bond.GetEndAtomIdx() + end_idx = bond.GetBeginAtomIdx() + elif ( + bond.GetEndAtom().GetSymbol() == target_elem + and bond.GetBeginAtom().GetSymbol() == "C" + and bond.GetBeginAtom().GetTotalValence() == 3 + ): + iridium = bond.GetEndAtom() + carbene = bond.GetBeginAtom() + start_idx = bond.GetBeginAtomIdx() + end_idx = bond.GetEndAtomIdx() + + if nitrogen is not None: + # Replace N+ - Ir with N -> Ir + nitrogen.SetFormalCharge(0) + + if iridium is not None and (nitrogen is not None or carbene is not None): + editable_mol.RemoveBond(start_idx, end_idx) + editable_mol.AddBond(start_idx, end_idx, Chem.rdchem.BondType.DATIVE) + + outmol = editable_mol.GetMol() + Chem.SanitizeMol(outmol) + + return outmol + + +def transfer_conformation(mol, substruct, conformer=0): + """Given a molecule, and a second molecule which is a substructure of the + first, assign coordinates to the substructure based on the matching part of + the original molecule""" + match = mol.GetSubstructMatch(substruct) + substruct_conformation = Conformer(substruct.GetNumAtoms()) + for i, index in enumerate(match): + point = mol.GetConformer(conformer).GetAtomPosition(index) + substruct_conformation.SetAtomPosition(i, point) + substruct.AddConformer(substruct_conformation) + + +fac = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "OHUZEW.mol2"))) +RemoveStereochemistry(fac) +mer = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "OHUZIA.mol2"))) +RemoveStereochemistry(mer) + +template = MolFromSmarts("[Ir]1~n:[*]~[*]:c~1") + +carbene_fac = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "MAXYIU.mol2"))) +RemoveStereochemistry(carbene_fac) +carbene_mer = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "MAXYOA.mol2"))) +RemoveStereochemistry(carbene_mer) + + +# Extract skeletons of a molecule based on a template, keeping coordinates +# Multiple skeletons because I don't know how to do wildcards +def skeleton(template, mol): + template_matches = mol.GetSubstructMatches(template) + matching_indices = set(sum(template_matches, ())) + editable_mol = RWMol(mol) + editable_mol.BeginBatchEdit() + for atom in editable_mol.GetAtoms(): + # Remove all atoms except the matching ones + if atom.GetIdx() not in matching_indices: + editable_mol.RemoveAtom(atom.GetIdx()) + # All the atoms should have formal charge 0, not sure why they don't + atom.SetFormalCharge(0) + editable_mol.CommitBatchEdit() + skeleton_mol = editable_mol.GetMol() + return skeleton_mol + + +fac_skeleton = skeleton(template, fac) +mer_skeleton = skeleton(template, mer) + +# Making the carbene skeletons in a completely different way +# I probably am going to want to do this for all of them +carbene_skeleton_smarts = ( + "[Ir]135(<-[CH0](~N(~*)~*~2)~N(~*~2)~c~c~1)(<-[CH0](~N(~*)~*~4)~N(~*~4)~c~c~3)(<-[CH0](~N(~*)~*~6)~N(~*~6)~c~c~5)" +) +carbene_fac_skeleton = MolFromSmarts(carbene_skeleton_smarts) +transfer_conformation(carbene_fac, carbene_fac_skeleton) +carbene_mer_skeleton = MolFromSmarts(carbene_skeleton_smarts) +transfer_conformation(carbene_mer, carbene_mer_skeleton) + + +def run_three_times(mol, reaction): + for i in range(3): + mol = reaction.RunReactants([mol])[0][0] + return mol + + +reactions = [ + ReactionFromSmarts("[Ir:1]1<-[n:2]:[n:3]~[c:4]:[c:5]~1>>[Ir:1]1<-[n:2]:[c:3]~[n:4]:[c:5]~1"), + ReactionFromSmarts("[Ir:1]1<-[n:2]:[n:3]~[c:4]:[c:5]~1>>[Ir:1]1<-[n:2]:[n:3]~[n:4]:[c:5]~1"), + ReactionFromSmarts("[Ir:1]1<-[n:2]:[n:3]~[c:4]:[c:5]~1>>[Ir:1]1<-[n:2]:[c:3]~[c:4]:[c:5]~1"), +] +fac_skeletons = ( + [fac_skeleton] + [run_three_times(fac_skeleton, reaction) for reaction in reactions] + [carbene_fac_skeleton] +) +mer_skeletons = ( + [mer_skeleton] + [run_three_times(mer_skeleton, reaction) for reaction in reactions] + [carbene_mer_skeleton] +) + +# Skeletons for tridentate carbenes +# I may have to remake these later if I want to control the isomers +# For now I think it doesn't matter because all the carbene ligands are symmetric? +# For homoleptic: +biplet = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "BIPLET.mol2"))) +biplet_skeleton = MolFromSmarts( + "[Ir]1234(~[#6](~[#7](~[#6])~[#6])~[#7]~c~c~1~c~[#7]~[#6](~[#7](~[#6])~[#6])~2)~[#6](~[#7](~[#6])~[#6])~[#7]~c~c~3~c~[#7]~[#6](~[#7](~[#6])~[#6])~4" +) +transfer_conformation(biplet, biplet_skeleton) +# For heteroleptic, three with counterligands of different size +soynom = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "SOYNOM.mol2"))) +RemoveStereochemistry(soynom) +soynom_skeleton = MolFromSmarts( + "[Ir]1234(~*~*~*~*~1~*~*~*~2)~[#6](~[#7](~[#6])~[#6])~[#7]~c~c~3~c~[#7]~[#6](~[#7](~[#6])~[#6])~4" +) +transfer_conformation(soynom, soynom_skeleton) +uyokur = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "UYOKUR.mol2"))) +uyokur_skeleton = MolFromSmarts( + "[Ir]1234(~*~*~*~*~*~1~*~*~*~2)~[#6](~[#7](~[#6])~[#6])~[#7]~c~c~3~c~[#7]~[#6](~[#7](~[#6])~[#6])~4" +) +transfer_conformation(uyokur, uyokur_skeleton) +egufiz = make_bonds_dative(MolFromMol2File(os.path.join(__path__[0], "EGUFIZ.mol2"))) +egufiz_skeleton = MolFromSmarts( + "[Ir]1234(~*~*~*~*~*~1~*~*~*~*~2)~[#6](~[#7](~[#6])~[#6])~[#7]~c~c~3~c~[#7]~[#6](~[#7](~[#6])~[#6])~4" +) +transfer_conformation(egufiz, egufiz_skeleton) +# Homoleptic has to go first, since a later pattern can cover it +tridentate_skeletons = [biplet_skeleton, soynom_skeleton, uyokur_skeleton, egufiz_skeleton] + + +def octahedral_embed(mol, isomer): + # Needed for some of the mol2 files I got from CSD + # Will not be able to embed with stereochemistry + RemoveStereochemistry(mol) + if isomer == "fac": + skeletons = fac_skeletons + elif isomer == "mer": + skeletons = mer_skeletons + elif isomer == "tridentate": + skeletons = tridentate_skeletons + else: + raise ValueError(f'Isomer should be "mer" or "fac", given {isomer}') + finished = False + for skeleton in skeletons: + if len(mol.GetSubstructMatch(skeleton)) > 0: + # Carbene embedding with a large template gives output "Could not + # triangle bounds smooth molecule" and raises a ValueError. But + # with a small template the imidazole is hroribly twisted, probably + # because it thinks the atoms are aliphatic. Ignoring smoothing + # failures with the large template, it works + ConstrainedEmbed(mol, skeleton, ignoreSmoothingFailures=True) + finished = True + if not finished: + raise ValueError("Doesn't match templates")