summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R Scripts/generate-network.R16
-rw-r--r--experiments/build/temp.macosx-10.6-x86_64-2.7/ml.obin306196 -> 306268 bytes
-rw-r--r--experiments/build_network.py2
-rw-r--r--experiments/ml.c180
-rw-r--r--experiments/ml.pyx11
-rwxr-xr-xexperiments/ml.sobin119284 -> 119276 bytes
-rw-r--r--experiments/out.log200
-rw-r--r--experiments/process.py4
8 files changed, 207 insertions, 206 deletions
diff --git a/R Scripts/generate-network.R b/R Scripts/generate-network.R
index dab81a4..db7012d 100644
--- a/R Scripts/generate-network.R
+++ b/R Scripts/generate-network.R
@@ -3,9 +3,9 @@ setwd("~/Documents/Cascade Project/")
source('criminal_cascades/R Scripts/temporal.R')
source('criminal_cascades/R Scripts/structural.R')
-alpha = 1/10
-beta = 0.01
-delta = 0.25
+alpha = 0.1
+beta = 0.25
+delta = 0.1
# lmbda = 1/10
t_max = 1000
@@ -16,7 +16,7 @@ plot(g, vertex.size=3, vertex.label=NA)
V(g)$seed = runif(vcount(g))<beta
seeds = which(V(g)$seed)
V(g)$vic = V(g)$seed
-V(g)$vic.day[V(g)$seed] = 1#sample(1:t_max, sum(V(g)$seed))
+V(g)$vic.day[V(g)$seed] = sample(1:t_max, sum(V(g)$seed), replace=T) #1 if testing ml2
V(g)$spawn.date = 0
V(g)$infector = NA
@@ -31,9 +31,11 @@ for (day in 1:t_max){
inf.days = day + ceiling(rexp(length(infected),alpha))
realized = ((inf.days <= V(g)$vic.day[infected]) %in% c(NA,T)) & (inf.days<=t_max)
infected = infected[realized]
- V(g)$vic[infected] = TRUE
- V(g)$vic.day[infected] = inf.days[realized]
- V(g)$infector[infected] = vic
+ if(sum(realized)){
+ V(g)$vic[infected] = TRUE
+ V(g)$vic.day[infected] = inf.days[realized]
+ V(g)$infector[infected] = vic
+ }
}
}
diff --git a/experiments/build/temp.macosx-10.6-x86_64-2.7/ml.o b/experiments/build/temp.macosx-10.6-x86_64-2.7/ml.o
index 8667998..8cabba1 100644
--- a/experiments/build/temp.macosx-10.6-x86_64-2.7/ml.o
+++ b/experiments/build/temp.macosx-10.6-x86_64-2.7/ml.o
Binary files differ
diff --git a/experiments/build_network.py b/experiments/build_network.py
index a481a90..c58d5cf 100644
--- a/experiments/build_network.py
+++ b/experiments/build_network.py
@@ -8,7 +8,7 @@ def build_network(filename):
victims = {}
non_victims = {}
age = 0
- t_max = 3012
+ t_max = 1000
with open(filename) as fh:
reader = DictReader(fh)
for row in reader:
diff --git a/experiments/ml.c b/experiments/ml.c
index 92e313f..4b9c2ef 100644
--- a/experiments/ml.c
+++ b/experiments/ml.c
@@ -1332,7 +1332,7 @@ static PyObject *__pyx_n_s_zeros;
static PyObject *__pyx_float_1_;
static PyObject *__pyx_float__01;
static PyObject *__pyx_float_0_01;
-static PyObject *__pyx_int_148152;
+static PyObject *__pyx_int_5000;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
@@ -1363,7 +1363,7 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py
* """weight for successful infection, exponential time model"""
* cdef DTYPE_t structural, temporal, result
* structural = delta ** dist # <<<<<<<<<<<<<<
- * temporal = log(exp(alpha)-1.) - alpha*dt/7.
+ * temporal = log(exp(alpha)-1.) - alpha*dt/1.
* result = log(structural) + temporal
*/
__pyx_v_structural = pow(__pyx_v_delta, ((__pyx_t_2ml_DTYPE_t)__pyx_v_dist));
@@ -1371,15 +1371,15 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py
/* "ml.pyx":14
* cdef DTYPE_t structural, temporal, result
* structural = delta ** dist
- * temporal = log(exp(alpha)-1.) - alpha*dt/7. # <<<<<<<<<<<<<<
+ * temporal = log(exp(alpha)-1.) - alpha*dt/1. # <<<<<<<<<<<<<<
* result = log(structural) + temporal
* return result
*/
- __pyx_v_temporal = (log((exp(__pyx_v_alpha) - 1.)) - ((__pyx_v_alpha * __pyx_v_dt) / 7.));
+ __pyx_v_temporal = (log((exp(__pyx_v_alpha) - 1.)) - ((__pyx_v_alpha * __pyx_v_dt) / 1.));
/* "ml.pyx":15
* structural = delta ** dist
- * temporal = log(exp(alpha)-1.) - alpha*dt/7.
+ * temporal = log(exp(alpha)-1.) - alpha*dt/1.
* result = log(structural) + temporal # <<<<<<<<<<<<<<
* return result
*
@@ -1387,7 +1387,7 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py
__pyx_v_result = (log(__pyx_v_structural) + __pyx_v_temporal);
/* "ml.pyx":16
- * temporal = log(exp(alpha)-1.) - alpha*dt/7.
+ * temporal = log(exp(alpha)-1.) - alpha*dt/1.
* result = log(structural) + temporal
* return result # <<<<<<<<<<<<<<
*
@@ -1430,7 +1430,7 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py
* """weight for failed infection, exponential time model"""
* cdef DTYPE_t structural, temporal, result
* structural = delta ** dist # <<<<<<<<<<<<<<
- * temporal = exp(-alpha * dt/7.)
+ * temporal = exp(-alpha * dt/1.)
* result = log(1. - structural + structural * temporal)
*/
__pyx_v_structural = pow(__pyx_v_delta, ((__pyx_t_2ml_DTYPE_t)__pyx_v_dist));
@@ -1438,15 +1438,15 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py
/* "ml.pyx":23
* cdef DTYPE_t structural, temporal, result
* structural = delta ** dist
- * temporal = exp(-alpha * dt/7.) # <<<<<<<<<<<<<<
+ * temporal = exp(-alpha * dt/1.) # <<<<<<<<<<<<<<
* result = log(1. - structural + structural * temporal)
* return result
*/
- __pyx_v_temporal = exp((((-__pyx_v_alpha) * __pyx_v_dt) / 7.));
+ __pyx_v_temporal = exp((((-__pyx_v_alpha) * __pyx_v_dt) / 1.));
/* "ml.pyx":24
* structural = delta ** dist
- * temporal = exp(-alpha * dt/7.)
+ * temporal = exp(-alpha * dt/1.)
* result = log(1. - structural + structural * temporal) # <<<<<<<<<<<<<<
* return result
*
@@ -1454,7 +1454,7 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py
__pyx_v_result = log(((1. - __pyx_v_structural) + (__pyx_v_structural * __pyx_v_temporal)));
/* "ml.pyx":25
- * temporal = exp(-alpha * dt/7.)
+ * temporal = exp(-alpha * dt/1.)
* result = log(1. - structural + structural * temporal)
* return result # <<<<<<<<<<<<<<
*
@@ -1701,7 +1701,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
* DTYPE_t beta, ll, beta_add, max_beta, max_beta_add
* list parents, failures, successes
* n_roots, n_victims = len(root_victims), len(victims) # <<<<<<<<<<<<<<
- * n_nodes = 148152
+ * n_nodes = 5000
* cdef:
*/
if (unlikely(__pyx_v_root_victims == Py_None)) {
@@ -1720,15 +1720,15 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
/* "ml.pyx":34
* list parents, failures, successes
* n_roots, n_victims = len(root_victims), len(victims)
- * n_nodes = 148152 # <<<<<<<<<<<<<<
+ * n_nodes = 5000 # <<<<<<<<<<<<<<
* cdef:
* np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE)
*/
- __Pyx_INCREF(__pyx_int_148152);
- __pyx_v_n_nodes = __pyx_int_148152;
+ __Pyx_INCREF(__pyx_int_5000);
+ __pyx_v_n_nodes = __pyx_int_5000;
/* "ml.pyx":36
- * n_nodes = 148152
+ * n_nodes = 5000
* cdef:
* np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE) # <<<<<<<<<<<<<<
* np.ndarray[DTYPE_t] probs_fail = np.zeros(n_victims, dtype=DTYPE)
@@ -2858,7 +2858,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
* ll = probs_fail.sum() # add probability that all edges to all victims fail
* ll += probs_nv.sum() # add probability that all edges to non_victims fail # <<<<<<<<<<<<<<
*
- * # print 'probs', probs
+ * max_beta_add = float('-inf')
*/
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
@@ -2890,38 +2890,38 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_ll = __pyx_t_27;
- /* "ml.pyx":78
+ /* "ml.pyx":77
+ * ll += probs_nv.sum() # add probability that all edges to non_victims fail
*
- * # print 'probs', probs
* max_beta_add = float('-inf') # <<<<<<<<<<<<<<
* # iterate over all victim nodes to find the optimal threshold
* for beta in np.arange(0.01, 1., .01):
*/
- __pyx_t_29 = __Pyx_PyObject_AsDouble(__pyx_kp_s_inf); if (unlikely(__pyx_t_29 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_29 = __Pyx_PyObject_AsDouble(__pyx_kp_s_inf); if (unlikely(__pyx_t_29 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_max_beta_add = __pyx_t_29;
- /* "ml.pyx":80
+ /* "ml.pyx":79
* max_beta_add = float('-inf')
* # iterate over all victim nodes to find the optimal threshold
* for beta in np.arange(0.01, 1., .01): # <<<<<<<<<<<<<<
- * thresh = log(beta/(3012.*(1.-beta)))
+ * thresh = log(beta/(1000.*(1.-beta)))
* seeds = probs<thresh
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
__pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_2 = 0;
__pyx_t_36 = NULL;
} else {
- __pyx_t_2 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_36 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_36 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
for (;;) {
@@ -2929,16 +2929,16 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
if (likely(PyList_CheckExact(__pyx_t_6))) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
}
} else {
@@ -2947,79 +2947,79 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_5);
}
- __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_beta = __pyx_t_27;
- /* "ml.pyx":81
+ /* "ml.pyx":80
* # iterate over all victim nodes to find the optimal threshold
* for beta in np.arange(0.01, 1., .01):
- * thresh = log(beta/(3012.*(1.-beta))) # <<<<<<<<<<<<<<
+ * thresh = log(beta/(1000.*(1.-beta))) # <<<<<<<<<<<<<<
* seeds = probs<thresh
* non_seeds = probs>=thresh
*/
- __pyx_v_thresh = log((__pyx_v_beta / (3012. * (1. - __pyx_v_beta))));
+ __pyx_v_thresh = log((__pyx_v_beta / (1000. * (1. - __pyx_v_beta))));
- /* "ml.pyx":82
+ /* "ml.pyx":81
* for beta in np.arange(0.01, 1., .01):
- * thresh = log(beta/(3012.*(1.-beta)))
+ * thresh = log(beta/(1000.*(1.-beta)))
* seeds = probs<thresh # <<<<<<<<<<<<<<
* non_seeds = probs>=thresh
* roots = n_roots + sum(seeds)
*/
- __pyx_t_5 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF_SET(__pyx_v_seeds, __pyx_t_4);
__pyx_t_4 = 0;
- /* "ml.pyx":83
- * thresh = log(beta/(3012.*(1.-beta)))
+ /* "ml.pyx":82
+ * thresh = log(beta/(1000.*(1.-beta)))
* seeds = probs<thresh
* non_seeds = probs>=thresh # <<<<<<<<<<<<<<
* roots = n_roots + sum(seeds)
*
*/
- __pyx_t_4 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_non_seeds, __pyx_t_5);
__pyx_t_5 = 0;
- /* "ml.pyx":84
+ /* "ml.pyx":83
* seeds = probs<thresh
* non_seeds = probs>=thresh
* roots = n_roots + sum(seeds) # <<<<<<<<<<<<<<
*
* beta_add = 0.
*/
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_n_roots); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_n_roots); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_seeds);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_seeds);
__Pyx_GIVEREF(__pyx_v_seeds);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_roots = __pyx_t_12;
- /* "ml.pyx":86
+ /* "ml.pyx":85
* roots = n_roots + sum(seeds)
*
* beta_add = 0. # <<<<<<<<<<<<<<
@@ -3028,18 +3028,18 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_beta_add = 0.;
- /* "ml.pyx":88
+ /* "ml.pyx":87
* beta_add = 0.
* # add probability for realized edges and subtract probability these edges fail
* beta_add += (probs[non_seeds]).sum() # <<<<<<<<<<<<<<
* # add probability for the seeds and non-seeds
- * beta_add += roots * log(beta/3012.) + (n_nodes-roots) * log(1. - beta)
+ * beta_add += roots * log(beta/1000.) + (n_nodes-roots) * log(1. - beta)
*/
- __pyx_t_4 = PyFloat_FromDouble(__pyx_v_beta_add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyFloat_FromDouble(__pyx_v_beta_add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_probs), __pyx_v_non_seeds); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+ __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_probs), __pyx_v_non_seeds); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_21);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = NULL;
@@ -3053,57 +3053,57 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
}
}
if (__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_21); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_21); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
- __pyx_t_21 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_21 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_21);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_21); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_21); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
__pyx_v_beta_add = __pyx_t_27;
- /* "ml.pyx":90
+ /* "ml.pyx":89
* beta_add += (probs[non_seeds]).sum()
* # add probability for the seeds and non-seeds
- * beta_add += roots * log(beta/3012.) + (n_nodes-roots) * log(1. - beta) # <<<<<<<<<<<<<<
+ * beta_add += roots * log(beta/1000.) + (n_nodes-roots) * log(1. - beta) # <<<<<<<<<<<<<<
*
* if beta_add > max_beta_add:
*/
- __pyx_t_21 = PyFloat_FromDouble(__pyx_v_beta_add); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_21 = PyFloat_FromDouble(__pyx_v_beta_add); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_21);
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_roots * log((__pyx_v_beta / 3012.)))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyFloat_FromDouble((__pyx_v_roots * log((__pyx_v_beta / 1000.)))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_roots); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_roots); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_n_nodes, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyNumber_Subtract(__pyx_v_n_nodes, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyFloat_FromDouble(log((1. - __pyx_v_beta))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyFloat_FromDouble(log((1. - __pyx_v_beta))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_20 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_20 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_20);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_20); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_20); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
- __pyx_t_20 = PyNumber_InPlaceAdd(__pyx_t_21, __pyx_t_4); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_20 = PyNumber_InPlaceAdd(__pyx_t_21, __pyx_t_4); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_20);
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_20); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_27 = __pyx_PyFloat_AsDouble(__pyx_t_20); if (unlikely((__pyx_t_27 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__pyx_v_beta_add = __pyx_t_27;
- /* "ml.pyx":92
- * beta_add += roots * log(beta/3012.) + (n_nodes-roots) * log(1. - beta)
+ /* "ml.pyx":91
+ * beta_add += roots * log(beta/1000.) + (n_nodes-roots) * log(1. - beta)
*
* if beta_add > max_beta_add: # <<<<<<<<<<<<<<
* max_beta = beta
@@ -3112,7 +3112,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
__pyx_t_31 = ((__pyx_v_beta_add > __pyx_v_max_beta_add) != 0);
if (__pyx_t_31) {
- /* "ml.pyx":93
+ /* "ml.pyx":92
*
* if beta_add > max_beta_add:
* max_beta = beta # <<<<<<<<<<<<<<
@@ -3121,7 +3121,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_max_beta = __pyx_v_beta;
- /* "ml.pyx":94
+ /* "ml.pyx":93
* if beta_add > max_beta_add:
* max_beta = beta
* max_roots = roots # <<<<<<<<<<<<<<
@@ -3130,7 +3130,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_max_roots = __pyx_v_roots;
- /* "ml.pyx":95
+ /* "ml.pyx":94
* max_beta = beta
* max_roots = roots
* max_beta_add = beta_add # <<<<<<<<<<<<<<
@@ -3142,17 +3142,17 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
}
__pyx_L32:;
- /* "ml.pyx":80
+ /* "ml.pyx":79
* max_beta_add = float('-inf')
* # iterate over all victim nodes to find the optimal threshold
* for beta in np.arange(0.01, 1., .01): # <<<<<<<<<<<<<<
- * thresh = log(beta/(3012.*(1.-beta)))
+ * thresh = log(beta/(1000.*(1.-beta)))
* seeds = probs<thresh
*/
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "ml.pyx":98
+ /* "ml.pyx":97
* # print 'beta:', max_beta, 'add:', max_beta_add, 'roots:', max_roots
*
* ll += max_beta_add # <<<<<<<<<<<<<<
@@ -3161,7 +3161,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_ll = (__pyx_v_ll + __pyx_v_max_beta_add);
- /* "ml.pyx":99
+ /* "ml.pyx":98
*
* ll += max_beta_add
* roots = max_roots # <<<<<<<<<<<<<<
@@ -3170,7 +3170,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_roots = __pyx_v_max_roots;
- /* "ml.pyx":100
+ /* "ml.pyx":99
* ll += max_beta_add
* roots = max_roots
* beta = max_beta # <<<<<<<<<<<<<<
@@ -3179,19 +3179,19 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_
*/
__pyx_v_beta = __pyx_v_max_beta;
- /* "ml.pyx":102
+ /* "ml.pyx":101
* beta = max_beta
* # print n_nodes, n_roots, n_victims, max_i, roots
* return (beta, roots, ll) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = PyFloat_FromDouble(__pyx_v_beta); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyFloat_FromDouble(__pyx_v_beta); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_20 = __Pyx_PyInt_From_int(__pyx_v_roots); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_20 = __Pyx_PyInt_From_int(__pyx_v_roots); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_20);
- __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_21 = PyTuple_New(3); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_21 = PyTuple_New(3); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_21);
PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_6);
@@ -5376,14 +5376,14 @@ static int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "ml.pyx":80
+ /* "ml.pyx":79
* max_beta_add = float('-inf')
* # iterate over all victim nodes to find the optimal threshold
* for beta in np.arange(0.01, 1., .01): # <<<<<<<<<<<<<<
- * thresh = log(beta/(3012.*(1.-beta)))
+ * thresh = log(beta/(1000.*(1.-beta)))
* seeds = probs<thresh
*/
- __pyx_tuple_ = PyTuple_Pack(3, __pyx_float_0_01, __pyx_float_1_, __pyx_float__01); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_tuple_ = PyTuple_Pack(3, __pyx_float_0_01, __pyx_float_1_, __pyx_float__01); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_tuple_);
__Pyx_GIVEREF(__pyx_tuple_);
@@ -5476,7 +5476,7 @@ static int __Pyx_InitGlobals(void) {
__pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_float__01 = PyFloat_FromDouble(.01); if (unlikely(!__pyx_float__01)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_float_0_01 = PyFloat_FromDouble(0.01); if (unlikely(!__pyx_float_0_01)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_int_148152 = PyInt_FromLong(148152L); if (unlikely(!__pyx_int_148152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_int_5000 = PyInt_FromLong(5000); if (unlikely(!__pyx_int_5000)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
return 0;
__pyx_L1_error:;
return -1;
diff --git a/experiments/ml.pyx b/experiments/ml.pyx
index 858207f..0d72c44 100644
--- a/experiments/ml.pyx
+++ b/experiments/ml.pyx
@@ -11,7 +11,7 @@ cdef DTYPE_t weight_success(int dist, int dt, DTYPE_t alpha, DTYPE_t delta,
"""weight for successful infection, exponential time model"""
cdef DTYPE_t structural, temporal, result
structural = delta ** dist
- temporal = log(exp(alpha)-1.) - alpha*dt/7.
+ temporal = log(exp(alpha)-1.) - alpha*dt/1.
result = log(structural) + temporal
return result
@@ -20,7 +20,7 @@ cdef DTYPE_t weight_failure(int dist, int dt, DTYPE_t alpha, DTYPE_t delta,
"""weight for failed infection, exponential time model"""
cdef DTYPE_t structural, temporal, result
structural = delta ** dist
- temporal = exp(-alpha * dt/7.)
+ temporal = exp(-alpha * dt/1.)
result = log(1. - structural + structural * temporal)
return result
@@ -31,7 +31,7 @@ def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age,
DTYPE_t beta, ll, beta_add, max_beta, max_beta_add
list parents, failures, successes
n_roots, n_victims = len(root_victims), len(victims)
- n_nodes = 148152
+ n_nodes = 5000
cdef:
np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE)
np.ndarray[DTYPE_t] probs_fail = np.zeros(n_victims, dtype=DTYPE)
@@ -74,11 +74,10 @@ def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age,
ll = probs_fail.sum() # add probability that all edges to all victims fail
ll += probs_nv.sum() # add probability that all edges to non_victims fail
- # print 'probs', probs
max_beta_add = float('-inf')
# iterate over all victim nodes to find the optimal threshold
for beta in np.arange(0.01, 1., .01):
- thresh = log(beta/(3012.*(1.-beta)))
+ thresh = log(beta/(1000.*(1.-beta)))
seeds = probs<thresh
non_seeds = probs>=thresh
roots = n_roots + sum(seeds)
@@ -87,7 +86,7 @@ def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age,
# add probability for realized edges and subtract probability these edges fail
beta_add += (probs[non_seeds]).sum()
# add probability for the seeds and non-seeds
- beta_add += roots * log(beta/3012.) + (n_nodes-roots) * log(1. - beta)
+ beta_add += roots * log(beta/1000.) + (n_nodes-roots) * log(1. - beta)
if beta_add > max_beta_add:
max_beta = beta
diff --git a/experiments/ml.so b/experiments/ml.so
index a08d635..d4cd7b4 100755
--- a/experiments/ml.so
+++ b/experiments/ml.so
Binary files differ
diff --git a/experiments/out.log b/experiments/out.log
index a718511..895f69f 100644
--- a/experiments/out.log
+++ b/experiments/out.log
@@ -1,100 +1,100 @@
-0.001 0.001 0.08 11270 -130174.021949
-0.001 0.0016681005372 0.08 11270 -130186.81792
-0.001 0.00278255940221 0.08 11270 -130208.510741
-0.001 0.00464158883361 0.08 11270 -130245.688267
-0.001 0.00774263682681 0.08 11270 -130310.57411
-0.001 0.0129154966501 0.08 11270 -130427.308991
-0.001 0.0215443469003 0.08 11270 -130648.06397
-0.001 0.035938136638 0.04 6478 -128816.657559
-0.001 0.0599484250319 0.04 6478 -127394.665041
-0.001 0.1 0.04 6478 -127688.933813
-0.0016681005372 0.001 0.08 11270 -130184.321487
-0.0016681005372 0.0016681005372 0.08 11270 -130204.10481
-0.0016681005372 0.00278255940221 0.08 11270 -130237.646155
-0.0016681005372 0.00464158883361 0.08 11270 -130295.138019
-0.0016681005372 0.00774263682681 0.08 11270 -130395.500445
-0.0016681005372 0.0129154966501 0.08 11270 -130576.118953
-0.0016681005372 0.0215443469003 0.04 6478 -128846.541805
-0.0016681005372 0.035938136638 0.04 6478 -127087.253323
-0.0016681005372 0.0599484250319 0.04 6478 -126230.808822
-0.0016681005372 0.1 0.02 2792 -126557.181556
-0.00278255940221 0.001 0.08 11270 -130198.331202
-0.00278255940221 0.0016681005372 0.08 11270 -130227.620554
-0.00278255940221 0.00278255940221 0.08 11270 -130277.284253
-0.00278255940221 0.00464158883361 0.08 11270 -130362.425847
-0.00278255940221 0.00774263682681 0.08 11270 -130511.096608
-0.00278255940221 0.0129154966501 0.04 6499 -129059.422383
-0.00278255940221 0.0215443469003 0.04 6478 -127109.015024
-0.00278255940221 0.035938136638 0.04 6478 -125684.241338
-0.00278255940221 0.0599484250319 0.04 6478 -125600.024485
-0.00278255940221 0.1 0.02 2792 -126287.212393
-0.00464158883361 0.001 0.08 11270 -130215.294173
-0.00464158883361 0.0016681005372 0.08 11270 -130256.095445
-0.00464158883361 0.00278255940221 0.08 11270 -130325.28705
-0.00464158883361 0.00464158883361 0.08 11270 -130443.928528
-0.00464158883361 0.00774263682681 0.05 7027 -129395.352373
-0.00464158883361 0.0129154966501 0.04 6516 -127431.591365
-0.00464158883361 0.0215443469003 0.04 6478 -125683.037727
-0.00464158883361 0.035938136638 0.04 6478 -124664.01619
-0.00464158883361 0.0599484250319 0.02 2914 -124502.496739
-0.00464158883361 0.1 0.02 2792 -127134.604186
-0.00774263682681 0.001 0.08 11270 -130232.773853
-0.00774263682681 0.0016681005372 0.08 11270 -130285.439066
-0.00774263682681 0.00278255940221 0.08 11270 -130374.758088
-0.00774263682681 0.00464158883361 0.05 7652 -129744.991978
-0.00774263682681 0.00774263682681 0.05 6995 -127969.97982
-0.00774263682681 0.0129154966501 0.05 6677 -126168.108707
-0.00774263682681 0.0215443469003 0.04 6513 -124653.173909
-0.00774263682681 0.035938136638 0.04 6478 -124060.374554
-0.00774263682681 0.0599484250319 0.02 2937 -123459.631205
-0.00774263682681 0.1 0.01 1199 -128091.177099
-0.0129154966501 0.001 0.08 11270 -130247.637572
-0.0129154966501 0.0016681005372 0.08 11270 -130310.391126
-0.0129154966501 0.00278255940221 0.06 8952 -129978.711147
-0.0129154966501 0.00464158883361 0.05 7622 -128580.851845
-0.0129154966501 0.00774263682681 0.05 7183 -126905.034076
-0.0129154966501 0.0129154966501 0.05 6902 -125304.331411
-0.0129154966501 0.0215443469003 0.05 6712 -124093.056726
-0.0129154966501 0.035938136638 0.03 4220 -123607.130582
-0.0129154966501 0.0599484250319 0.02 3041 -122971.205801
-0.0129154966501 0.1 0.01 1210 -129142.326165
-0.0215443469003 0.001 0.08 11270 -130258.217698
-0.0215443469003 0.0016681005372 0.07 9957 -130081.814439
-0.0215443469003 0.00278255940221 0.06 8662 -129124.841865
-0.0215443469003 0.00464158883361 0.05 7864 -127781.895187
-0.0215443469003 0.00774263682681 0.05 7487 -126287.652103
-0.0215443469003 0.0129154966501 0.05 7248 -124916.428004
-0.0215443469003 0.0215443469003 0.05 7058 -124002.594007
-0.0215443469003 0.035938136638 0.03 4060 -122986.296269
-0.0215443469003 0.0599484250319 0.02 3225 -122943.105886
-0.0215443469003 0.1 0.01 1280 -129952.279246
-0.035938136638 0.001 0.07 10368 -130108.933188
-0.035938136638 0.0016681005372 0.06 9401 -129491.738149
-0.035938136638 0.00278255940221 0.06 8856 -128521.580165
-0.035938136638 0.00464158883361 0.06 8372 -127371.393158
-0.035938136638 0.00774263682681 0.05 7935 -126147.240183
-0.035938136638 0.0129154966501 0.05 7682 -125046.741534
-0.035938136638 0.0215443469003 0.05 7476 -124429.198394
-0.035938136638 0.035938136638 0.03 4307 -122878.240073
-0.035938136638 0.0599484250319 0.02 2939 -123316.885543
-0.035938136638 0.1 0.01 1389 -130593.383741
-0.0599484250319 0.001 0.07 10079 -129709.888924
-0.0599484250319 0.0016681005372 0.06 9545 -129062.475372
-0.0599484250319 0.00278255940221 0.06 9190 -128212.556391
-0.0599484250319 0.00464158883361 0.06 8868 -127288.891344
-0.0599484250319 0.00774263682681 0.06 8559 -126362.833809
-0.0599484250319 0.0129154966501 0.06 8304 -125604.769419
-0.0599484250319 0.0215443469003 0.04 6187 -124909.433209
-0.0599484250319 0.035938136638 0.03 4809 -123357.362127
-0.0599484250319 0.0599484250319 0.02 2564 -123821.010849
-0.0599484250319 0.1 0.01 1603 -131308.788018
-0.1 0.001 0.07 10122 -129407.183852
-0.1 0.0016681005372 0.07 9858 -128826.387421
-0.1 0.00278255940221 0.06 9551 -128164.459489
-0.1 0.00464158883361 0.06 9323 -127449.154213
-0.1 0.00774263682681 0.06 9138 -126798.726378
-0.1 0.0129154966501 0.06 8941 -126366.966378
-0.1 0.0215443469003 0.05 6820 -125456.586416
-0.1 0.035938136638 0.04 5608 -124150.372812
-0.1 0.0599484250319 0.02 2771 -124505.31667
-0.1 0.1 0.01 1909 -132157.286741
+0.1 0.01 0.32 1587 -16246.2835303
+0.1 0.0129154966501 0.3 1522 -16193.1560593
+0.1 0.016681005372 0.3 1482 -16136.7007139
+0.1 0.0215443469003 0.29 1445 -16083.927662
+0.1 0.0278255940221 0.28 1418 -16045.4325535
+0.1 0.035938136638 0.28 1399 -16033.3471288
+0.1 0.0464158883361 0.28 1381 -16065.8045855
+0.1 0.0599484250319 0.27 1365 -16174.1785652
+0.1 0.0774263682681 0.23 1166 -16354.0210508
+0.1 0.1 0.22 1094 -16710.6318304
+0.113646366639 0.01 0.32 1587 -16223.0544334
+0.113646366639 0.0129154966501 0.3 1522 -16169.9167648
+0.113646366639 0.016681005372 0.3 1496 -16114.7613028
+0.113646366639 0.0215443469003 0.29 1453 -16064.997114
+0.113646366639 0.0278255940221 0.29 1436 -16029.4224738
+0.113646366639 0.035938136638 0.28 1413 -16020.1691105
+0.113646366639 0.0464158883361 0.28 1399 -16057.1566663
+0.113646366639 0.0599484250319 0.26 1321 -16167.2369119
+0.113646366639 0.0774263682681 0.23 1173 -16335.8221545
+0.113646366639 0.1 0.22 1108 -16694.4584299
+0.129154966501 0.01 0.32 1587 -16201.5712361
+0.129154966501 0.0129154966501 0.31 1537 -16149.1696536
+0.129154966501 0.016681005372 0.3 1496 -16095.9372617
+0.129154966501 0.0215443469003 0.29 1464 -16049.6817227
+0.129154966501 0.0278255940221 0.29 1445 -16016.7348561
+0.129154966501 0.035938136638 0.29 1426 -16011.4090845
+0.129154966501 0.0464158883361 0.28 1407 -16051.4875514
+0.129154966501 0.0599484250319 0.26 1288 -16157.5499839
+0.129154966501 0.0774263682681 0.24 1183 -16321.8627529
+0.129154966501 0.1 0.22 1115 -16682.3833134
+0.146779926762 0.01 0.32 1587 -16182.0774435
+0.146779926762 0.0129154966501 0.31 1537 -16131.2048239
+0.146779926762 0.016681005372 0.3 1507 -16080.1708094
+0.146779926762 0.0215443469003 0.3 1482 -16037.2306303
+0.146779926762 0.0278255940221 0.29 1453 -16008.0169599
+0.146779926762 0.035938136638 0.29 1436 -16006.0071619
+0.146779926762 0.0464158883361 0.28 1418 -16050.0144027
+0.146779926762 0.0599484250319 0.26 1281 -16148.6892961
+0.146779926762 0.0774263682681 0.24 1187 -16311.3545786
+0.146779926762 0.1 0.23 1138 -16673.8963578
+0.16681005372 0.01 0.32 1587 -16164.849071
+0.16681005372 0.0129154966501 0.31 1560 -16116.449014
+0.16681005372 0.016681005372 0.3 1522 -16067.8766242
+0.16681005372 0.0215443469003 0.3 1496 -16027.3638618
+0.16681005372 0.0278255940221 0.29 1464 -16003.2426018
+0.16681005372 0.035938136638 0.29 1453 -16004.4084252
+0.16681005372 0.0464158883361 0.29 1436 -16052.4652191
+0.16681005372 0.0599484250319 0.26 1289 -16141.4404164
+0.16681005372 0.0774263682681 0.24 1196 -16303.5459122
+0.16681005372 0.1 0.23 1145 -16670.0806528
+0.189573565241 0.01 0.32 1613 -16149.7026241
+0.189573565241 0.0129154966501 0.31 1560 -16103.5965222
+0.189573565241 0.016681005372 0.31 1537 -16058.5451224
+0.189573565241 0.0215443469003 0.3 1507 -16020.9935104
+0.189573565241 0.0278255940221 0.3 1496 -16000.5729402
+0.189573565241 0.035938136638 0.29 1464 -16006.9538317
+0.189573565241 0.0464158883361 0.29 1453 -16058.7205642
+0.189573565241 0.0599484250319 0.25 1260 -16136.4254637
+0.189573565241 0.0774263682681 0.24 1206 -16299.8411955
+0.189573565241 0.1 0.23 1157 -16671.3131735
+0.215443469003 0.01 0.32 1613 -16136.2887288
+0.215443469003 0.0129154966501 0.32 1587 -16093.9635334
+0.215443469003 0.016681005372 0.31 1537 -16052.071471
+0.215443469003 0.0215443469003 0.3 1522 -16018.1621521
+0.215443469003 0.0278255940221 0.3 1507 -16000.7844822
+0.215443469003 0.035938136638 0.3 1482 -16012.1618981
+0.215443469003 0.0464158883361 0.28 1399 -16066.3079647
+0.215443469003 0.0599484250319 0.25 1272 -16136.5860246
+0.215443469003 0.0774263682681 0.24 1212 -16301.153347
+0.215443469003 0.1 0.23 1173 -16676.745682
+0.244843674682 0.01 0.32 1613 -16125.5232284
+0.244843674682 0.0129154966501 0.32 1587 -16085.6169883
+0.244843674682 0.016681005372 0.31 1560 -16048.1741694
+0.244843674682 0.0215443469003 0.31 1537 -16018.2052077
+0.244843674682 0.0278255940221 0.3 1522 -16004.8785245
+0.244843674682 0.035938136638 0.3 1507 -16019.6055296
+0.244843674682 0.0464158883361 0.28 1415 -16072.4792069
+0.244843674682 0.0599484250319 0.26 1278 -16139.4702448
+0.244843674682 0.0774263682681 0.25 1237 -16306.1951749
+0.244843674682 0.1 0.24 1195 -16688.1452238
+0.278255940221 0.01 0.33 1637 -16116.7453334
+0.278255940221 0.0129154966501 0.32 1613 -16080.0365035
+0.278255940221 0.016681005372 0.32 1587 -16046.9682889
+0.278255940221 0.0215443469003 0.31 1560 -16021.5867637
+0.278255940221 0.0278255940221 0.31 1537 -16011.7866661
+0.278255940221 0.035938136638 0.3 1522 -16030.8034204
+0.278255940221 0.0464158883361 0.27 1367 -16078.1951393
+0.278255940221 0.0599484250319 0.26 1298 -16144.7176332
+0.278255940221 0.0774263682681 0.25 1249 -16315.5245594
+0.278255940221 0.1 0.24 1207 -16702.3027221
+0.316227766017 0.01 0.33 1637 -16109.5865483
+0.316227766017 0.0129154966501 0.32 1613 -16075.7276647
+0.316227766017 0.016681005372 0.32 1587 -16046.7383729
+0.316227766017 0.0215443469003 0.31 1560 -16026.6264576
+0.316227766017 0.0278255940221 0.31 1537 -16022.2115914
+0.316227766017 0.035938136638 0.31 1537 -16044.7445633
+0.316227766017 0.0464158883361 0.27 1374 -16084.9299944
+0.316227766017 0.0599484250319 0.26 1308 -16152.3121983
+0.316227766017 0.0774263682681 0.25 1260 -16327.1609197
+0.316227766017 0.1 0.25 1235 -16718.4366844
diff --git a/experiments/process.py b/experiments/process.py
index a0c9b98..6c71934 100644
--- a/experiments/process.py
+++ b/experiments/process.py
@@ -16,9 +16,9 @@ if __name__ == "__main__":
root_victims, victims, non_victims, age = load(open(sys.argv[1]))
# alphas = np.arange(.02, .1, .01) # parameter of the time component
- alphas = np.logspace(-3,-1,num=10)
+ alphas = np.logspace(-1,-.5,num=10)
# deltas = np.arange(.02, .1, .01) # parameter of the structural component
- deltas = np.logspace(-3,-1,num=10)
+ deltas = np.logspace(-2,-1,num=10)
with open("out.log", "w") as fh:
for alpha, delta in product(alphas, deltas):
beta, roots, ll = ml(root_victims, victims, non_victims, age, alpha, delta)