Python rdkit.Chem.Atom() Examples
The following are 29
code examples of rdkit.Chem.Atom().
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
.
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: 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 #3
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 #4
Source File: test_scaffold.py From ScaffoldGraph with MIT License | 6 votes |
def test_ring_systems(scaffold): rings = scaffold.ring_systems assert isinstance(rings, RingSystemStack) assert hasattr(rings, 'owner') assert hasattr(rings, 'ring_indexes') assert hasattr(rings, 'atom_rings') assert hasattr(rings, 'bond_rings') assert rings.count == 2 and len(rings) == 2 assert repr(rings) == '<RingSystemStack at {}>'.format(hex(id(rings))) assert isinstance(rings[0], RingSystem) assert len([x for x in rings]) == 2 assert len(rings.atom_rings) == 2 and len(rings.bond_rings) == 2 ring = rings[1] assert hasattr(ring, 'owner') assert hasattr(ring, 'aix') assert hasattr(ring, 'bix') assert hasattr(ring, 'rix') assert all([isinstance(x, Chem.Bond) for x in ring.bonds]) assert all([isinstance(x, Chem.Atom) for x in ring.atoms]) assert isinstance(ring.size, int) assert len(ring) == len(ring.atoms) assert repr(ring) == '<RingSystem at {}>'.format(hex(id(ring))) assert isinstance(ring[0], Ring) assert len(list(ring.get_rings())) == 2
Example #5
Source File: test_scaffold.py From ScaffoldGraph with MIT License | 6 votes |
def test_rings(scaffold): rings = scaffold.rings assert isinstance(rings, RingStack) assert hasattr(rings, 'owner') assert hasattr(rings, 'info') assert hasattr(rings, 'atom_rings') assert hasattr(rings, 'bond_rings') assert rings.count == 3 and len(rings) == 3 assert repr(rings) == '<RingStack at {}>'.format(hex(id(rings))) assert isinstance(rings[0], Ring) assert len([x for x in rings]) == 3 assert isinstance(rings.info, Chem.RingInfo) assert len(rings.atom_rings) == 3 and len(rings.bond_rings) == 3 ring = rings[1] assert hasattr(ring, 'owner') assert hasattr(ring, 'aix') assert hasattr(ring, 'bix') assert all([isinstance(x, Chem.Bond) for x in ring.bonds]) assert all([isinstance(x, Chem.Atom) for x in ring.atoms]) assert isinstance(ring.size, int) assert len(ring) == len(ring.atoms) assert repr(ring) == '<Ring at {}>'.format(hex(id(ring)))
Example #6
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 #7
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 #8
Source File: chemutils.py From iclr19-graph2graph with MIT License | 5 votes |
def copy_atom(atom): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom
Example #9
Source File: jtnn.py From chemprop with MIT License | 5 votes |
def copy_atom(atom: Chem.rdchem.Atom) -> Chem.rdchem.Atom: new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom
Example #10
Source File: vocab.py From chemprop with MIT License | 5 votes |
def get_substructures(atoms: List[Chem.Atom], sizes: List[int], max_count: int = None) -> Set[FrozenSet[int]]: """ Gets up to max_count substructures (frozenset of atom indices) from a molecule. Note: Uses randomness to guarantee that the first max_count substructures found are a random sample of the substructures in the molecule. (It's not perfectly random, depending on the graph structure, but probably good enough for our purposes. There's a bit of bias toward substructures on the periphery.) :param atoms: A list of atoms in the molecule. :param sizes: The sizes of substructures to find. :param max_count: The maximum number of substructures to find. :return: A set of substructures where each substructure is a frozenset of indices. """ max_count = max_count or float('inf') random.shuffle(atoms) substructures = set() for atom in atoms: # Get all substructures up to max size starting from atom new_substructures = get_substructures_from_atom(atom, max(sizes)) # Filter substructures to those which are one of the desired sizes new_substructures = [substructure for substructure in new_substructures if len(substructure) in sizes] for new_substructure in new_substructures: if len(substructures) >= max_count: return substructures substructures.add(new_substructure) return substructures
Example #11
Source File: vocab.py From chemprop with MIT License | 5 votes |
def get_substructures_from_atom(atom: Chem.Atom, max_size: int, substructure: Set[int] = None) -> Set[FrozenSet[int]]: """ Recursively gets all substructures up to a maximum size starting from an atom in a substructure. :param atom: The atom to start at. :param max_size: The maximum size of the substructure to fine. :param substructure: The current substructure that atom is in. :return: A set of substructures starting at atom where each substructure is a frozenset of indices. """ assert max_size >= 1 if substructure is None: substructure = {atom.GetIdx()} substructures = {frozenset(substructure)} if len(substructure) == max_size: return substructures # Get neighbors which are not already in the substructure new_neighbors = [neighbor for neighbor in atom.GetNeighbors() if neighbor.GetIdx() not in substructure] for neighbor in new_neighbors: # Define new substructure with neighbor new_substructure = deepcopy(substructure) new_substructure.add(neighbor.GetIdx()) # Skip if new substructure has already been considered if frozenset(new_substructure) in substructures: continue # Recursively get substructures including this substructure plus neighbor new_substructures = get_substructures_from_atom(neighbor, max_size, new_substructure) # Add those substructures to current set of substructures substructures |= new_substructures return substructures
Example #12
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 #13
Source File: test_scaffold.py From ScaffoldGraph with MIT License | 5 votes |
def test_atoms(scaffold): atoms = scaffold.atoms assert len(atoms) == scaffold.mol.GetNumAtoms() assert all([isinstance(x, Chem.Atom) for x in atoms])
Example #14
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 #15
Source File: utils.py From MolGAN with MIT License | 5 votes |
def classification_report(data, model, session, sample=False): _, _, _, a, x, _, f, _, _ = data.next_validation_batch() 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) y_true = e.flatten() y_pred = a.flatten() target_names = [str(Chem.rdchem.BondType.values[int(e)]) for e in data.bond_decoder_m.values()] print('######## Classification Report ########\n') print(sk_classification_report(y_true, y_pred, labels=list(range(len(target_names))), target_names=target_names)) print('######## Confusion Matrix ########\n') print(confusion_matrix(y_true, y_pred, labels=list(range(len(target_names))))) y_true = n.flatten() y_pred = x.flatten() target_names = [Chem.Atom(e).GetSymbol() for e in data.atom_decoder_m.values()] print('######## Classification Report ########\n') print(sk_classification_report(y_true, y_pred, labels=list(range(len(target_names))), target_names=target_names)) print('\n######## Confusion Matrix ########\n') print(confusion_matrix(y_true, y_pred, labels=list(range(len(target_names)))))
Example #16
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 #17
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 #18
Source File: utils.py From constrained-graph-variational-autoencoder with MIT License | 5 votes |
def add_atoms(new_mol, node_symbol, dataset): for number in node_symbol: if dataset=='qm9' or dataset=='cep': idx=new_mol.AddAtom(Chem.Atom(dataset_info(dataset)['number_to_atom'][number])) elif dataset=='zinc': new_atom = Chem.Atom(dataset_info(dataset)['number_to_atom'][number]) charge_num=int(dataset_info(dataset)['atom_types'][number].split('(')[1].strip(')')) new_atom.SetFormalCharge(charge_num) new_mol.AddAtom(new_atom)
Example #19
Source File: eval.py From nips17-rexgen with MIT License | 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()) 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 #20
Source File: edit_mol.py From nips17-rexgen with MIT License | 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()) 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 #21
Source File: eval.py From nips17-rexgen with MIT License | 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()) 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 #22
Source File: chemutils.py From icml18-jtnn with MIT License | 5 votes |
def copy_atom(atom): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom
Example #23
Source File: chemutils.py From icml18-jtnn with MIT License | 5 votes |
def copy_atom(atom): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom
Example #24
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 #25
Source File: chemutils.py From dgl with Apache License 2.0 | 5 votes |
def copy_atom(atom): new_atom = Chem.Atom(atom.GetSymbol()) new_atom.SetFormalCharge(atom.GetFormalCharge()) new_atom.SetAtomMapNum(atom.GetAtomMapNum()) return new_atom
Example #26
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 #27
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 #28
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 #29
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