In [ ]:
import py_rdl
from py_rdl.wrapper import DataInternal
import timeit
import numpy as np
from IPython.display import display

In [ ]:
from rmgpy.molecule import Molecule
from rmgpy.molecule.graph import Vertex, Edge, Graph

In [ ]:
m = Molecule(SMILES='c1ccccc1')
display(m)
print m.toAdjacencyList()

In [ ]:
sssr = m.getSmallestSetOfSmallestRings()
[atom.label for atom in sssr[0]]

In [ ]:
m.atoms[0].label = '1'
m.atoms[1].label = '2'
m.atoms[2].label = '3'
m.atoms[3].label = '4'
m.atoms[4].label = '5'
m.atoms[5].label = '6'

In [ ]:
m.getSmallestSetOfSmallestRings()

In [ ]:


In [ ]:
setup = """
import py_rdl
from py_rdl.wrapper import DataInternal
from rmgpy.molecule import Molecule
m = Molecule(SMILES='C12C3C4C1C1C2C3C41')
"""

test = """
graph = py_rdl.Graph.from_edges(
    m.edges,
    lambda x: x.vertex1,
    lambda x: x.vertex2,
)

data = DataInternal(graph.get_nof_nodes(), graph.get_edges().iterkeys())
data.calculate()
rc = []
for cycle in data.get_rcs():
    rc.append([graph.get_node_for_index(i) for i in cycle.nodes])
"""

In [ ]:
result = timeit.repeat(test, setup, repeat=10, number=100)
result = np.array(result)
print np.mean(result), np.std(result)

In [ ]:
graph = py_rdl.Graph.from_edges(
    m.edges,
    lambda x: x.vertex1,
    lambda x: x.vertex2,
)

data = DataInternal(graph.get_nof_nodes(), graph.get_edges().iterkeys())
data.calculate()
rc = []
for cycle in data.get_rcs():
    rc.append([graph.get_node_for_index(i) for i in cycle.nodes])
sssr = []
for cycle in data.get_sssr():
    sssr.append([graph.get_node_for_index(i) for i in cycle.nodes])

In [ ]: