Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from rdkit import Chem
- import itertools
- atoms = ["C","N","O","F","Si","P","S","Cl","Br","I"]
- bonds = ["","=","#"]
- raw_smiles = []
- mols = []
- smiles_list = []
- atom_pairs = list(itertools.product(atoms, repeat=2))
- for a,b in atom_pairs:
- for x in bonds:
- raw_smiles.append(a+x+b)
- atom_triples = list(itertools.product(atoms, repeat=3))
- bond_pairs = list(itertools.product(bonds, repeat=2))
- for a,b,c in atom_triples:
- for x,y in bond_pairs:
- raw_smiles.append(a+x+b+y+c)
- atom_quads = list(itertools.product(atoms, repeat=4))
- bond_triples = list(itertools.product(bonds, repeat=3))
- for a,b,c,d in atom_quads:
- for x,y,z in bond_triples:
- raw_smiles.append(a+x+b+"("+y+c+")"+z+d)
- atom_pents = list(itertools.product(atoms, repeat=5))
- bond_quads = list(itertools.product(bonds, repeat=4))
- for a,b,c,d,e in atom_pents:
- for x,y,z,zz in bond_quads:
- raw_smiles.append(a+x+b+"("+y+c+")"+"("+z+d+")"+zz+e)
- for smiles in raw_smiles:
- try:
- mol = Chem.MolFromSmiles(smiles)
- except:
- continue
- if mol != None:
- smiles = Chem.MolToSmiles(Chem.MolFromSmiles(smiles))
- if smiles not in smiles_list:
- smiles_list.append(smiles)
- mols.append(mol)
- print len(mols)
Add Comment
Please, Sign In to add comment