Recently Kei Ono who is developer of cytoscape developed cyjupyter.
It seems attractive for me because the library can draw network diagram on jupyter notebook.
There are many network structured data in chemoinformatics. For example molecule, molecular similarity map and MMP etc… I used the library to draw similarity map of molecules today.
I am newbie of the library, so following code is very simple but there are several useful examples are provided in official repository.
At first, load modules.
import os import numpy as np import igraph from py2cytoscape import util from cyjupyter import Cytoscape from rdkit import Chem from rdkit.Chem import DataStructs from rdkit.Chem import AllChem from rdkit import RDConfig from rdkit.Chem import Draw from rdkit.Chem.Draw import IPythonConsole
I used CDK2.sdf as a sample dataset
filedir = os.path.join(RDConfig.RDDocsDir,'Book/data/cdk2.sdf') mols = [mol for mol in Chem.SDMolSupplier(filedir) if mol != None] for mol in mols: AllChem.Compute2DCoords(mol) fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2) for mol in mols] smiles_list = [Chem.MolToSmiles(mol) for mol in mols]
Then make graph object, node as an each molecule and make edge if tanimoto similarity more 0.5.
g = igraph.Graph() for smiles in smiles_list: g.add_vertex(name=smiles) for i in range(len(mols)): for j in range(i): tc = DataStructs.TanimotoSimilarity(fps[i], fps[j]) if tc >= 0.5: g.add_edge(smiles_list[i], smiles_list[j])
Finally convert graph object to json by using py2cytoscape and Draw graph with default settings.
graph_data = util.from_igraph(g) Cytoscape(data=graph_data)
Cyjupyter is useful network drawing tool for jupyter notebook user. I would like to check the way to control visualization.
My example code is uploaded my repository. URL is below.