Test

Temporal degree cores

Links

  1. Seidman, S. B. (1983): Network structure and minimum degree. Social Networks 5, 269-287
  2. Batagelj, V, Mrvar, A, Zaveršnik, M: Partitioning Approach to Visualization of Large Graphs. Graph Drawing, Lecture Notes in Computer Science, 1999, Volume 1731/1999, 90-97. (preprint)
  3. Batagelj, V., Zaveršnik, M.: Fast algorithms for determining (generalized) core groups in social networks. Advances in Data Analysis and Classification, 2011. Volume 5, Number 2, 129-145. arXiv 1+arXiv 2
  4. Cerinšek, M., Batagelj, V.: Generalized two-mode cores. Social Networks 42 (2015), 80–87. arXiv
  5. Yikai Zhang, Jeffrey Xu Yu, Ying Zhang, Lu Qin: A Fast Order-Based Approach for Core Maintenance
  6. Ahmet Erdem Sariyuce, et al.: Streaming algorithms for k-core decomposition
  7. Rong-Hua Li, Jeffrey Xu Yu, Rui Mao: Efficient core maintenance in large dynamic graphs
  8. Batagelj, V., Praprotnik, S.: An algebraic approach to temporal network analysis based on temporal quantities. Social Network Analysis and Mining, 6(1), 1-22 Online, arXiv:1505.01569
  • AS 2016 Slides. Ribno, 18-21.9.2016.
  • Package TQ - Temporal Quantities
  • Package Graph - network procedures in Python

Temporal degree cores procedure

September 18-19, 2016

gdir = 'c:/users/batagelj/work/python/graph/graph'
wdir = 'c:/users/batagelj/work/python/graph/JSON'
import sys, os, datetime, json
sys.path = [gdir]+sys.path; os.chdir(wdir)
import GraphNew as Graph
import TQ
prLevel = 1
# fJSON = "violenceE.json"
# fJSON = 'stem.json'
# fJSON = 'Terror news 50.json'
# S = Graph.Graph.loadNetJSON(fJSON); G = S.pairs2edges()
fJSON = 'ConnectivityTest.json'
# fJSON = 'ExampleB.json'
# fJSON = 'PathfinderTest.json'
G = Graph.Graph.loadNetJSON(fJSON)
G.delLoops()
print("Temporal cores in: ",fJSON)
t1 = datetime.datetime.now()
print("started: ",t1.ctime(),"\n")
D = { u: G.TQnetDeg(u) for u in G._nodes }
if prLevel<2: print("Deg =",D,"\n")
Core = { u: [d for d in D[u] if d[2]==0] for u in G.nodes() }
# core number = 0
D = { u: [d for d in D[u] if d[2]>0] for u in G.nodes() }
D = { u: d for u,d in D.items() if d!=[] }
Dmin = { u: min([e[2] for e in d]) for u,d in D.items() }
step = 0
while len(D)>0:
   step += 1
   dmin,u = min( (v,k) for k,v in Dmin.items() )
   if (step % 10 == 1) or (prLevel < 2):
      print("{0:3d}. dmin={1:3d}   node={2:4d}".format(step,dmin,u))
   core = [ d for d in D[u] if d[2] == dmin ]
   Core[u] = TQ.TQ.sum(Core[u],core)
   change = TQ.TQ.setConst(core,-1)
   D[u] = TQ.TQ.cutGE(TQ.TQ.sum(D[u],change),dmin)
   for link in G.star(u):
      v = G.twin(u,link)
      if not(v in D): continue
      chLink = TQ.TQ.extract(G.getLink(link,'tq'),change)
      if chLink==[]: continue
      diff = TQ.TQ.cutGE(TQ.TQ.sum(D[v],chLink),0)
      D[v] = TQ.TQ.standard([ (sd,fd,max(vd,dmin)) for sd,fd,vd in diff ])
      if len(D[v])==0: del D[v]; del Dmin[v]
      else: Dmin[v] = min([e[2] for e in D[v]])
   if len(D[u])==0: del D[u]; del Dmin[u]
   else: Dmin[u] = min([e[2] for e in D[u]])
print("{0:3d}. dmin={1:3d}   node={2:4d}".format(step,dmin,u))
if prLevel<2: print("\n-----\nCore =",Core)
t2 = datetime.datetime.now()
print("\nfinished: ",t2.ctime(),"\ntime used: ", t2-t1)

Example: Connectivity

ConnectivityTest.json

======= RESTART: C:\Users\batagelj\work\Python\graph\graph\CoresTQ.py =======
Temporal cores in:  ConnectivityTest.json
started:  Tue Sep 20 01:04:16 2016 

Deg = {
 1: [(1, 9, 1)], 
 2: [(1, 3, 2), (3, 9, 3)], 
 3: [(1, 9, 1)], 
 4: [(1, 3, 2), (3, 9, 3)], 
 5: [(1, 5, 3), (5, 9, 2)], 
 6: [(1, 9, 2)], 
 7: [(1, 5, 4), (5, 7, 3), (7, 9, 4)], 
 8: [(1, 9, 4)], 
 9: [(1, 9, 4)], 
10: [(1, 9, 4)], 
11: [(1, 7, 3), (7, 9, 4)], 
12: [(1, 9, 0)], 
13: [(1, 2, 0), (2, 8, 2), (8, 9, 0)], 
14: [(1, 2, 0), (2, 8, 2), (8, 9, 0)], 
15: [(1, 2, 0), (2, 8, 2), (8, 9, 0)]} 

  1. dmin=  1   node=   1
  2. dmin=  1   node=   2
  3. dmin=  1   node=   3
  4. dmin=  1   node=   2
  5. dmin=  2   node=   4
  6. dmin=  2   node=   5
  7. dmin=  2   node=   6
  8. dmin=  2   node=  13
  9. dmin=  2   node=  14
 10. dmin=  2   node=  15
 11. dmin=  3   node=   7
 12. dmin=  3   node=   8
 13. dmin=  3   node=   9
 14. dmin=  3   node=  10
 15. dmin=  3   node=  11
 16. dmin=  4   node=   7
 17. dmin=  4   node=   8
 18. dmin=  4   node=   9
 19. dmin=  4   node=  10
 20. dmin=  4   node=  11
 20. dmin=  4   node=  11

-----
Core = {
 1: [(1, 9, 1)], 
 2: [(1, 9, 1)], 
 3: [(1, 9, 1)], 
 4: [(1, 9, 2)], 
 5: [(1, 9, 2)], 
 6: [(1, 9, 2)], 
 7: [(1, 7, 3), (7, 9, 4)], 
 8: [(1, 7, 3), (7, 9, 4)], 
 9: [(1, 7, 3), (7, 9, 4)], 
10: [(1, 7, 3), (7, 9, 4)], 
11: [(1, 7, 3), (7, 9, 4)], 
12: [(1, 9, 0)], 
13: [(1, 2, 0), (2, 8, 2), (8, 9, 0)], 
14: [(1, 2, 0), (2, 8, 2), (8, 9, 0)], 
15: [(1, 2, 0), (2, 8, 2), (8, 9, 0)]}

finished:  Tue Sep 20 01:04:16 2016 
time used:  0:00:00.120007
>>> 
>>> C3 = TQ.TQ.TQdictCut(Core,3)
>>> C3
{
 7: [(1, 7, 3), (7, 9, 4)],
 8: [(1, 7, 3), (7, 9, 4)], 
 9: [(1, 7, 3), (7, 9, 4)], 
10: [(1, 7, 3), (7, 9, 4)], 
11: [(1, 7, 3), (7, 9, 4)]}
>>> 

Example: Terror 50

======= RESTART: C:/Users/batagelj/work/Python/graph/graph/CoresTQ.py =======
Temporal cores in:  Terror news 50.json
started:  Sun Sep 18 02:52:06 2016 

Deg = {
 1: [(1, 2, 5), (2, 3, 6), (3, 4, 3), (4, 5, 5), (5, 6, 4), (6, 8, 3),
     (8, 10, 5), (10, 11, 3), (11, 13, 2), (13, 16, 3), (16, 17, 4), 
     (17, 18, 5), (18, 19, 3), (19, 21, 1), (21, 22, 2), (22, 23, 1), 
     (23, 24, 4), (24, 25, 1), (25, 29, 3), (29, 31, 2), (31, 33, 3), 
     (33, 34, 1), (34, 36, 3), (36, 37, 2), (37, 39, 3), (39, 40, 4), 
     (40, 41, 2), (41, 42, 0), (42, 43, 3), (43, 44, 2), (44, 45, 3), 
     (45, 46, 1), (46, 47, 2), (47, 48, 3), (48, 49, 0), (49, 50, 4), 
     (50, 51, 1), (51, 52, 2), (52, 53, 1), (53, 54, 0), (54, 58, 2), 
     (58, 59, 3), (59, 60, 2), (60, 61, 4), (61, 62, 0), (62, 64, 2), 
     (64, 65, 1), (65, 67, 2)], 
 2: [(1, 2, 27), (2, 3, 29), ...
     .......   
     ..., (63, 64, 2), (64, 65, 0), (66, 67, 0)], 
50: [(1, 2, 3), (2, 3, 2), (3, 5, 1), (5, 8, 0), (8, 10, 1), (10, 11, 2), 
     (11, 12, 1), (12, 15, 0), (15, 16, 3), (16, 17, 1), (17, 19, 0), 
     (19, 20, 1), (20, 21, 2), (21, 22, 0), (22, 24, 1), (24, 26, 0), 
     (26, 27, 2), (27, 28, 0), (28, 29, 1), (29, 31, 0), (31, 32, 1), 
     (32, 33, 0), (33, 35, 1), (35, 37, 0), (37, 38, 1), (38, 42, 0), 
     (43, 44, 2), (44, 49, 0), (49, 50, 2), (51, 57, 0), (58, 61, 0), 
     (61, 62, 1), (62, 67, 0)]} 

  1. dmin=  1   node=   1
  2. dmin=  1   node=   3
  3. dmin=  1   node=   4
  4. dmin=  1   node=   5
  5. dmin=  1   node=   6
  ...
111. dmin=  1   node=  27
112. dmin=  2   node=   1
  ...
370. dmin=  2   node=  50
371. dmin=  3   node=   1
  ...
580. dmin=  3   node=  50
581. dmin=  4   node=   1
  ...
675. dmin=  4   node=  25
676. dmin=  5   node=   1
677. dmin=  5   node=   4
678. dmin=  5   node=   5
  ...
705. dmin=  5   node=   4
706. dmin=  5   node=  15
707. dmin=  5   node=  20
708. dmin=  5   node=  36
709. dmin=  5   node=  43
710. dmin=  5   node=  47

-----
Core = {
 1: [(1, 2, 4), (2, 3, 5), (3, 5, 3), (5, 6, 4), (6, 8, 3), (8, 10, 4), 
     (10, 11, 3), (11, 14, 2), (14, 18, 3), (18, 19, 2), (19, 21, 1), 
     (21, 22, 2), (22, 23, 1), (23, 24, 3), (24, 25, 1), (25, 28, 2), 
     (28, 29, 3), (29, 33, 2), (33, 34, 1), (34, 38, 2), (38, 39, 3), 
     (39, 41, 2), (41, 42, 0), (42, 45, 2), (45, 46, 1), (46, 47, 2), 
     (47, 48, 3), (48, 49, 0), (49, 50, 3), (50, 51, 1), (51, 52, 2), 
     (52, 53, 1), (53, 54, 0), (54, 57, 2), (57, 58, 1), (58, 59, 2), 
     (59, 60, 1), (60, 61, 2), (61, 62, 0), (62, 64, 2), (64, 65, 1), 
     (65, 67, 2)],
 2: [(1, 3, 5), (3, 6, 4), (6, 7, 5), ...
     .......   
     ... , (63, 64, 1), (64, 65, 0), (66, 67, 0)], 
50: [(1, 3, 2), (3, 5, 1), (5, 8, 0), (8, 10, 1), (10, 11, 2), (11, 12, 1),
     (12, 15, 0), (15, 16, 3), (16, 17, 1), (17, 19, 0), (19, 20, 1), 
     (20, 21, 2), (21, 22, 0), (22, 24, 1), (24, 26, 0), (26, 27, 1), 
     (27, 28, 0), (28, 29, 1), (29, 31, 0), (31, 32, 1), (32, 33, 0), 
     (33, 35, 1), (35, 37, 0), (37, 38, 1), (38, 42, 0), (43, 44, 1), 
     (44, 49, 0), (49, 50, 2), (51, 57, 0), (58, 61, 0), (61, 62, 1), 
     (62, 67, 0)]}

finished:  Sun Sep 18 02:52:24 2016 
time used:  0:00:17.924025


>>> Core3 = { u: TQ.TQ.cut(core,3) for u, core in Core.items() }
>>> C3 = { u: core for u, core in Core3.items() if core!=[] }
>>> for v in C3: print(v,':',G.getNode(v,'lab'),C3[v])
 1 : united_states     [(1, 2, 4), (2, 3, 5), (5, 6, 4), (8, 10, 4)]
 2 : attack            [(1, 3, 5), (3, 6, 4), (6, 7, 5), (7, 10, 4), (11, 12, 4), (30, 31, 4)]
 4 : people            [(1, 3, 5), (3, 6, 4), (6, 7, 5), (7, 8, 4)]
 5 : afghanistan       [(1, 3, 4), (5, 6, 4), (6, 7, 5), (8, 10, 4), (30, 31, 4)]
 6 : bin_laden         [(1, 4, 4), (5, 6, 4), (6, 7, 5), (7, 10, 4), (11, 12, 4)]
 7 : new_york          [(1, 3, 5), (3, 6, 4), (6, 7, 5), (30, 31, 4)]
 8 : pres_bush         [(1, 3, 5), (3, 6, 4), (6, 7, 5), (7, 10, 4), (11, 12, 4)]
 9 : washington        [(1, 3, 5), (3, 6, 4), (6, 7, 5), (7, 10, 4), (11, 12, 4)]
10 : official          [(1, 3, 5), (3, 4, 4), (5, 6, 4), (6, 7, 5)]
12 : military          [(1, 2, 4), (5, 6, 4), (30, 31, 4)]
13 : plane             [(1, 3, 5), (3, 7, 4)]
14 : world_trade_ctr   [(1, 3, 5), (3, 6, 4), (6, 7, 5), (30, 31, 4)]
15 : security          [(1, 2, 4), (2, 3, 5), (5, 6, 4)]
16 : american          [(2, 3, 4)]
17 : country           [(1, 3, 4), (5, 10, 4)]
18 : city              [(1, 3, 5), (3, 4, 4)]
19 : war               [(1, 2, 4), (2, 3, 5), (5, 8, 4)]
20 : tuesday           [(1, 3, 5), (3, 7, 4)]
21 : pentagon          [(1, 3, 5), (3, 4, 4), (5, 6, 4), (6, 7, 5)]
22 : force             [(5, 6, 4)]
23 : government        [(1, 3, 4), (5, 6, 4)]
24 : leader            [(1, 4, 4), (6, 10, 4)]
25 : world             [(1, 3, 5), (3, 10, 4)]
26 : terrorism         [(2, 3, 4)]
27 : day               [(2, 3, 4), (5, 6, 4)]
28 : week              [(5, 6, 4), (6, 7, 5), (8, 10, 4), (11, 12, 4)]
29 : worker            [(1, 2, 4), (2, 3, 5)]
30 : office            [(1, 3, 4)]
31 : group             [(2, 3, 4), (6, 7, 4)]
32 : air               [(2, 3, 4), (5, 6, 4)]
34 : time              [(1, 3, 5), (3, 4, 4), (5, 6, 4), (7, 8, 4)]
35 : hijack            [(2, 3, 4)]
36 : strike            [(2, 3, 4), (5, 6, 4), (6, 7, 5), (30, 31, 4)]
38 : flight            [(2, 3, 4)]
39 : tell              [(2, 3, 4)]
40 : terrorist         [(1, 3, 4), (6, 7, 4)]
41 : airport           [(2, 3, 4)]
42 : pakistan          [(2, 3, 4), (5, 7, 4)]
43 : tower             [(1, 3, 5), (3, 4, 4), (6, 7, 5)]
45 : new               [(2, 3, 4)]
47 : wednesday         [(2, 3, 5), (3, 4, 4), (8, 10, 4)]
48 : nation            [(1, 3, 4), (5, 6, 4)]
49 : police            [(2, 4, 4), (5, 6, 4)]
>>> 

Example: Stem cells research in Spain

nNodes = 577, nEdges = 8578

======= RESTART: C:\Users\batagelj\work\Python\graph\graph\CoresTQ.py =======
Temporal cores in:  stem.json
started:  Mon Sep 19 15:22:58 2016 

  1. dmin=  1   node=   1
 11. dmin=  1   node=  21
 21. dmin=  1   node=  33
     ......
1001. dmin=  7   node= 344
1011. dmin=  7   node= 102
1021. dmin=  8   node=  30
     ...... 
1851. dmin= 22   node=   5
1861. dmin= 22   node=  58
1871. dmin= 22   node= 192
1881. dmin= 25   node=  16
1891. dmin= 25   node=  76
1901. dmin= 25   node= 336
1902. dmin= 25   node= 403

finished:  Mon Sep 19 15:23:00 2016 
time used:  0:00:02.435004
>>> 
>>> C20 = TQ.TQ.TQdictCut(Core,20)
>>> for v in C20:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C20[v])

  2 : HCSC/M       [(2010, 2011, 20), (2011, 2012, 21)]
  3 : IN/A         [(2008, 2009, 25)]
  5 : CIC-IBMCC/SA [(2010, 2011, 20), (2011, 2013, 22)]
  6 : HUS/SA       [(2008, 2009, 25), (2010, 2011, 20), (2011, 2012, 21), (2012, 2013, 22)]
  8 : IDIBELL/B    [(2011, 2012, 20)]
  9 : UB/B         [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 10 : UNIZAR/Z     [(2008, 2009, 21), (2012, 2013, 21)]
 11 : USAL/SA      [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 12 : HVH/B        [(2010, 2011, 20), (2011, 2013, 22)]
 13 : HNJ/M        [(2010, 2011, 20), (2012, 2013, 22)]
 16 : ICO/CT       [(2008, 2009, 25), (2010, 2011, 20), (2012, 2013, 22)]
 17 : HMM/MU       [(2011, 2012, 22)]
259 : HMS/Z        [(2011, 2012, 21)]
 20 : UPC/B        [(2011, 2012, 21), (2012, 2013, 22)]
 21 : ICREA/B      [(2010, 2011, 20)]
 22 : HDM/B        [(2008, 2009, 21), (2012, 2013, 22)]
 23 : UNAV         [(2008, 2009, 25), (2011, 2013, 22)]
 24 : UPV-EHU      [(2008, 2009, 21), (2010, 2011, 20)]
 27 : HISC3/M      [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
543 : PFIZER/M     [(2011, 2012, 21)]
 32 : HRYC/M       [(2008, 2009, 21), (2010, 2011, 20), (2011, 2013, 22)]
289 : HJXXIII/T    [(2008, 2009, 25)]
 34 : HCL/V        [(2010, 2011, 20), (2011, 2013, 22)]
 35 : HUGTIP/B     [(2010, 2011, 20), (2012, 2013, 20)]
 36 : UAB/B        [(2008, 2009, 21), (2010, 2011, 20), (2011, 2013, 22)]
 37 : US/SE        [(2010, 2011, 20)]
 38 : UV/V         [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 40 : HCL/B        [(2010, 2011, 20), (2011, 2013, 22)]
 46 : IDIBAPS/B    [(2008, 2009, 21), (2010, 2011, 20), (2011, 2013, 22)]
 48 : HSCSP/B      [(2008, 2009, 21), (2010, 2011, 20), (2011, 2013, 22)]
 51 : HBST/B       [(2008, 2009, 25), (2011, 2012, 21)]
 53 : H12O/M       [(2008, 2009, 25), (2011, 2013, 21)]
 54 : CNB          [(2012, 2013, 22)]
 55 : HUPH/M       [(2011, 2012, 21), (2012, 2013, 22)]
 57 : HCLB/Z       [(2011, 2012, 21)]
 58 : HCUN/NA      [(2011, 2013, 22)]
266 : URL/B        [(2012, 2013, 22)]
 62 : UAM/M        [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 63 : UCM/M        [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 65 : HRS/CO       [(2012, 2013, 21)]
 66 : HCRUCES/BI   [(2011, 2012, 21)]
 67 : CIPF/V       [(2008, 2009, 21)]
 69 : UMA/MA       [(2008, 2009, 21), (2010, 2011, 20), (2011, 2012, 21), (2012, 2013, 22)]
 72 : HUMV/S       [(2008, 2009, 25), (2011, 2013, 22)]
 73 : UGR/GR       [(2011, 2012, 22), (2012, 2013, 20)]
 74 : CIBERDEM     [(2008, 2009, 25)]
 75 : SEHH         [(2011, 2012, 21), (2012, 2013, 20)]
 76 : HULP/M       [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
 77 : UPV/V        [(2008, 2009, 21)]
336 : TERCEL       [(2008, 2009, 25)]
 81 : HVA/MU       [(2011, 2012, 20), (2012, 2013, 21)]
 82 : UM/MU        [(2008, 2009, 25)]
 85 : UA/A         [(2008, 2009, 25), (2011, 2012, 20)]
 87 : HUP/M        [(2011, 2013, 22)]
344 : HSO/M        [(2011, 2012, 21)]
 89 : UPF/B        [(2008, 2009, 21), (2012, 2013, 22)]
 91 : CIBERNED     [(2012, 2013, 22)]
 92 : GENYO/GR     [(2011, 2012, 21)]
 93 : CBMSO/M      [(2010, 2011, 20), (2011, 2012, 22), (2012, 2013, 21)]
 96 : BACM/GR      [(2011, 2013, 22)]
272 : ULEON/LE     [(2011, 2013, 22)]
310 : SESCAM/TO    [(2011, 2012, 21)]
102 : USC          [(2011, 2013, 22)]
103 : CIBEROBN     [(2011, 2012, 21)]
108 : HGJF/CA      [(2011, 2012, 21)]
109 : HVN/GR       [(2008, 2009, 21), (2011, 2012, 22), (2012, 2013, 21)]
111 : HANDERSON/M  [(2011, 2012, 21)]
112 : INCYL        [(2008, 2009, 21), (2010, 2011, 20), (2012, 2013, 21)]
258 : INIA/M       [(2012, 2013, 22)]
123 : H-JAEN       [(2012, 2013, 22)]
124 : HJC/C        [(2011, 2012, 20)]
403 : SERGAS/C     [(2008, 2009, 25)]
133 : HCSOL/MA     [(2012, 2013, 22)]
134 : IBV/V        [(2008, 2009, 25)]
135 : CRG/B        [(2008, 2009, 25), (2011, 2012, 21)]
535 : SERIDA/O     [(2011, 2012, 21)]
146 : HSC/GR       [(2010, 2011, 20)]
147 : HGM/M        [(2010, 2011, 20), (2011, 2013, 22)]
149 : IIBM/M       [(2011, 2012, 22)]
150 : UNIOVI/O     [(2010, 2011, 20)]
153 : UAH/M        [(2008, 2009, 25)]
176 : HUVR/SE      [(2008, 2009, 25), (2011, 2013, 22)]
186 : UVA          [(2012, 2013, 22)]
192 : IRB/B        [(2011, 2012, 22)]
452 : HVS/TO       [(2011, 2012, 21)]
 80 : HUPLFV/V     [(2008, 2009, 25), (2010, 2011, 20), (2011, 2013, 22)]
307 : HVB/LE       [(2010, 2011, 20)]
232 : HUB/B        [(2008, 2009, 25)]
492 : UPNA/NA      [(2012, 2013, 22)]
253 : UCLM         [(2011, 2012, 21), (2012, 2013, 22)]
>>> 
>>> TQ.TQ.maxmin(); coreNum = []
>>> for u in Core: coreNum = TQ.TQ.sum(coreNum,Core[u])
>>> TQ.TQ.combinatorial()
>>> coreNum
[(1997, 1998, 10), (1998, 1999, 15), (1999, 2000, 12), (2000, 2002, 15), (2002, 2003, 13), (2003, 2006, 14), 
 (2006, 2007, 10), (2007, 2008, 14), (2008, 2009, 25), (2009, 2010, 16), (2010, 2011, 20), (2011, 2013, 22)]

Example: Violence

======= RESTART: C:\Users\batagelj\work\Python\graph\graph\CoresTQ.py =======
Temporal cores in:  violenceE.json
started:  Mon Sep 19 16:58:58 2016 

  1. dmin=  1   node=   1
 11. dmin=  1   node=   8
 21. dmin=  1   node=   4
 31. dmin=  1   node=   1
 41. dmin=  1   node=   7
 51. dmin=  1   node=  27
 61. dmin=  2   node=   7
 71. dmin=  2   node=   1
 81. dmin=  2   node=  19
 91. dmin=  3   node=   8
 97. dmin=  3   node=  21

finished:  Mon Sep 19 16:58:59 2016 
time used:  0:00:00.120000
>>> C3 = TQ.TQ.TQdictCut(Core,3)
>>> for v in C3:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C3[v])

 16 : workers      [(29, 30, 3), (33, 34, 3), (39, 41, 3)]
  1 : undefined    [(29, 30, 3), (39, 40, 3)]
  2 : ?            [(31, 32, 3), (33, 34, 3), (40, 41, 3)]
  3 : people       [(31, 32, 3), (33, 34, 3), (39, 40, 3)]
  4 : police       [(31, 32, 3), (33, 34, 3), (40, 41, 3)]
 21 : catholics    [(33, 34, 3)]
  7 : fascists     [(29, 30, 3), (31, 32, 3), (33, 34, 3), (39, 41, 3)]
  8 : communists   [(29, 30, 3)]
 10 : socialists   [(31, 32, 3), (40, 41, 3)]
>>> C2 = TQ.TQ.TQdictCut(Core,2)
>>> for v in C2:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C2[v])
 
  1 : undefined    [(15, 16, 2), (17, 18, 2), (25, 29, 2), (29, 30, 3), (31, 32, 2), (38, 39, 2), (39, 40, 3),
                    (41, 44, 2), (45, 46, 2), (48, 49, 2)]
  2 : ?            [(14, 16, 2), (17, 18, 2), (28, 29, 2), (31, 32, 3), (32, 33, 2), (33, 34, 3), (34, 35, 2),
                    (40, 41, 3)]
  3 : people       [(16, 18, 2), (23, 24, 2), (25, 26, 2), (28, 30, 2), (31, 32, 3), (33, 34, 3), (35, 37, 2),
                    (39, 40, 3), (41, 43, 2), (48, 49, 2)]
  4 : police       [(11, 12, 2), (14, 20, 2), (21, 23, 2), (29, 31, 2), (31, 32, 3), (32, 33, 2), (33, 34, 3), 
                    (34, 37, 2), (38, 40, 2), (40, 41, 3)]
  5 : land owners  [(15, 16, 2), (17, 20, 2), (29, 30, 2), (36, 37, 2), (38, 40, 2), (42, 43, 2)]
  7 : fascists     [(11, 12, 2), (16, 17, 2), (19, 20, 2), (21, 24, 2), (25, 29, 2), (29, 30, 3), (30, 31, 2), 
                    (31, 32, 3), (32, 33, 2), (33, 34, 3), (34, 37, 2), (38, 39, 2), (39, 41, 3), (41, 44, 2), 
                    (45, 46, 2), (48, 49, 2)]
  8 : communists   [(28, 29, 2), (29, 30, 3), (31, 33, 2), (35, 37, 2), (43, 44, 2)]
  9 : workers (agr)[(15, 16, 2), (17, 20, 2), (28, 30, 2), (31, 32, 2), (33, 35, 2), (38, 43, 2), (45, 46, 2)]
 10 : socialists   [(11, 12, 2), (16, 18, 2), (19, 20, 2), (22, 23, 2), (25, 26, 2), (27, 30, 2), (31, 32, 3), 
                    (33, 37, 2), (38, 40, 2), (40, 41, 3), (41, 42, 2)]
 12 : war affected  [(35, 36, 2), (39, 40, 2)]
 13 : protesters   [(15, 16, 2), (21, 22, 2), (29, 30, 2), (31, 32, 2), (38, 40, 2)]
 16 : workers      [(11, 12, 2), (14, 18, 2), (19, 20, 2), (21, 24, 2), (25, 26, 2), (27, 29, 2), (29, 30, 3), 
                    (30, 33, 2), (33, 34, 3), (34, 37, 2), (38, 39, 2), (39, 41, 3), (41, 44, 2), (45, 46, 2)]
 17 : the right    [(17, 18, 2), (41, 42, 2)]
 19 : populars     [(41, 42, 2)]
 20 : students     [(17, 18, 2)]
 21 : catholics    [(33, 34, 3)]
 25 : republicans  [(26, 27, 2)]
 26 : thugs        [(29, 30, 2)]
 27 : prisoners/arrested  [(40, 41, 2)]
>>> 

Temporal Ps cores

September 20, 2016

gdir = 'c:/users/batagelj/work/python/graph/graph'
wdir = 'c:/users/batagelj/work/python/graph/JSON'
import sys, os, datetime, json
sys.path = [gdir]+sys.path; os.chdir(wdir)
import GraphNew as Graph
import TQ
fJSON = 'ConnectivityWeighted.json'
# fJSON = "violenceE.json"
# fJSON = 'stem.json'
# fJSON = 'Terror news 50.json'
# S = Graph.Graph.loadNetJSON(fJSON); G = S.pairs2edges()
# fJSON = 'ConnectivityTest.json'
# fJSON = 'ExampleB.json'
# fJSON = 'PathfinderTest.json'
G = Graph.Graph.loadNetJSON(fJSON)
G.delLoops()
print("Temporal Ps cores in: ",fJSON)
t1 = datetime.datetime.now()
print("started: ",t1.ctime(),"\n")
Tmin,Tmax = G._graph['time']
D = { u: G.TQnetSum(u) for u in G._nodes }
# print("Sum =",D,"\n")
Core = { u: [d for d in D[u] if d[2]==0] for u in G.nodes() }
# core number = 0
D = { u: [d for d in D[u] if d[2]>0] for u in G.nodes() }
D = { u: d for u,d in D.items() if d!=[] }
Dmin = { u: min([e[2] for e in d]) for u,d in D.items() }
step = 0
while len(D)>0:
   step += 1
   dmin,u = min( (v,k) for k,v in Dmin.items() )
   if step % 10 == 1:
      print("{0:3d}. dmin={1:3d}   node={2:4d}".format(step,dmin,u))
   cCore = TQ.TQ.complement(Core[u],Tmin,Tmax)
   core = TQ.TQ.extract(cCore,[d for d in D[u] if d[2] == dmin])
   if core!=[]:
      Core[u] = TQ.TQ.sum(Core[u],core)
      D[u] = TQ.TQ.cutGE(TQ.TQ.sum(D[u],TQ.TQ.minus(core)),dmin) 
      for link in G.star(u):
         v = G.twin(u,link)
         if not(v in D): continue
         chLink = TQ.TQ.minus(TQ.TQ.extract(core,G.getLink(link,'tq')))
         if chLink==[]: continue
         diff = TQ.TQ.cutGE(TQ.TQ.sum(D[v],chLink),0)  
         D[v] = [ (sd,fd,max(vd,dmin)) for sd,fd,vd in diff ]
         if len(D[v])==0: del D[v]; del Dmin[v]
         else: Dmin[v] = min([e[2] for e in D[v]])
   if len(D[u])==0: del D[u]; del Dmin[u]
   else: Dmin[u] = min([e[2] for e in D[u]])
print("{0:3d}. dmin={1:3d}   node={2:4d}".format(step,dmin,u))
# print("\n-----\nCore =",Core)
t2 = datetime.datetime.now()
print("\nfinished: ",t2.ctime(),"\ntime used: ", t2-t1)

Example: Connectivity

ConnectivityTest.json

====== RESTART: C:/Users/batagelj/work/Python/graph/graph/PsCoresTQ.py ======
Temporal Ps cores in:  ConnectivityTest.json
started:  Tue Sep 20 19:59:46 2016 

  1. dmin=  1   node=   1
 11. dmin=  3   node=   7
 20. dmin=  4   node=  11

finished:  Tue Sep 20 19:59:46 2016 
time used:  0:00:00.038002
>>> Core
{
 1: [(1, 9, 1)],
 2: [(1, 9, 1)],
 3: [(1, 9, 1)],
 4: [(1, 9, 2)],
 5: [(1, 9, 2)],
 6: [(1, 9, 2)],
 7: [(1, 7, 3), (7, 9, 4)],
 8: [(1, 7, 3), (7, 9, 4)],
 9: [(1, 7, 3), (7, 9, 4)],
10: [(1, 7, 3), (7, 9, 4)],
11: [(1, 7, 3), (7, 9, 4)],
12: [(1, 9, 0)],
13: [(1, 2, 0), (2, 8, 2), (8, 9, 0)],
14: [(1, 2, 0), (2, 8, 2), (8, 9, 0)],
15: [(1, 2, 0), (2, 8, 2), (8, 9, 0)]}

We get the same result as with standard temporal core procedure.

Example: Weighted connectivity

==== RESTART: C:/Users/batagelj/work/Python/graph/graph/testPsCoresTQ.py ====
Temporal Ps cores in:  ConnectivityWeighted.json
started:  Tue Sep 20 19:26:25 2016 

Sum = {
 1: [(1, 5, 3), (5, 9, 5)], 
 2: [(1, 3, 7), (3, 9, 10)], 
 3: [(1, 5, 4), (5, 9, 2)], 
 4: [(1, 3, 4), (3, 9, 7)], 
 5: [(1, 5, 10), (5, 9, 7)], 
 6: [(1, 9, 7)], 
 7: [(1, 5, 13), (5, 7, 10), (7, 9, 14)], 
 8: [(1, 5, 13), (5, 9, 10)], 
 9: [(1, 5, 19), (5, 9, 16)], 
10: [(1, 9, 11)], 
11: [(1, 7, 11), (7, 9, 15)], 
12: [(1, 9, 0)], 
13: [(1, 2, 0), (2, 5, 6), (5, 8, 9), (8, 9, 0)], 
14: [(1, 2, 0), (2, 8, 7), (8, 9, 0)], 
15: [(1, 2, 0), (2, 5, 5), (5, 8, 8), (8, 9, 0)]} 

D = {
 1: [(1, 5, 3), (5, 9, 5)],
 2: [(1, 3, 7), (3, 9, 10)],
 3: [(1, 5, 4), (5, 9, 2)],
 4: [(1, 3, 4), (3, 9, 7)],
 5: [(1, 5, 10), (5, 9, 7)],
 6: [(1, 9, 7)],
 7: [(1, 5, 13), (5, 7, 10), (7, 9, 14)],
 8: [(1, 5, 13), (5, 9, 10)],
 9: [(1, 5, 19), (5, 9, 16)],
10: [(1, 9, 11)],
11: [(1, 7, 11), (7, 9, 15)],
13: [(2, 5, 6), (5, 8, 9)],
14: [(2, 8, 7)],
15: [(2, 5, 5), (5, 8, 8)]}

Core = {
 1: [(1, 5, 3), (5, 9, 5)],
 2: [(1, 5, 4), (5, 9, 5)],
 3: [(1, 5, 4), (5, 9, 2)],
 4: [(1, 5, 4), (5, 9, 5)],
 5: [(1, 9, 5)],
 6: [(1, 9, 5)],
 7: [(1, 9, 10)],
 8: [(1, 9, 10)],
 9: [(1, 9, 10)],
10: [(1, 9, 10)],
11: [(1, 9, 10)],
12: [(1, 9, 0)],
13: [(1, 2, 0), (2, 5, 5), (5, 8, 7), (8, 9, 0)],
14: [(1, 2, 0), (2, 5, 5), (5, 8, 7), (8, 9, 0)],
15: [(1, 2, 0), (2, 5, 5), (5, 8, 7), (8, 9, 0)]}

Example: Violence

>>> 
====== RESTART: C:/Users/batagelj/work/Python/graph/graph/PsCoresTQ.py ======
Temporal Ps cores in:  violenceE.json
started:  Tue Sep 20 22:17:14 2016 

  1. dmin=  1   node=   1
 11. dmin=  1   node=   9
 21. dmin=  1   node=  19
 31. dmin=  2   node=   1
 41. dmin=  2   node=   7
 51. dmin=  2   node=  25
 61. dmin=  3   node=   8
 71. dmin=  4   node=   1
 81. dmin=  4   node=  19
 91. dmin=  5   node=   9
101. dmin=  6   node=  10
111. dmin=  7   node=   7
121. dmin=  8   node=  12
131. dmin= 10   node=   8
141. dmin= 12   node=   8
151. dmin= 15   node=   4
161. dmin= 17   node=  16
171. dmin= 24   node=   7
181. dmin= 30   node=   7
191. dmin= 53   node=   7
201. dmin= 71   node=  16
206. dmin=174   node=  16

finished:  Tue Sep 20 22:17:15 2016 
time used:  0:00:00.140000
>>> C = TQ.TQ.TQdictCut(Core,10)
>>> for v in C:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C[v])

   
 16 : workers      [(1, 2, 27), (10, 11, 11), (14, 15, 27), (16, 17, 11), (17, 18, 17), (18, 19, 12), (22, 23, 17), 
                    (25, 26, 11), (27, 28, 18), (28, 29, 16), (29, 30, 53), (30, 31, 56), (31, 32, 51), (32, 33, 30), 
                    (33, 34, 17), (34, 35, 71), (35, 36, 76), (36, 37, 53), (37, 38, 11), (38, 39, 23), (39, 40, 54), 
                    (40, 41, 13), (41, 42, 174), (42, 43, 25), (43, 44, 20), (45, 46, 15), (46, 47, 25)]
  1 : undefined    [(25, 26, 11), (27, 28, 12), (28, 29, 16), (41, 42, 133), (45, 46, 11)]
  3 : people       [(28, 29, 12)]
  4 : police       [(1, 2, 36), (6, 7, 15), (10, 11, 24), (12, 13, 29), (14, 15, 27), (15, 16, 13), (16, 17, 24), 
                    (17, 18, 17), (18, 19, 12), (22, 23, 17), (31, 32, 17)]
  7 : fascists     [(25, 26, 11), (27, 28, 30), (28, 29, 31), (29, 30, 64), (30, 31, 56), (31, 32, 51), (32, 33, 30),
                    (33, 34, 24), (34, 35, 71), (35, 36, 76), (36, 37, 53), (37, 38, 13), (38, 39, 23), (39, 40, 54), 
                    (40, 41, 13), (41, 42, 174), (42, 43, 25), (43, 44, 20), (45, 46, 15), (46, 47, 25)]
  8 : communists   [(29, 30, 13), (30, 31, 10), (31, 32, 12)]
  9 : workers (agr)[(10, 11, 24), (16, 17, 24), (28, 29, 16), (30, 31, 13), (36, 37, 11), (39, 40, 15), (43, 44, 10)]
 10 : socialists   [(10, 11, 10), (12, 13, 29), (27, 28, 30), (28, 29, 31), (29, 30, 64), (30, 31, 29), (31, 32, 17), 
                    (32, 33, 14), (33, 34, 24), (34, 35, 38), (35, 36, 23), (36, 37, 26), (37, 38, 13), (38, 39, 19),
                     (39, 40, 54), (45, 46, 13)]
 12 : war affected  [(1, 2, 36)]
 13 : protesters   [(6, 7, 15), (15, 16, 13), (16, 17, 20)]

Example: Stem

>>> 
====== RESTART: C:/Users/batagelj/work/Python/graph/graph/PsCoresTQ.py ======
Temporal Ps cores in:  stem.json
started:  Tue Sep 20 22:37:07 2016 

  1. dmin=  1   node=   1
 11. dmin=  1   node=  21
 21. dmin=  1   node=  33
 31. dmin=  1   node=  46
    ......
1721. dmin= 24   node=  64
1731. dmin= 25   node=  10
1741. dmin= 25   node= 134
1751. dmin= 26   node=  55
    ......
1891. dmin= 38   node= 253
1901. dmin= 41   node=  54
1911. dmin= 41   node=  40
1921. dmin= 46   node= 109
1931. dmin= 55   node=  72
1939. dmin= 55   node= 272

finished:  Tue Sep 20 22:37:09 2016 
time used:  0:00:02.450003
>>> C = TQ.TQ.TQdictCut(Core,25)
>>> for v in C:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C[v])

   
  6 : HUS/SA       [(2008, 2009, 36), (2009, 2010, 26), (2010, 2011, 31), (2011, 2012, 30), (2012, 2013, 38)]
  9 : UB/B         [(2008, 2009, 36), (2009, 2010, 26), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 39)]
 12 : HVH/B        [(2008, 2009, 26), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 46), (2012, 2013, 38)]
 27 : HISC3/M      [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 41)]
 32 : HRYC/M       [(2008, 2009, 36), (2009, 2010, 25), (2010, 2011, 30), (2011, 2012, 54), (2012, 2013, 41)]
 62 : UAM/M        [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 39)]
 63 : UCM/M        [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 41)]
 69 : UMA/MA       [(2008, 2009, 36), (2009, 2010, 26), (2010, 2011, 30), (2011, 2012, 32), (2012, 2013, 37)]
 40 : HCL/B        [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 41)]
 46 : IDIBAPS/B    [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 41)]
 48 : HSCSP/B      [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 41)]
 38 : UV/V         [(2008, 2009, 36), (2009, 2011, 30),                   (2011, 2012, 55), (2012, 2013, 41)]
 11 : USAL/SA      [(2008, 2009, 36),                   (2010, 2011, 31), (2011, 2012, 42), (2012, 2013, 38)]
 89 : UPF/B        [(2008, 2009, 36),                   (2010, 2011, 25), (2011, 2012, 34), (2012, 2013, 40)]
147 : HGM/M        [(2009, 2010, 26),                   (2010, 2011, 31), (2011, 2012, 42), (2012, 2013, 39)]
176 : HUVR/SE      [(2008, 2009, 36),                   (2010, 2011, 31), (2011, 2012, 55), (2012, 2013, 39)]
 23 : UNAV         [(2008, 2009, 36), (2009, 2010, 30),                   (2011, 2012, 54), (2012, 2013, 41)]
 34 : HCL/V        [(2008, 2009, 25),                   (2010, 2011, 31), (2011, 2012, 34), (2012, 2013, 38)]
 36 : UAB/B        [(2008, 2009, 36), (2009, 2011, 30),                   (2011, 2012, 38), (2012, 2013, 37)]
 58 : HCUN/NA      [(2008, 2009, 25),                   (2010, 2011, 28), (2011, 2012, 52), (2012, 2013, 41)]
 72 : HUMV/S       [(2008, 2009, 36),                   (2010, 2011, 25), (2011, 2012, 55), (2012, 2013, 41)]
 76 : HULP/M       [(2008, 2009, 36),                   (2010, 2011, 31), (2011, 2012, 46), (2012, 2013, 39)]
 80 : HUPLFV/V     [(2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), (2011,                   2013, 38)]
 24 : UPV-EHU      [(2008, 2009, 28), (2009, 2010, 30), (2010, 2011, 31)]
 13 : HNJ/M        [(2008, 2009, 27), (2010, 2011, 30), (2012, 2013, 38)]
 16 : ICO/CT       [(2008, 2009, 36), (2010, 2011, 31), (2012, 2013, 37)]
 51 : HBST/B       [(2008, 2009, 25), (2011, 2012, 33), (2012, 2013, 29)]
  5 : CIC-IBMCC/SA [(2010, 2011, 30), (2011, 2012, 55), (2012, 2013, 41)]
 93 : CBMSO/M      [(2010, 2011, 30), (2011, 2012, 44), (2012, 2013, 37)]
