summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2015-09-14 17:08:20 -0400
committerThibaut Horel <thibaut.horel@gmail.com>2015-09-14 17:08:20 -0400
commitee158d02d92c597a35bc2e8704a85989a547f0e4 (patch)
tree8ce32e0e53629426adfd1cb5898ec309c8c85533
parent4222c3cb6a0e1de8b1f2568ae5674920bfa573eb (diff)
downloadcriminal_cascades-ee158d02d92c597a35bc2e8704a85989a547f0e4.tar.gz
Getting read of old stuff
-rw-r--r--hawkes/data.py20
-rw-r--r--hawkes/data2.py71
-rw-r--r--hawkes/main.py11
3 files changed, 14 insertions, 88 deletions
diff --git a/hawkes/data.py b/hawkes/data.py
index 4d7744e..e5c33f8 100644
--- a/hawkes/data.py
+++ b/hawkes/data.py
@@ -2,6 +2,7 @@ from csv import DictReader
import sys
from itertools import product
from cPickle import dump
+from math import cos
MAX_TIME = 3012
@@ -10,13 +11,18 @@ def parse(s):
return None if s == "NA" else int(float(s))
+def fluctuation_int(t):
+ if t is None:
+ t = MAX_TIME
+ return t + 0.43 / 0.0172 * (cos(4.36) - cos(0.0172 * t + 4.36))
+
+
def load_nodes(filename):
with open(filename) as fh:
reader = DictReader(fh)
d = {parse(row["name"]): parse(row["fatal_day"]) for row in reader}
for n, t in d.iteritems():
- if t is None:
- d[n] = MAX_TIME
+ d[n] = fluctuation_int(t)
return d
@@ -26,10 +32,12 @@ def load_edges(filename):
with open(filename) as fh:
reader = DictReader(fh)
for row in reader:
- fro, to, t, weight = map(parse, [row["from"], row["to"],
- row["t1"], row["w1"]])
+ fro, to, t, dist = map(parse, [row["from"], row["to"],
+ row["t1"], row["dist"]])
+ if dist >= 2:
+ continue
d = edges.get(fro, dict())
- d[to] = weight
+ d[to] = dist
edges[fro] = d
s = events.get(fro, set())
s.add(t)
@@ -62,4 +70,4 @@ if __name__ == "__main__":
nodes = load_nodes(sys.argv[1])
edges, events = load_edges(sys.argv[2])
event_edges = compute_event_edges(events, edges)
- dump((nodes, edges, events, event_edges), open("data.pickle", "wb"))
+ dump((nodes, edges, events, event_edges), open("data-dist1.pickle", "wb"))
diff --git a/hawkes/data2.py b/hawkes/data2.py
deleted file mode 100644
index b8f83c9..0000000
--- a/hawkes/data2.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from csv import DictReader
-import sys
-from itertools import product
-from cPickle import dump
-from math import cos
-
-MAX_TIME = 3012
-
-
-def parse(s):
- return None if s == "NA" else int(float(s))
-
-
-def fluctuation_int(t):
- if t is None:
- t = MAX_TIME
- return t + 0.43 / 0.0172 * (cos(4.36) - cos(0.0172 * t + 4.36))
-
-
-def load_nodes(filename):
- with open(filename) as fh:
- reader = DictReader(fh)
- d = {parse(row["name"]): parse(row["fatal_day"]) for row in reader}
- for n, t in d.iteritems():
- d[n] = fluctuation_int(t)
- return d
-
-
-def load_edges(filename):
- events = {}
- edges = {}
- with open(filename) as fh:
- reader = DictReader(fh)
- for row in reader:
- fro, to, t, dist = map(parse, [row["from"], row["to"],
- row["t1"], row["dist"]])
- d = edges.get(fro, dict())
- d[to] = dist
- edges[fro] = d
- s = events.get(fro, set())
- s.add(t)
- events[fro] = s
- return edges, events
-
-
-def compute_event_edges(events, edges):
- event_edges = {}
-
- for fro in events:
- for t in events[fro]:
- event_edges[(fro, t)] = set()
-
- for fro in edges:
- for to in edges[fro]:
- try:
- e1, e2 = events[fro], events[to]
- except KeyError:
- continue
- for t1, t2 in product(e1, e2):
- if t1 < t2:
- s = event_edges[(to, t2)]
- s.add((fro, t1, edges[fro][to]))
- event_edges[(to, t2)] = s
- return event_edges
-
-
-if __name__ == "__main__":
- nodes = load_nodes(sys.argv[1])
- edges, events = load_edges(sys.argv[2])
- event_edges = compute_event_edges(events, edges)
- dump((nodes, edges, events, event_edges), open("data2.pickle", "wb"))
diff --git a/hawkes/main.py b/hawkes/main.py
index 40993a1..bc319cc 100644
--- a/hawkes/main.py
+++ b/hawkes/main.py
@@ -34,17 +34,6 @@ def iter_events(events):
yield (n, t)
-def ll_old(lamb, alpha, mu):
- r1 = sum(log(lamb + sum(alpha * w * mu * exp(-mu * (t1 - t2))
- for (n2, t2, w) in s))
- for ((n1, t1), s) in event_edges.iteritems())
- r2 = sum(sum(alpha * w * (1 - exp(-mu * (nodes[n2] - t1)))
- for n2, w in edges[n1].iteritems() if nodes[n2] > t1)
- for (n1, t1) in iter_events(events))
- r3 = lamb * sum(nodes.itervalues())
- return -(r1 - r2 - r3)
-
-
def ll(lamb, alpha, mu):
r1 = sum(log(lamb * (1 + 0.43 * sin(0.0172 * t1 + 4.36))
+ sum(alpha / d * mu * exp(-mu * (t1 - t2))