def depict_smile(genecluster, structuresfolder): indigo = Indigo() renderer = IndigoRenderer(indigo) query = indigo.loadMoleculeFromFile("genecluster" + str(genecluster) + ".smi") indigo.setOption("render-coloring", True) renderer.renderToFile(query, "genecluster" + str(genecluster) + ".png") indigo.setOption("render-image-size", 200, 150) renderer.renderToFile(query, "genecluster" + str(genecluster) + "_icon.png") dircontents = os.listdir(os.getcwd()) geneclusterstring = "genecluster" + str(genecluster) + ".png" if geneclusterstring in dircontents: shutil.copy("genecluster" + str(genecluster) + ".png", structuresfolder) shutil.copy("genecluster" + str(genecluster) + "_icon.png", structuresfolder) shutil.copy("genecluster" + str(genecluster) + ".smi", structuresfolder) os.remove("genecluster" + str(genecluster) + ".png") os.remove("genecluster" + str(genecluster) + "_icon.png") os.remove("genecluster" + str(genecluster) + ".smi") smiles_input = path.join('SMILES', 'input') if path.exists(smiles_input): os.remove(smiles_input) return "success" else: return "failed"
def resetIndigo(): global indigo, indigoRenderer, indigoInchi indigo = Indigo() indigoRenderer = IndigoRenderer(indigo) indigoInchi = IndigoInchi(indigo) # Set default options indigo.setOption('render-bond-length', '30') indigo.setOption('render-relative-thickness', '1.3') indigo.setOption('render-coloring', False) indigo.setOption('render-comment-font-size', 14.0) indigo.setOption('render-comment-offset', '10')
def wrapper(): indigo = Indigo() opts = request.json.get('options', {}) for key, value in opts.items(): try: indigo.setOption(key, value) except IndigoException as e: pass mol_text = request.json.get("struct") try: mol = indigo.loadMolecule(mol_text) except IndigoException as e: return jsonify({'msg': str(e)}) return func(mol)
def get_molfile_v3000(compound: str) -> str: """Computes the molfile v3000 from a compound string. Args: compound: A molfile (either v2000 or v3000), MRV file, etc. Returns: The molfile v3000. """ indigo = Indigo() indigo.setOption("molfile-saving-mode", "3000") molecule = indigo.loadMolecule(compound) return molecule.molfile()
def indigo_atom_map_reaction(rxn_smiles: str, timeout_period: int, existing_mapping="discard", verbose=False): try: # Instantiate the Indigo class object and set the timeout period. indigo_mapper = Indigo() indigo_mapper.setOption("aam-timeout", timeout_period) # Return the atom mapping of the reaction SMILES string. rxn = indigo_mapper.loadReaction(rxn_smiles) rxn.automap(existing_mapping) return rxn.smiles() # If an exception occurs for any reason, print the message if indicated, and return None. except Exception as exception: if verbose: print( "Exception occured during atom mapping of the reaction SMILES. Detailed message: {}" .format(exception)) return None
def smiles(smiles_string): # Render SMILES to PNG indigo = Indigo() renderer = IndigoRenderer(indigo) mol = indigo.loadMolecule(smiles_string) mol.layout() # if not called, will be done automatically by the renderer indigo.setOption("render-output-format", "png") indigo.setOption("render-image-size", 250, 250) indigo.setOption("render-background-color", 1.0, 1.0, 1.0) indigo.setOption("render-coloring", True) indigo.setOption("aromaticity-model", "generic") mol.dearomatize() buf = renderer.renderToBuffer(mol) buf = io.BytesIO(buf) return send_file( buf, mimetype='image/png', as_attachment=False, )
def wrapper(): indigo = Indigo() opts = request.json.get('options', {}) for key, value in opts.items(): indigo.setOption(key, value) return func()
# Indigo code acquired from http://www.ggasoftware.com/ from indigo import Indigo from indigo_renderer import IndigoRenderer import uuid import rsvg import gtk BORDER_WIDTH = 0 # for more rendering options visit: # http://www.ggasoftware.com/opensource/indigo/api/options#rendering _indigo = Indigo() _renderer = IndigoRenderer(_indigo) _indigo.setOption('render-output-format', 'svg') _indigo.setOption('render-margins', 10, 10) _indigo.setOption('render-stereo-style', 'none') _indigo.setOption('render-implicit-hydrogens-visible', False) _indigo.setOption('render-coloring', True) _indigo.setOption('render-bond-length', 20.0) _indigo.setOption('render-label-mode', 'hetero') def smiles2svg(smiles, comment=''): _indigo.setOption('render-comment', comment) m = _indigo.loadMolecule(smiles) m.aromatize() m.layout() s = _renderer.renderToBuffer(m).tostring() id = str(uuid.uuid4()) i = 0 while True:
# Indigo code acquired from http://www.ggasoftware.com/ from indigo import Indigo from indigo_renderer import IndigoRenderer import uuid import rsvg import gtk BORDER_WIDTH = 0 # for more rendering options visit: # http://www.ggasoftware.com/opensource/indigo/api/options#rendering _indigo = Indigo() _renderer = IndigoRenderer(_indigo) _indigo.setOption('render-output-format', 'svg') _indigo.setOption('render-margins', 10, 10) _indigo.setOption('render-stereo-style', 'none') _indigo.setOption('render-implicit-hydrogens-visible', False) _indigo.setOption('render-coloring', True) _indigo.setOption('render-bond-length', 20.0) _indigo.setOption('render-label-mode', 'hetero') def smiles2svg(smiles, comment=''): _indigo.setOption('render-comment', comment) m = _indigo.loadMolecule(smiles) m.aromatize() m.layout() s = _renderer.renderToBuffer(m).tostring() id = str(uuid.uuid4()) i = 0
def indigo_structure(self): indigo = Indigo() indigo.setOption("molfile-saving-mode", "3000") return indigo.loadStructure(structureStr=self.molfile_v3000)
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0 ] print("Add packed fingerprints to Indigo:") fp_size_bytes = 64 # or 512 bits, or 8 qwords from indigo import Indigo from bingo import Bingo indigo = Indigo() bingo = Bingo.createDatabaseFile(indigo, path.join('tempdb'), 'molecule', '') indigo.setOption("fp-sim-qwords", fp_size_bytes / 8) indigo.setOption("fp-ext-enabled", True) indigo.setOption("fp-ord-qwords", 0) # optional indigo.setOption("fp-tau-qwords", 0) # optional indigo.setOption("fp-any-qwords", 0) # optional molecules = [] for id in range(len(df_descriptors)): smiles = df_descriptors.ix[id, 'Structure'] descriptors = list(df_descriptors.ix[id])[2:] normalized = [(f - min_bounds[i]) / (max_bounds[i] - min_bounds[i]) for i, f in enumerate(descriptors)] fp = pack_normalized_descriptors_to_fingerprint( normalized, density=0.3, byte_size=fp_size_bytes)
'C1CC(=O)NC2=C1C=CC(=C2)OCCCCN3CCN(CC3)C4=C(C(=CC=C4)Cl)Cl', 'CNC1(CCCCC1=O)C2=CC=CC=C2Cl', 'CN1C2CCC1C(C(C2)OC(=O)C3=CC=CC=C3)C(=O)OC', 'CCCC1=NN(C2=C1NC(=NC2=O)C3=C(C=CC(=C3)S(=O)(=O)N4CCN(CC4)C)OCC)C' ] for i, sml in enumerate(smiles): print("#%2d: %s" % (i, sml)) df_descriptors = [] indigo = Indigo() # indigo.setOption("similarity-type", "sim") # indigo.setOption("similarity-type", "chem") # indigo.setOption("similarity-type", "ECFP2") indigo.setOption("similarity-type", "ECFP4") # indigo.setOption("similarity-type", "ECFP6") # indigo.setOption("similarity-type", "ECFP8") fingerprints = [] for sml in smiles: mol = indigo.loadMolecule(sml) fp = mol.fingerprint("sim") fingerprints += [fp] print("*** Fingerprints ***") for i, fp in enumerate(fingerprints): str = fp.toString() density = fp_density(str) print("#%2d: Density: %f ; FP: %s" % (i, density, str))