====== Caviar ======
[[pajek:data:temp:caviar]]
===== Caviar / ten =====
import os, re, pickle, json, datetime
os.chdir('C:/Users/batagelj/Documents/papers/2014/theHague/data')
from TQ import *
def tq(S):
S.append(13); left = prev = S[0]; P = ''
for s in S[1:]:
if (s-prev)>1:
if len(P)>0: P += ','
P += '('+str(left)+','+str(prev+1)+',1)'; left = s
prev = s
return '['+P+']'
n = 110
W = [[ [] for i in range(n)] for j in range(n)]
x = [0]*n; y = [0]*n; lab = ['']*n; T = [[]]*n
net = open('./caviar/caviar.net','r')
for i in range(4): line = net.readline()
for i in range(n):
line = net.readline()
L = re.split('\s+',line.strip())
# ['1', '"N1"', '0.3281', '0.7776', '0.5', '[1,2,3,4,5,6,7,8,9,10,11]']
x[i] = float(L[2]); y[i] = float(L[3])
lab[i] = L[1][1:-1]; T[i] = tq(eval(L[5]))
line = net.readline()
# 1 3 23 [ 7 ]
while True:
line = net.readline()
if not line: break
L = re.split('\s+',line.strip(),3)
u = eval(L[0])-1; v = eval(L[1])-1
w = eval(L[2]); t = eval(L[3][1:-1])
W[u][v] = TQ.sum(W[u][v],[(t,t+1,w)])
net.close()
caviar = {}
caviar['tit'] = 'The Caviar Network / temporal network with 11 phases'
caviar['num'] = n
caviar['nam'] = lab
caviar['tim'] = [1,12]
caviar['mat'] = W
caviar['dim'] = [n,n,1,12]
caviar['met'] = 'Carlo Morselli: Inside Criminal Networks. Springer, New York, 2009, p. 177-186'+\
'\nConversion into Pajek format: Vladimir Batagelj, 29. November 2014'
caviar['typ'] = ['simple', 'directed', 'onemode']
caviar['tin'] = T
caviar['til'] = [ (i+1,str(i+1)) for i in range(12) ]
with open("caviar.p","wb") as p: pickle.dump(caviar,p)
TQ.MatSave(caviar,'caviar.ten')
===== Caviar / basic =====
f = [0]*n; year = [0]*n; l = [0]*n
fun = open('./caviar/caviarFunction.clu','r')
for i in range(7): line = fun.readline()
for i in range(n): f[i] = int(fun.readline().strip())
fun.close()
lev = open('./caviar/caviarLevel.clu','r')
for i in range(9): line = lev.readline()
for i in range(n): l[i] = int(lev.readline().strip())
lev.close()
yea = open('./caviar/caviarYears.vec','r')
for i in range(8): line = yea.readline()
for i in range(n): year[i] = float(yea.readline().strip())
yea.close()
C = {}
C["network"] = "Caviar"
C["mode"] = "basic"
C["info"] = {}
C["info"]["title"] = "The Caviar Network / temporal network with 11 phases"
C["info"]["org"] = 1
C["info"]["nNodes"] = 110
C["info"]["legend"] = {}
C["info"]["legend"]["lev"] = { 0:"Participant",1:"Arrested",2:"Accused",3:"Informant",4:"Guilty" }
C["info"]["legend"]["fun"] = { 1:"Trafficker",2:"Non-financial",3:"Financial" }
C["meta"] = []
C["meta"].append({"desc":"Carlo Morselli: Inside Criminal Networks. Springer, New York, 2009, p. 177-186"})
C["meta"].append({"desc":"Carlo Morselli, Cynthia Giguere: Legitimate strengths in criminal networks. Crime, Law & Social Change (2006) 45: 185–200"})
C["meta"].append({"date":"29. November 2014","author":"Vladimir Batagelj","desc":"Conversion into Pajek format"})
ct = datetime.datetime.now()
C["meta"].append({"date":str(ct.date())+" {:%H:%M}".format(ct),"desc":"Conversion into netJSON format"})
C["nodes"] = [[]]*n
for i in range(n): C["nodes"][i] = \
{"id":i+1,"name":lab[i],"x":x[i],"y":y[i],"fun":f[i],"lev":l[i],"years":year[i],"act":eval(T[i])}
C["links"] = []
m = 0
for i in range(n):
for j in range(n):
if W[i][j]!=[]:
m = m+1
C["links"].append({"id":m,"lType":"arc","n1":i+1,"n2":j+1,"w":W[i][j]})
C["info"]["nArcs"] = m
with open('./caviar/caviar.json',mode='w',encoding='utf-8') as JSON:
json.dump(C,JSON,indent=2)
{
"network": "Caviar",
"mode": "basic",
"info": {
"title": "The Caviar Network / temporal network with 11 phases",
"org": 1,
"nNodes": 110,
"nArcs": 305,
"legend": {
"lev": {
"0": "Participant",
"1": "Arrested",
"2": "Accused",
"3": "Informant",
"4": "Guilty"
},
"fun": {
"1": "Trafficker",
"2": "Non-financial",
"3": "Financial"
}
}
},
"meta": [
{
"desc": "Carlo Morselli: Inside Criminal Networks. Springer, New York, 2009, p. 177-186"
},
{
"desc": "Carlo Morselli, Cynthia Giguere: Legitimate strengths in criminal networks. Crime, Law & Social Change (2006) 45: 185\u2013200"
},
{
"author": "Vladimir Batagelj",
"date": "29. November 2014",
"desc": "Conversion into Pajek format"
},
{
"date": "2016-05-01 14:37",
"desc": "Conversion into netJSON format"
}
],
"nodes": [
{
"y": 0.7776,
"name": "N1",
"id": 1,
"lev": 4,
"years": 11.0,
"x": 0.3281,
"act": [
[ 1, 12, 1 ]
],
"fun": 1
},
{
"y": 0.5909,
"name": "N2",
"id": 2,
"lev": 0,
"years": 0.0,
"x": 0.635,
"act": [
[ 1, 10, 1 ]
],
"fun": 1
},
...
],
"links": [
{
"n1": 1,
"n2": 2,
"lType": "arc",
"w": [
[ 1, 2, 2 ],
[ 2, 3, 7 ],
[ 3, 4, 8 ],
[ 4, 5, 16 ],
[ 5, 6, 3 ],
[ 6, 7, 8 ],
[ 7, 8, 5 ],
[ 8, 9, 4 ]
],
"id": 1
},
{
"n1": 1,
"n2": 3,
"lType": "arc",
...
{
"n1": 108,
"n2": 6,
"lType": "arc",
"w": [
[ 5, 6, 1 ]
],
"id": 305
}
],
}
{{tq:pub:caviarjson.zip}}
===== Caviar / general =====
# === CaviarG.JSON / general ============================================
G = {}
G["network"] = "Caviar"
G["mode"] = "general"
G["info"] = {}
G["info"]["title"] = "The Caviar Network / temporal network with 11 phases"
G["meta"] = []
G["meta"].append({"desc":"Carlo Morselli: Inside Criminal Networks. Springer, New York, 2009, p. 177-186"})
G["meta"].append({"desc":"Carlo Morselli, Cynthia Giguere: Legitimate strengths in criminal networks. Crime, Law & Social Change (2006) 45: 185–200"})
G["meta"].append({"date":"29. November 2014","author":"Vladimir Batagelj","desc":"Conversion into Pajek format"})
ct = datetime.datetime.now()
G["meta"].append({"date":str(ct.date())+" {:%H:%M}".format(ct),"desc":"Conversion into netJSON format"})
G["default"] = {}
G["default"]["style"] = {"nodes":{"shape":"circle","r":1,"color":"red"}}
G["default"]["style"]["links"] = {"line":"solid","lw":2,"color":"blue"}
G["V"] = {}
G["V"]["type"] = "nodes"
G["V"]["info"] = {"org":1,"size":110}
G["V"]["data"] = [[]]*n
for i in range(n): G["V"]["data"][i] = {"id":i+1,"name":lab[i],"act":eval(T[i])}
G["x"] = {}
G["x"]["type"] = "vector"
G["x"]["nodes"] = "V"
G["x"]["info"] = {"org":1,"size":110,"vType":"real"}
G["x"]["data"] = x
G["y"] = {}
G["y"]["type"] = "vector"
G["y"]["nodes"] = "V"
G["y"]["info"] = {"org":1,"size":110,"vType":"real"}
G["y"]["data"] = y
G["years"] = {}
G["years"]["type"] = "vector"
G["years"]["nodes"] = "V"
G["years"]["info"] = {"org":1,"size":110,"vType":"real"}
G["years"]["data"] = year
G["fun"] = {}
G["fun"]["type"] = "partition"
G["fun"]["nodes"] = "V"
G["fun"]["info"] = {"org":1,"size":110}
G["fun"]["info"]["legend"] = { 1:"Trafficker",2:"Non-financial",3:"Financial" }
G["fun"]["data"] = f
G["lev"] = {}
G["lev"]["type"] = "partition"
G["lev"]["nodes"] = "V"
G["lev"]["info"] = {"org":1,"size":110}
G["lev"]["info"]["legend"] = { 0:"Participant",1:"Arrested",2:"Accused",3:"Informant",4:"Guilty" }
G["lev"]["data"] = l
G["A"] = {}
G["A"]["type"] = "links"
G["A"]["info"] = {"gType":["onemode", "simple"]}
G["A"]["nodes"] = "V"
G["A"]["default"] = {"lType":"arc"}
G["A"]["data"] = []
m = 0
for i in range(n):
for j in range(n):
if W[i][j]!=[]:
m = m+1
G["A"]["data"].append({"id":m,"lType":"arc","n1":i+1,"n2":j+1,"w":W[i][j]})
G["A"]["info"]["nArcs"] = m
with open('./caviar/caviarG.json',mode='w',encoding='utf-8') as JSON:
json.dump(G,JSON,indent=2)
{{tq:pub:caviarGjson.zip}}