109 : HVN/GR       [(2008, 2009, 36), (2011, 2012, 46), (2012, 2013, 35)]
112 : INCYL        [(2008, 2009, 36), (2010, 2011, 29), (2012, 2013, 32)]
 53 : H12O/M       [(2008, 2009, 36), (2011, 2012, 33), (2012, 2013, 37)]
 55 : HUPH/M       [(2010, 2011, 26), (2011, 2012, 34), (2012, 2013, 36)]
  2 : HCSC/M       [(2010, 2011, 31), (2011, 2012, 32)]
 35 : HUGTIP/B     [(2010, 2011, 31), (2012, 2013, 32)]
 37 : US/SE        [(2009, 2010, 30), (2010, 2011, 31)]
 67 : CIPF/V       [(2008, 2009, 32), (2012, 2013, 32)]
 73 : UGR/GR       [(2011, 2012, 39), (2012, 2013, 37)]
  3 : IN/A         [(2008, 2009, 36)]
 49 : CMRB/B       [(2008, 2009, 28)]
307 : HVB/LE       [(2010, 2011, 28)]
 54 : CNB          [(2012, 2013, 41)]
 57 : HCLB/Z       [(2011, 2012, 30)]
 81 : HVA/MU       [(2009, 2010, 30), (2012, 2013, 37)]
 82 : UM/MU        [(2008, 2009, 36)]
 85 : UA/A         [(2008, 2009, 25)]
 87 : HUP/M        [(2011, 2012, 47), (2012, 2013, 41)]
344 : HSO/M        [(2011, 2012, 25)]
 91 : CIBERNED     [(2012, 2013, 38)]
289 : HJXXIII/T    [(2008, 2009, 25)]
 28 : CT/M         [(2010, 2011, 25)]
101 : HGC/CS       [(2012, 2013, 27)]
 96 : BACM/GR      [(2011, 2012, 38), (2012, 2013, 37)]
272 : ULEON/LE     [(2011, 2012, 55), (2012, 2013, 41)]
357 : HALC/M       [(2010, 2011, 26)]
102 : USC          [(2011, 2012, 55), (2012, 2013, 41)]
108 : HGJF/CA      [(2011, 2012, 26)]
258 : INIA/M       [(2012, 2013, 38)]
124 : HJC/C        [(2010, 2011, 30), (2011, 2012, 26)]
 10 : UNIZAR/Z     [(2008, 2009, 36), (2012, 2013, 25)]
 15 : HSD/PM       [(2010, 2011, 26), (2012, 2013, 27)]
 17 : HMM/MU       [(2011, 2012, 38)]
259 : HMS/Z        [(2011, 2012, 34)]
 20 : UPC/B        [(2012, 2013, 29)]
 21 : ICREA/B      [(2010, 2011, 31)]
 22 : HDM/B        [(2008, 2009, 36), (2012, 2013, 38)]
403 : SERGAS/C     [(2008, 2009, 36)]
405 : HVC/ZA       [(2009, 2010, 30)]
133 : HCSOL/MA     [(2012, 2013, 38)]
134 : IBV/V        [(2008, 2009, 25)]
135 : CRG/B        [(2008, 2009, 33)]
535 : SERIDA/O     [(2011, 2012, 34)]
146 : HSC/GR       [(2010, 2011, 28)]
149 : IIBM/M       [(2011, 2012, 50)]
150 : UNIOVI/O     [(2009, 2010, 25), (2010, 2011, 31)]
153 : UAH/M        [(2008, 2009, 25)]
171 : UJAEN/J      [(2010, 2011, 25), (2011, 2012, 27)]
186 : UVA          [(2012, 2013, 27)]
192 : IRB/B        [(2011, 2012, 38), (2012, 2013, 27)]
266 : URL/B        [(2012, 2013, 27)]
 65 : HRS/CO       [(2012, 2013, 32)]
 66 : HCRUCES/BI   [(2011, 2012, 27)]
 74 : CIBERDEM     [(2008, 2009, 25)]
 77 : UPV/V        [(2008, 2009, 28)]
336 : TERCEL       [(2008, 2009, 25)]
232 : HUB/B        [(2008, 2009, 36)]
492 : UPNA/NA      [(2012, 2013, 37)]
245 : HCAUL/LE     [(2011, 2012, 26)]
253 : UCLM         [(2011, 2012, 38), (2012, 2013, 32)]
>>> 
>>> TQ.TQ.maxmin(); coreNum = []
>>> for u in Core: coreNum = TQ.TQ.sum(coreNum,Core[u])
>>> TQ.TQ.combinatorial()
>>> coreNum
[(1997, 1998, 10), (1998, 1999, 15), (1999, 2000, 12), (2000, 2001, 15), (2001, 2002, 21), (2002, 2003, 13), (2003, 2004, 15), 
 (2004, 2005, 14), (2005, 2006, 17), (2006, 2007, 14), (2007, 2008, 24), (2008, 2009, 36), (2009, 2010, 30), (2010, 2011, 31), 
 (2011, 2012, 55), (2012, 2013, 41)]

Example: Terror 50

>>> 
====== RESTART: C:/Users/batagelj/work/Python/graph/graph/PsCoresTQ.py ======
Temporal Ps cores in:  Terror news 50.json
started:  Fri Sep 23 00:42:34 2016 

  1. dmin=  1   node=   1
 11. dmin=  1   node=  14
 21. dmin=  1   node=  18
 31. dmin=  1   node=  26
 41. dmin=  1   node=  16
   ...... 
811. dmin= 23   node=  28
821. dmin= 29   node=   4
831. dmin= 31   node=  14
841. dmin= 36   node=   2
851. dmin= 47   node=   2
861. dmin= 61   node=  14

finished:  Fri Sep 23 00:42:46 2016 
time used:  0:00:11.140637
>>> TQ.TQ.maxmin(); coreNum = []
>>> for u in Core: coreNum = TQ.TQ.sum(coreNum,Core[u])
>>> TQ.TQ.combinatorial()
>>> coreNum
[(1, 2, 59), (2, 3, 61), (3, 4, 35), (4, 5, 36), (5, 6, 52), (6, 7, 34), (7, 8, 20), (8, 9, 21), (9, 10, 24),
 (10, 11, 21), (11, 12, 23), (12, 13, 12), (13, 14, 8), (14, 15, 12), (15, 16, 13), (16, 17, 12), (17, 18, 15),
 (18, 19, 16), (19, 20, 8), (20, 21, 12), (21, 22, 10), (22, 23, 14), (23, 24, 11), (24, 25, 7), (25, 26, 11),
 (26, 27, 8), (27, 29, 11), (29, 30, 5), (30, 31, 13), (31, 34, 8), (34, 35, 7), (35, 36, 9), (36, 37, 11),
 (37, 38, 8), (38, 39, 4), (39, 40, 9), (40, 41, 10), (41, 42, 12), (42, 43, 7), (43, 44, 4), (44, 47, 5),
 (47, 49, 7), (49, 50, 8), (50, 51, 7), (51, 52, 6), (52, 53, 4), (53, 54, 7), (54, 55, 6), (55, 57, 5), 
(57, 58, 4), (58, 60, 5), (60, 63, 4), (63, 64, 3), (64, 66, 5), (66, 67, 4)]
>>> C = TQ.TQ.TQdictCut(Core,10)
>>> for v in C:
   print("{0:3d} : {1:11s} ".format(v,G.getNode(v,'lab')),C[v])
  
  7 : new_york     [(1, 2, 59), (2, 3, 61), (3, 4, 33), (4, 5, 30), (5, 6, 49), (6, 7, 31), (7, 8, 16), 
                    (8, 9, 21), (9, 10, 24), (10, 11, 21), (11, 12, 19), (12, 13, 12), (14, 15, 12), 
                    (15, 16, 13), (16, 17, 12), (17, 18, 15), (18, 19, 16), (20, 21, 12), (21, 22, 10),
                    (22, 23, 14), (23, 24, 11), (25, 26, 11), (27, 29, 11), (30, 31, 10), (36, 37, 11), 
                    (40, 41, 10), (41, 42, 12)]
  9 : washington   [(1, 2, 35), (2, 3, 38), (3, 4, 13), (4, 5, 16), (5, 6, 46), (6, 7, 31), (7, 8, 11), 
                    (8, 9, 21), (9, 10, 24), (10, 11, 21), (11, 12, 19), (12, 13, 12), (14, 15, 12), 
                    (15, 16, 13), (16, 18, 12), (18, 19, 16), (20, 21, 12), (21, 22, 10), (22, 23, 12), 
                    (23, 24, 10), (25, 26, 11), (27, 28, 11), (30, 31, 10), (36, 37, 11), (40, 41, 10),
                    (41, 42, 12)]
  2 : attack       [(1, 2, 47), (2, 3, 61), (3, 4, 35), (4, 5, 36), (5, 6, 52), (6, 7, 34), (7, 8, 20), 
                    (8, 9, 21), (9, 10, 24), (10, 11, 21), (11, 12, 23), (12, 13, 12), (14, 15, 12), 
                    (15, 16, 13), (16, 17, 12), (17, 18, 15), (18, 19, 16), (22, 23, 14), (23, 24, 11),
                    (25, 26, 11), (27, 28, 10), (28, 29, 11), (30, 31, 10), (40, 41, 10)]
 14 : world_trade_c[(1, 2, 59), (2, 3, 61), (3, 4, 33), (4, 5, 30), (5, 6, 49), (6, 7, 31), (7, 9, 16), 
                    (9, 10, 17), (10, 12, 14), (15, 16, 13), (16, 17, 12), (17, 18, 15), (18, 19, 16), 
                    (22, 23, 14)]
  4 : people       [(1, 2, 35), (2, 3, 29), (3, 4, 16), (4, 5, 21), (5, 6, 17), (6, 7, 19), (8, 9, 13),
                    (9, 10, 14), (18, 19, 15)]
  5 : afghanistan  [(1, 2, 13), (2, 3, 14), (5, 6, 19), (6, 7, 11), (8, 10, 12), (27, 29, 11), (30, 31, 13)]
  6 : bin_laden    [(1, 2, 13), (2, 3, 14), (3, 4, 12), (5, 6, 19), (6, 7, 15), (8, 10, 12), (18, 19, 16)]
 13 : plane        [(1, 2, 41), (2, 3, 43), (3, 4, 26), (4, 5, 21), (5, 6, 31), (6, 7, 13), (7, 8, 10)]
 28 : week         [(5, 6, 25), (6, 8, 20), (8, 9, 21), (9, 10, 24), (10, 11, 20), (11, 12, 23)]
 35 : hijack       [(1, 2, 12), (2, 3, 17), (3, 4, 12), (5, 6, 13), (17, 18, 10), (18, 19, 11)]
  8 : pres_bush    [(1, 2, 35), (2, 3, 29), (4, 5, 13), (5, 6, 16), (6, 7, 15), (8, 10, 11)]
 43 : tower        [(1, 2, 46), (2, 3, 28), (3, 4, 17), (4, 5, 12), (5, 6, 13), (6, 7, 10)]
 20 : tuesday      [(1, 2, 41), (2, 3, 61), (3, 4, 35), (4, 5, 36), (5, 6, 52), (6, 7, 34)]
 21 : pentagon     [(1, 2, 46), (2, 3, 29), (3, 4, 17), (4, 5, 12), (5, 6, 18), (6, 7, 15)]
 36 : strike       [(2, 3, 17), (5, 6, 15), (18, 19, 15), (27, 29, 11), (30, 31, 13)]
  1 : united_states[(1, 2, 12), (2, 3, 29), (5, 7, 15), (8, 10, 11), (18, 19, 10)]
 40 : terrorist    [(1, 2, 36), (2, 3, 17), (5, 6, 13), (27, 28, 10)]
 17 : country      [(1, 2, 13), (2, 3, 17), (5, 6, 11), (18, 19, 16)]
 25 : world        [(1, 2, 16), (2, 3, 29), (5, 6, 14), (18, 19, 16)]
 19 : war          [(1, 2, 12), (2, 3, 29), (5, 7, 15), (8, 10, 11)]
 10 : official     [(1, 2, 16), (2, 4, 18), (5, 6, 10), (6, 7, 13)]
 34 : time         [(1, 2, 14), (2, 3, 18), (3, 4, 11)]
 48 : nation       [(1, 2, 10), (2, 3, 13), (5, 6, 11)]
 12 : military     [(18, 19, 15), (27, 28, 10)]
 47 : wednesday    [(2, 3, 29), (8, 10, 11)]
 49 : police       [(2, 3, 12), (5, 6, 10)]
 27 : day          [(2, 3, 17), (5, 6, 10)]
 15 : security     [(2, 3, 13)]
 16 : american     [(2, 3, 17)]
 18 : city         [(1, 3, 13)]
 22 : force        [(5, 6, 11)]
 24 : leader       [(1, 2, 16)]
 29 : worker       [(2, 3, 13)]
 30 : office       [(1, 2, 13)]
 31 : group        [(2, 3, 17)]
 32 : air          [(5, 6, 11)]
 38 : flight       [(2, 3, 17)]
 39 : tell         [(2, 3, 11)]
 42 : pakistan     [(5, 6, 11)]
  3 : taliban      [(2, 3, 11)]
tq/test.txt · Last modified: 2016/09/23 02:06 by vlado
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki