In [ ]:
from rmgpy.data.base import Database, Entry
from rmgpy.species import Species
from rmgpy.molecule import Molecule, Group
from IPython.display import display
In [ ]:
grp = Group().fromAdjacencyList("""
1 C u0 p0 c0 {3,S} {6,S} {7,S} {8,S}
2 C u0 p0 c0 {4,S} {5,D} {6,S}
3 C u0 p0 c0 {1,S} {4,D} {9,S}
4 C u0 p0 c0 {2,S} {3,D} {10,S}
5 C u0 p0 c0 {2,D} {11,S} {12,S}
6 C u0 p1 c0 {1,S} {2,S}
7 H u0 p0 c0 {1,S}
8 H u0 p0 c0 {1,S}
9 H u0 p0 c0 {3,S}
10 H u0 p0 c0 {4,S}
11 H u0 p0 c0 {5,S}
12 H u0 p0 c0 {5,S}
""")
template = Group().fromAdjacencyList("""
1 *4 [CS,CO,Cd] u0 {2,D} {4,S}
2 *3 [CS,CO,Cd] u0 {1,D} {5,S}
3 *1 C u0 {4,S} {5,S}
4 *5 Cs u0 p[1,2,3,4] {1,S} {3,S}
5 *2 C u0 {2,S} {3,S}
""")
In [ ]:
grp.isSubgraphIsomorphic(template)
In [ ]:
parent = Group().fromAdjacencyList("""
1 *1 R!H u1 {2,[S,D,T,B]}
2 *4 R!H ux {1,[S,D,T,B]} {3,[S,D,T,B]}
3 *6 R!H ux {2,[S,D,T,B]} {4,[S,D,T,B]}
4 *7 R!H ux {3,[S,D,T,B]} {5,[S,D,T,B]}
5 *8 R!H ux {4,[S,D,T,B]} {6,[S,D,T,B]}
6 *9 R!H ux {5,[S,D,T,B]} {7,[S,D,T,B]}
7 *10 R!H ux {6,[S,D,T,B]} {8,[S,D,T,B]}
8 *5 R!H ux {7,[S,D,T,B]} {9,[S,D,T,B]}
9 *2 R!H u0 {8,[S,D,T,B]} {10,[D,T,B]}
10 *3 R!H u0 c0 {9,[D,T,B]}
""")
child = Group().fromAdjacencyList("""
1 *3 R!H u0 c0 r1 {2,[D,T]} {8,[S,D,T,B]}
2 *2 R!H u0 r1 {1,[D,T]} {3,[S,D,T,B]}
3 *5 R!H ux r1 {2,[S,D,T,B]} {4,[S,D,T,B]}
4 *10 R!H ux r1 {3,[S,D,T,B]} {5,[S,D,T,B]}
5 *9 R!H ux r1 {4,[S,D,T,B]} {6,[S,D,T,B]}
6 *8 R!H ux r1 {5,[S,D,T,B]} {7,[S,D,T,B]}
7 *7 R!H ux r1 {6,[S,D,T,B]} {8,[S,D,T,B]}
8 *6 R!H ux r1 {1,[S,D,T,B]} {7,[S,D,T,B]} {9,[S,D,T,B]}
9 *4 R!H ux {8,[S,D,T,B]} {10,[S,D,T,B]}
10 *1 R!H u1 r0 {9,[S,D,T,B]}
""")
print Database().matchNodeToStructure(Entry(item=parent), child, atoms=child.getLabeledAtoms(), strict=True)
print Database().matchNodeToStructure(Entry(item=child), parent, atoms=child.getLabeledAtoms(), strict=True)
In [ ]:
child.isSubgraphIsomorphic(parent)
In [ ]: