In [8]:
# a,b,c -> ['0,b:T', '0,c:T', 'a:T']

# or 

# a,b,c -> ['0,c:T', '0,a:T', 'b:T']

%matplotlib inline
import matplotlib.pyplot as plt
import networkx as nx

G1 = nx.Graph()
G1.add_edge(0,'c',weight='T')
G1.add_edge(0,'b',weight='T')
G1.add_node('a',label='T')

G2 = nx.Graph()
G2.add_edge(0,'c',weight='T')
G2.add_edge(0,'a',weight='T')
# G2.add_node('b',label='T')
print nx.is_isomorphic(G1, G2)


False

In [29]:
import pandas as pd 
left = pd.DataFrame({'lhs': ['a,b,c,d,e', 'bar'], 'rhs': ['b,d,a,e,c:N', 2]})
right = pd.DataFrame({'lhs': ['a,b,c,d,e', 'bar'], 'rhs': [['b,d,a,e,c:N', 'b,d,a,e,c:N'], 5]})
print left 
print right 
left.merge(right, on=('rhs'), how='inner', suffixes=('_l', '_r'))
# left.join(right, on=('rhs'), how='inner', lsuffix='_0',rsuffix='_1')


         lhs          rhs
0  a,b,c,d,e  b,d,a,e,c:N
1        bar            2
         lhs                         rhs
0  a,b,c,d,e  [b,d,a,e,c:N, b,d,a,e,c:N]
1        bar                           5
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-9787017b033d> in <module>()
      4 print left
      5 print right
----> 6 left.merge(right, on=('rhs'), how='inner', suffixes=('_l', '_r'))
      7 # left.join(right, on=('rhs'), how='inner', lsuffix='_0',rsuffix='_1')

/Users/saguinag/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in merge(self, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator)
   4435                      right_on=right_on, left_index=left_index,
   4436                      right_index=right_index, sort=sort, suffixes=suffixes,
-> 4437                      copy=copy, indicator=indicator)
   4438 
   4439     def round(self, decimals=0, *args, **kwargs):

/Users/saguinag/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.pyc in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator)
     37                          right_index=right_index, sort=sort, suffixes=suffixes,
     38                          copy=copy, indicator=indicator)
---> 39     return op.get_result()
     40 if __debug__:
     41     merge.__doc__ = _merge_doc % '\nleft : DataFrame'

/Users/saguinag/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.pyc in get_result(self)
    215                 self.left, self.right)
    216 
--> 217         join_index, left_indexer, right_indexer = self._get_join_info()
    218 
    219         ldata, rdata = self.left._data, self.right._data

/Users/saguinag/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.pyc in _get_join_info(self)
    351              right_indexer) = _get_join_indexers(self.left_join_keys,
    352                                                  self.right_join_keys,
--> 353                                                  sort=self.sort, how=self.how)
    354             if self.right_index:
    355                 if len(self.left) > 0:

/Users/saguinag/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.pyc in _get_join_indexers(left_keys, right_keys, sort, how)
    544 
    545     # get left & right join labels and num. of levels at each location
--> 546     llab, rlab, shape = map(list, zip(* map(fkeys, left_keys, right_keys)))
    547 
    548     # get flat i8 keys from label lists

TypeError: type object argument after * must be an iterable, not itertools.imap

In [58]:
import numpy as np
GAMA_LEXM = (
['0,1:T', '0,2:T', '0,3:T', '0,7:T', '1,2:T', '1,3:T', '1,4:T', '1,5:T', '2,5:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '4,5:T', '4,6:T', '4,7:T', '5,6:T', '5,7:T', '5,8:T', '6,7:T', '7,8:T', '0,1,2,3,4,6,7,8:N'],
['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,a:T', 'a,b,0,d,e,f,g,h:N'],
['0,b:T', '0,d:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,d,e,f,g,h,0:N', 'c:T'],
['0,b:T', '0,e:T', '0,f:T', '0,h:T', '0,a:T', 'a,b,c,d,e,g,0,h:N'],
['0,b:T', '0,d:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'b,0,c,d,e,f,g,h:N'],
['0,b:T', '0,d:T', 'a,0,c,d,e,f,g,h:N'],
['0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,a:T', 'h:T', 'b:T', 'f:T'],
['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,e,0,f,g,h:N'],
['a,b,c,d,e,f,g,h:N'])

GAMA_MINDF = (
['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N'],
['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N'],
['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N'],
['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T'],
['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N'],
['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N'],
['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T'],
['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N'],
['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T'],
['a,b,c,d,e,f,g,h:N'])


# print len(GAMA_LEXM)
# print len(GAMA_MINDF)

list1 = GAMA_LEXM
list2 = GAMA_MINDF

for i in xrange(len(list1)):
    print list1[i]
    for j in xrange(len(list2)):
        print '  ',j, list2[j]


['0,1:T', '0,2:T', '0,3:T', '0,7:T', '1,2:T', '1,3:T', '1,4:T', '1,5:T', '2,5:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '4,5:T', '4,6:T', '4,7:T', '5,6:T', '5,7:T', '5,8:T', '6,7:T', '7,8:T', '0,1,2,3,4,6,7,8:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,a:T', 'a,b,0,d,e,f,g,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,b:T', '0,d:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,d,e,f,g,h,0:N', 'c:T']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,b:T', '0,e:T', '0,f:T', '0,h:T', '0,a:T', 'a,b,c,d,e,g,0,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,b:T', '0,d:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'b,0,c,d,e,f,g,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,b:T', '0,d:T', 'a,0,c,d,e,f,g,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,a:T', 'h:T', 'b:T', 'f:T']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,e,0,f,g,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']
['a,b,c,d,e,f,g,h:N']
   0 ['a,b,c,d,e,g,h,i:N', 'a,b,c,d,e,f,g,h:N']
   1 ['0,2:T', '0,3:T', '0,6:T', '0,8:T', '1,2:T', '1,3:T', '1,8:T', '2,8:T', '3,4:T', '3,5:T', '3,6:T', '3,7:T', '3,8:T', '4,5:T', '4,6:T', '5,6:T', '5,7:T', '5,8:T', '6,8:T', '7,8:T', '0,1,2,3,4,5,6,7,8:N', '0,1,2,3,5,6,7,8:N']
   2 ['0,c:T', '0,d:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a,b,c,d,0,e,f,h:N']
   3 ['0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', 'a:T', 'b:T', 'd:T']
   4 ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']
   5 ['0,b:T', '0,c:T', '0,e:T', '0,f:T', '0,g:T', '0,h:T', '0,a:T', 'a,b,c,d,e,f,g,0:N']
   6 ['0,b:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a:T', 'c:T', 'f:T']
   7 ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,h:T', 'a,b,d,0,e,f,g,h:N']
   8 ['0,c:T', '0,f:T', '0,a:T', 'h:T', 'b:T', 'e:T', 'd:T', 'g:T']
   9 ['a,b,c,d,e,f,g,h:N']

In [67]:
import networkx as nx

def long_string_split(x):
  '''
  Parse the RHS of each rule into a graph fragment
  :param x:
  :return:
  '''
  import re

  from itertools import combinations
  
  G1 = nx.Graph()
  for he in x:
    epair,ewt = he.split(':')
    if ewt is "T":
      if len(epair.split(",")) == 1:  [G1.add_node(epair, label=ewt)]
      else: [G1.add_edge(epair.split(",")[0], epair.split(",")[1], weight=ewt)]
    elif ewt is "N":
      if len(epair.split(",")) == 1:  [G1.add_node(epair, label=ewt)]
      else: [G1.add_edges_from(list(combinations(epair.split(","), 2)),weight=ewt )]

  return G1

count = 0
for i in xrange(len(list1)):
    print '[{}]'.format(i)
    for j in xrange(len(list2)):
        if nx.is_isomorphic(long_string_split(list1[i]), long_string_split(list2[j])):
            print '  j', j
            count += 1
print 'total', count


[0]
  j 0
[1]
  j 2
  j 4
  j 5
  j 7
[2]
[3]
  j 2
  j 4
  j 5
  j 7
[4]
  j 2
  j 4
  j 5
  j 7
[5]
  j 2
  j 4
  j 5
  j 7
[6]
  j 3
  j 6
[7]
  j 2
  j 4
  j 5
  j 7
[8]
  j 9
total 24

In [81]:
gama_lexm_1 = ['0,b:T', '0,c:T', '0,d:T', '0,e:T', '0,g:T', '0,a:T', 'a,b,0,d,e,f,g,h:N']
gama_minf_4 = ['0,b:T', '0,d:T', '0,e:T', '0,f:T', '0,a:T', 'a,b,0,c,e,f,g,h:N']

from itertools import combinations
  
G1 = nx.Graph()
for he in gama_lexm_1:
    epair, ewt = he.split(':')
    if ewt is "T":
      if len(epair.split(",")) == 1:  [G1.add_node(epair, label=ewt)]
      else: [G1.add_edge(epair.split(",")[0], epair.split(",")[1], label=ewt)]
    elif ewt is "N":
      if len(epair.split(",")) == 1:  [G1.add_node(epair, label=ewt)]
      else: [G1.add_edges_from(list(combinations(epair.split(","), 2)),label=ewt )]

## 2nd line
G2 = nx.Graph()
for he in gama_minf_4:
    epair, ewt = he.split(':')
    if ewt is "T":
      if len(epair.split(",")) == 1:  [G2.add_node(epair, label=ewt)]
      else: [G2.add_edge(epair.split(",")[0], epair.split(",")[1], label=ewt)]
    elif ewt is "N":
      if len(epair.split(",")) == 1:  [G2.add_node(epair, label=ewt)]
      else: [G2.add_edges_from(list(combinations(epair.split(","), 2)), label=ewt )]


print nx.info(G1)
print nx.info(G2)


Name: 
Type: Graph
Number of nodes: 9
Number of edges: 29
Average degree:   6.4444
Name: 
Type: Graph
Number of nodes: 9
Number of edges: 29
Average degree:   6.4444

In [89]:
gpos = nx.spring_layout(G1)
nx.draw_networkx(G1, pos=gpos)



In [91]:
nx.draw_networkx(G2, pos=gpos)



In [92]:
nx.is_isomorphic(G1, G2)  ## asuming the nonterminal is a placeholder for a clique (hyperedge)
                          ## ToDo: I wonder what would happen if we model the N as a Node rather than a hyperedge?


Out[92]:
True

In [ ]: