Python rdkit.Chem.RWMol() Examples
The following are 30
code examples of rdkit.Chem.RWMol().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
rdkit.Chem
, or try the search function
.
![](https://www.programcreek.com/common/static/images/search.png)
Example #1
Source File: eval_by_smiles.py From ASKCOS with Mozilla Public License 2.0 | 9 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) if atom.GetIsAromatic() and atom.GetSymbol() == 'N': new_atom.SetNumExplicitHs(atom.GetTotalNumHs()) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol
Example #2
Source File: chemutils.py From hgraph2graph with MIT License | 6 votes |
def get_sub_mol(mol, sub_atoms): new_mol = Chem.RWMol() atom_map = {} for idx in sub_atoms: atom = mol.GetAtomWithIdx(idx) atom_map[idx] = new_mol.AddAtom(atom) sub_atoms = set(sub_atoms) for idx in sub_atoms: a = mol.GetAtomWithIdx(idx) for b in a.GetNeighbors(): if b.GetIdx() not in sub_atoms: continue bond = mol.GetBondBetweenAtoms(a.GetIdx(), b.GetIdx()) bt = bond.GetBondType() if a.GetIdx() < b.GetIdx(): #each bond is enumerated twice new_mol.AddBond(atom_map[a.GetIdx()], atom_map[b.GetIdx()], bt) return new_mol.GetMol()
Example #3
Source File: chemutils.py From hgraph2graph with MIT License | 6 votes |
def get_sub_mol(mol, sub_atoms): new_mol = Chem.RWMol() atom_map = {} for idx in sub_atoms: atom = mol.GetAtomWithIdx(idx) atom_map[idx] = new_mol.AddAtom(atom) sub_atoms = set(sub_atoms) for idx in sub_atoms: a = mol.GetAtomWithIdx(idx) for b in a.GetNeighbors(): if b.GetIdx() not in sub_atoms: continue bond = mol.GetBondBetweenAtoms(a.GetIdx(), b.GetIdx()) bt = bond.GetBondType() if a.GetIdx() < b.GetIdx(): #each bond is enumerated twice new_mol.AddBond(atom_map[a.GetIdx()], atom_map[b.GetIdx()], bt) return new_mol.GetMol()
Example #4
Source File: chemutils.py From hgraph2graph with MIT License | 6 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) #if bt == Chem.rdchem.BondType.AROMATIC and not aromatic: # bt = Chem.rdchem.BondType.SINGLE return new_mol
Example #5
Source File: mol_graph.py From nips17-rexgen with MIT License | 6 votes |
def find_rings(rmol, rbonds, core_bonds): n_atoms = rmol.GetNumAtoms() new_mol = Chem.RWMol(rmol) amap = {} for atom in rmol.GetAtoms(): amap[atom.GetIntProp('molAtomMapNumber') - 1] = atom.GetIdx() for x,y in core_bonds: if (x,y) not in rbonds: new_mol.AddBond(amap[x],amap[y],bond_types[0]) old_rings = [list(x) for x in Chem.GetSymmSSSR(rmol)] new_rings = [list(x) for x in Chem.GetSymmSSSR(new_mol)] old_rings = [[rmol.GetAtomWithIdx(x).GetIntProp('molAtomMapNumber') - 1 for x in alist] for alist in old_rings] new_rings = [[rmol.GetAtomWithIdx(x).GetIntProp('molAtomMapNumber') - 1 for x in alist] for alist in new_rings] new_rmap = {tuple(sorted(x)) : x for x in new_rings} old_rings = set([tuple(sorted(x)) for x in old_rings]) new_rings = set([tuple(sorted(x)) for x in new_rings]) new_rings = list(new_rings - old_rings) return [new_rmap[x] for x in new_rings if 5 <= len(x) <= 6]
Example #6
Source File: fixer.py From oddt with BSD 3-Clause "New" or "Revised" License | 6 votes |
def MolToTemplates(mol): """Prepare set of templates for a given PDB residue.""" if mol.HasProp('_Name') and mol.GetProp('_Name') in ['DA', 'DG', 'DT', 'DC', 'A', 'G', 'T', 'C', 'U']: backbone = 'OP(=O)(O)OC' else: backbone = 'OC(=O)CN' match = mol.GetSubstructMatch(Chem.MolFromSmiles(backbone)) mol2 = Chem.RWMol(mol) if match: mol2.RemoveAtom(match[0]) Chem.SanitizeMol(mol2) mol2 = mol2.GetMol() return (mol, mol2)
Example #7
Source File: utils.py From graph-nvp with MIT License | 6 votes |
def construct_mol(x, A, atomic_num_list): mol = Chem.RWMol() # x (ch, num_node) atoms = np.argmax(x, axis=1) # last a atoms_exist = atoms != len(atomic_num_list) - 1 atoms = atoms[atoms_exist] # print('num atoms: {}'.format(sum(atoms>0))) for atom in atoms: mol.AddAtom(Chem.Atom(int(atomic_num_list[atom]))) # A (edge_type, num_node, num_node) adj = np.argmax(A, axis=0) adj = np.array(adj) adj = adj[atoms_exist, :][:, atoms_exist] adj[adj == 3] = -1 adj += 1 for start, end in zip(*np.nonzero(adj)): if start > end: mol.AddBond(int(start), int(end), bond_decoder_m[adj[start, end]]) return mol
Example #8
Source File: utils.py From graph-nvp with MIT License | 6 votes |
def Tensor2Mol(A, x): mol = Chem.RWMol() # x[x < 0] = 0. # A[A < 0] = -1 # atoms_exist = np.sum(x, 1) != 0 atoms = np.argmax(x, 1) atoms_exist = atoms != 4 atoms = atoms[atoms_exist] atoms += 6 adj = np.argmax(A, 0) adj = np.array(adj) adj = adj[atoms_exist, :][:, atoms_exist] adj[adj == 3] = -1 adj += 1 # print('num atoms: {}'.format(sum(atoms>0))) for atom in atoms: mol.AddAtom(Chem.Atom(int(atom))) for start, end in zip(*np.nonzero(adj)): if start > end: mol.AddBond(int(start), int(end), bond_decoder_m[adj[start, end]]) return mol
Example #9
Source File: sparse_molecular_dataset.py From MolGAN with MIT License | 6 votes |
def matrices2mol(self, node_labels, edge_labels, strict=False): mol = Chem.RWMol() for node_label in node_labels: mol.AddAtom(Chem.Atom(self.atom_decoder_m[node_label])) for start, end in zip(*np.nonzero(edge_labels)): if start > end: mol.AddBond(int(start), int(end), self.bond_decoder_m[edge_labels[start, end]]) if strict: try: Chem.SanitizeMol(mol) except: mol = None return mol
Example #10
Source File: edit_mol.py From ASKCOS with Mozilla Public License 2.0 | 5 votes |
def edit_mol(rmol, edits): n_atoms = rmol.GetNumAtoms() new_mol = Chem.RWMol(rmol) amap = {} numH = {} for atom in rmol.GetAtoms(): amap[atom.GetIntProp('molAtomMapNumber')] = atom.GetIdx() numH[atom.GetIntProp('molAtomMapNumber')] = atom.GetNumExplicitHs() for x,y,t in edits: bond = new_mol.GetBondBetweenAtoms(amap[x],amap[y]) a1 = new_mol.GetAtomWithIdx(amap[x]) a2 = new_mol.GetAtomWithIdx(amap[y]) if bond is not None: val = BOND_TYPE.index(bond.GetBondType()) new_mol.RemoveBond(amap[x],amap[y]) numH[x] += val numH[y] += val if t > 0: new_mol.AddBond(amap[x],amap[y],BOND_TYPE[t]) numH[x] -= t numH[y] -= t for atom in new_mol.GetAtoms(): val = numH[atom.GetIntProp('molAtomMapNumber')] if val >= 0: atom.SetNumExplicitHs(val) pred_mol = new_mol.GetMol() for atom in pred_mol.GetAtoms(): atom.ClearProp('molAtomMapNumber') pred_smiles = Chem.MolToSmiles(pred_mol) return pred_smiles
Example #11
Source File: rdkit.py From QCEngine with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _process_molecule_rdkit(jmol): from rdkit import Chem # Handle errors if abs(jmol.molecular_charge) > 1.0e-6: raise InputError("RDKit does not currently support charged molecules.") if not jmol.connectivity: # Check for empty list raise InputError("RDKit requires molecules to have a connectivity graph.") # Build out the base molecule base_mol = Chem.Mol() rw_mol = Chem.RWMol(base_mol) for sym in jmol.symbols: rw_mol.AddAtom(Chem.Atom(sym.title())) # Add in connectivity bond_types = {1: Chem.BondType.SINGLE, 2: Chem.BondType.DOUBLE, 3: Chem.BondType.TRIPLE} for atom1, atom2, bo in jmol.connectivity: rw_mol.AddBond(atom1, atom2, bond_types[bo]) mol = rw_mol.GetMol() # Write out the conformer natom = len(jmol.symbols) conf = Chem.Conformer(natom) bohr2ang = ureg.conversion_factor("bohr", "angstrom") for line in range(natom): conf.SetAtomPosition( line, ( bohr2ang * jmol.geometry[line, 0], bohr2ang * jmol.geometry[line, 1], bohr2ang * jmol.geometry[line, 2], ), ) mol.AddConformer(conf) Chem.rdmolops.SanitizeMol(mol) return mol
Example #12
Source File: edit_mol_direct_useScores.py From ASKCOS with Mozilla Public License 2.0 | 5 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) # TODO: How to deal with changing formal charge? new_atom.SetAtomMapNum(atom.GetAtomMapNum()) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol
Example #13
Source File: edit_mol_direct_useScores.py From ASKCOS with Mozilla Public License 2.0 | 5 votes |
def edit_mol(rmol, edits, tatoms): #new_mol = copy_edit_mol(rmol) new_mol = Chem.RWMol(rmol) [a.SetNumExplicitHs(0) for a in new_mol.GetAtoms()] amap = {} for atom in rmol.GetAtoms(): amap[atom.GetAtomMapNum() - 1] = atom.GetIdx() for x,y,t,v in edits: bond = new_mol.GetBondBetweenAtoms(amap[x],amap[y]) # a1 = new_mol.GetAtomWithIdx(amap[x]) # a2 = new_mol.GetAtomWithIdx(amap[y]) if bond is not None: new_mol.RemoveBond(amap[x],amap[y]) if t > 0: new_mol.AddBond(amap[x],amap[y],BOND_FLOAT_TO_TYPE[t]) pred_mol = new_mol.GetMol() pred_smiles = Chem.MolToSmiles(pred_mol) pred_list = pred_smiles.split('.') pred_mols = [] for pred_smiles in pred_list: mol = Chem.MolFromSmiles(pred_smiles) if mol is None: continue atom_set = set([atom.GetAtomMapNum() - 1 for atom in mol.GetAtoms()]) if len(atom_set & tatoms) == 0: continue for atom in mol.GetAtoms(): atom.SetAtomMapNum(0) pred_mols.append(mol) return '.'.join( sorted([Chem.MolToSmiles(pred_mol) for pred_mol in pred_mols]) )
Example #14
Source File: utils.py From MolGAN with MIT License | 5 votes |
def mols2grid_image(mols, molsPerRow): mols = [e if e is not None else Chem.RWMol() for e in mols] for mol in mols: AllChem.Compute2DCoords(mol) return Draw.MolsToGridImage(mols, molsPerRow=molsPerRow, subImgSize=(150, 150))
Example #15
Source File: utils.py From MolGAN with MIT License | 5 votes |
def reconstructions(data, model, session, batch_dim=10, sample=False): m0, _, _, a, x, _, f, _, _ = data.next_train_batch(batch_dim) n, e = session.run([model.nodes_gumbel_argmax, model.edges_gumbel_argmax] if sample else [ model.nodes_argmax, model.edges_argmax], feed_dict={model.edges_labels: a, model.nodes_labels: x, model.node_features: f, model.training: False, model.variational: False}) n, e = np.argmax(n, axis=-1), np.argmax(e, axis=-1) m1 = np.array([e if e is not None else Chem.RWMol() for e in [data.matrices2mol(n_, e_, strict=True) for n_, e_ in zip(n, e)]]) mols = np.vstack((m0, m1)).T.flatten() return mols
Example #16
Source File: xyz2mol.py From xyz2mol with MIT License | 5 votes |
def get_proto_mol(atoms): """ """ mol = Chem.MolFromSmarts("[#" + str(atoms[0]) + "]") rwMol = Chem.RWMol(mol) for i in range(1, len(atoms)): a = Chem.Atom(atoms[i]) rwMol.AddAtom(a) mol = rwMol.GetMol() return mol
Example #17
Source File: __init__.py From oddt with BSD 3-Clause "New" or "Revised" License | 5 votes |
def AtomListToSubMol(mol, amap, includeConformer=False): """ Parameters ---------- mol: rdkit.Chem.rdchem.Mol Molecule amap: array-like List of atom indices (zero-based) includeConformer: bool (default=True) Toogle to include atoms coordinates in submolecule. Returns ------- submol: rdkit.Chem.rdchem.RWMol Submol determined by specified atom list """ if not isinstance(amap, list): amap = list(amap) submol = Chem.RWMol(Chem.Mol()) for aix in amap: submol.AddAtom(mol.GetAtomWithIdx(aix)) for i, j in combinations(amap, 2): bond = mol.GetBondBetweenAtoms(i, j) if bond: submol.AddBond(amap.index(i), amap.index(j), bond.GetBondType()) if includeConformer: for conf in mol.GetConformers(): new_conf = Chem.Conformer(len(amap)) for i in range(len(amap)): new_conf.SetAtomPosition(i, conf.GetAtomPosition(amap[i])) new_conf.SetId(conf.GetId()) new_conf.Set3D(conf.Is3D()) submol.AddConformer(new_conf) return submol
Example #18
Source File: xyz2mol.py From BCAI_kaggle_CHAMPS with MIT License | 5 votes |
def BO2mol(mol,BO_matrix, atomicNumList,atomic_valence_electrons,mol_charge,charged_fragments): # based on code written by Paolo Toscani l = len(BO_matrix) l2 = len(atomicNumList) BO_valences = list(BO_matrix.sum(axis=1)) if (l != l2): raise RuntimeError('sizes of adjMat ({0:d}) and atomicNumList ' '{1:d} differ'.format(l, l2)) rwMol = Chem.RWMol(mol) bondTypeDict = { 1: Chem.BondType.SINGLE, 2: Chem.BondType.DOUBLE, 3: Chem.BondType.TRIPLE } for i in range(l): for j in range(i + 1, l): bo = int(round(BO_matrix[i, j])) if (bo == 0): continue bt = bondTypeDict.get(bo, Chem.BondType.SINGLE) rwMol.AddBond(i, j, bt) mol = rwMol.GetMol() if charged_fragments: mol = set_atomic_charges(mol,atomicNumList,atomic_valence_electrons,BO_valences,BO_matrix,mol_charge) else: mol = set_atomic_radicals(mol,atomicNumList,atomic_valence_electrons,BO_valences) return mol
Example #19
Source File: xyz2mol.py From BCAI_kaggle_CHAMPS with MIT License | 5 votes |
def get_proto_mol(atomicNumList): mol = Chem.MolFromSmarts("[#"+str(atomicNumList[0])+"]") rwMol = Chem.RWMol(mol) for i in range(1,len(atomicNumList)): a = Chem.Atom(atomicNumList[i]) rwMol.AddAtom(a) mol = rwMol.GetMol() return mol
Example #20
Source File: jtnn.py From chemprop with MIT License | 5 votes |
def copy_edit_mol(mol: Chem.rdchem.Mol) -> Chem.rdchem.Mol: new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol
Example #21
Source File: chemutils.py From iclr19-graph2graph with MIT License | 5 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol
Example #22
Source File: inc_graph.py From hgraph2graph with MIT License | 5 votes |
def __init__(self, avocab, batch_size, node_fdim, edge_fdim, max_nodes=100, max_edges=300, max_nb=10): super(IncGraph, self).__init__(batch_size, node_fdim, edge_fdim, max_nodes, max_edges, max_nb) self.avocab = avocab self.mol = Chem.RWMol() self.mol.AddAtom( Chem.Atom('C') ) #make sure node is 1 index, consistent to self.graph self.fnode = self.fnode.float() self.fmess = self.fmess.float() self.batch = defaultdict(list)
Example #23
Source File: chemutils.py From hgraph2graph with MIT License | 5 votes |
def find_fragments(mol): new_mol = Chem.RWMol(mol) for atom in new_mol.GetAtoms(): atom.SetAtomMapNum(atom.GetIdx()) for bond in mol.GetBonds(): if bond.IsInRing(): continue a1 = bond.GetBeginAtom() a2 = bond.GetEndAtom() if a1.IsInRing() and a2.IsInRing(): new_mol.RemoveBond(a1.GetIdx(), a2.GetIdx()) elif a1.IsInRing() and a2.GetDegree() > 1: new_idx = new_mol.AddAtom(copy_atom(a1)) new_mol.GetAtomWithIdx(new_idx).SetAtomMapNum(a1.GetIdx()) new_mol.AddBond(new_idx, a2.GetIdx(), bond.GetBondType()) new_mol.RemoveBond(a1.GetIdx(), a2.GetIdx()) elif a2.IsInRing() and a1.GetDegree() > 1: new_idx = new_mol.AddAtom(copy_atom(a2)) new_mol.GetAtomWithIdx(new_idx).SetAtomMapNum(a2.GetIdx()) new_mol.AddBond(new_idx, a1.GetIdx(), bond.GetBondType()) new_mol.RemoveBond(a1.GetIdx(), a2.GetIdx()) new_mol = new_mol.GetMol() new_smiles = Chem.MolToSmiles(new_mol) hopts = [] for fragment in new_smiles.split('.'): fmol = Chem.MolFromSmiles(fragment) indices = set([atom.GetAtomMapNum() for atom in fmol.GetAtoms()]) fmol = get_clique_mol(mol, indices) fmol = sanitize(fmol, kekulize=False) fsmiles = Chem.MolToSmiles(fmol) hopts.append((fsmiles, indices)) return hopts
Example #24
Source File: chemutils.py From hgraph2graph with MIT License | 5 votes |
def copy_atom(atom, atommap=True): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) if atommap: new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom #mol must be RWMol object
Example #25
Source File: chemutils.py From hgraph2graph with MIT License | 5 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) #if bt == Chem.rdchem.BondType.AROMATIC and not aromatic: # bt = Chem.rdchem.BondType.SINGLE return new_mol
Example #26
Source File: chemutils.py From hgraph2graph with MIT License | 5 votes |
def copy_atom(atom, atommap=True): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) if atommap: new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom #mol must be RWMol object
Example #27
Source File: dataset_utils.py From rl_graph_generation with BSD 3-Clause "New" or "Revised" License | 5 votes |
def nx_to_mol(G): mol = Chem.RWMol() atomic_nums = nx.get_node_attributes(G, 'atomic_num') chiral_tags = nx.get_node_attributes(G, 'chiral_tag') formal_charges = nx.get_node_attributes(G, 'formal_charge') node_is_aromatics = nx.get_node_attributes(G, 'is_aromatic') node_hybridizations = nx.get_node_attributes(G, 'hybridization') num_explicit_hss = nx.get_node_attributes(G, 'num_explicit_hs') node_to_idx = {} for node in G.nodes(): a=Chem.Atom(atomic_nums[node]) a.SetChiralTag(chiral_tags[node]) a.SetFormalCharge(formal_charges[node]) a.SetIsAromatic(node_is_aromatics[node]) a.SetHybridization(node_hybridizations[node]) a.SetNumExplicitHs(num_explicit_hss[node]) idx = mol.AddAtom(a) node_to_idx[node] = idx bond_types = nx.get_edge_attributes(G, 'bond_type') for edge in G.edges(): first, second = edge ifirst = node_to_idx[first] isecond = node_to_idx[second] bond_type = bond_types[first, second] mol.AddBond(ifirst, isecond, bond_type) Chem.SanitizeMol(mol) return mol
Example #28
Source File: chemutils.py From dgl with Apache License 2.0 | 5 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol
Example #29
Source File: chem.py From spektral with MIT License | 5 votes |
def numpy_to_rdkit(adj, nf, ef, sanitize=False): """ Converts a molecule from numpy to RDKit format. :param adj: binary numpy array of shape (N, N) :param nf: numpy array of shape (N, F) :param ef: numpy array of shape (N, N, S) :param sanitize: whether to sanitize the molecule after conversion :return: an RDKit molecule """ if rdc is None: raise ImportError('`numpy_to_rdkit` requires RDKit.') mol = rdc.RWMol() for nf_ in nf: atomic_num = int(nf_) if atomic_num > 0: mol.AddAtom(rdc.Atom(atomic_num)) for i, j in zip(*np.triu_indices(adj.shape[-1])): if i != j and adj[i, j] == adj[j, i] == 1 and not mol.GetBondBetweenAtoms(int(i), int(j)): bond_type_1 = BOND_MAP[int(ef[i, j, 0])] bond_type_2 = BOND_MAP[int(ef[j, i, 0])] if bond_type_1 == bond_type_2: mol.AddBond(int(i), int(j), bond_type_1) mol = mol.GetMol() if sanitize: rdc.SanitizeMol(mol) return mol
Example #30
Source File: chemutils.py From icml18-jtnn with MIT License | 5 votes |
def copy_edit_mol(mol): new_mol = Chem.RWMol(Chem.MolFromSmiles('')) for atom in mol.GetAtoms(): new_atom = copy_atom(atom) new_mol.AddAtom(new_atom) for bond in mol.GetBonds(): a1 = bond.GetBeginAtom().GetIdx() a2 = bond.GetEndAtom().GetIdx() bt = bond.GetBondType() new_mol.AddBond(a1, a2, bt) return new_mol