diff options
Diffstat (limited to 'experiments')
| -rw-r--r-- | experiments/build/temp.macosx-10.6-x86_64-2.7/ml.o | bin | 306248 -> 314420 bytes | |||
| -rw-r--r-- | experiments/ml.c | 378 | ||||
| -rw-r--r-- | experiments/ml.pyx | 18 | ||||
| -rwxr-xr-x | experiments/ml.so | bin | 113728 -> 114896 bytes | |||
| -rw-r--r-- | experiments/process.py | 2 |
5 files changed, 286 insertions, 112 deletions
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 Binary files differindex c1e1a40..5018cbc 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 diff --git a/experiments/ml.c b/experiments/ml.c index 3c6c463..976accb 100644 --- a/experiments/ml.c +++ b/experiments/ml.c @@ -1287,7 +1287,7 @@ static char __pyx_k_d[] = "d"; static char __pyx_k_f[] = "f"; static char __pyx_k_g[] = "g"; static char __pyx_k_h[] = "h"; -static char __pyx_k_i[] = "i"; +static char __pyx_k_i[] = "i:"; static char __pyx_k_l[] = "l"; static char __pyx_k_q[] = "q"; static char __pyx_k_t[] = "t"; @@ -1298,11 +1298,14 @@ static char __pyx_k_dt[] = "dt"; static char __pyx_k_ll[] = "ll"; static char __pyx_k_ml[] = "ml"; static char __pyx_k_np[] = "np"; +static char __pyx_k_st[] = "st"; static char __pyx_k_w1[] = "w1"; static char __pyx_k_w2[] = "w2"; static char __pyx_k_w3[] = "w3"; +static char __pyx_k_add[] = "add:"; static char __pyx_k_age[] = "age"; static char __pyx_k_end[] = "end"; +static char __pyx_k_i_2[] = "i"; static char __pyx_k_inf[] = "-inf"; static char __pyx_k_max[] = "max"; static char __pyx_k_sum[] = "sum"; @@ -1312,6 +1315,7 @@ static char __pyx_k_dist[] = "dist"; static char __pyx_k_file[] = "file"; static char __pyx_k_main[] = "__main__"; static char __pyx_k_send[] = "send"; +static char __pyx_k_stnv[] = "stnv"; static char __pyx_k_test[] = "__test__"; static char __pyx_k_DTYPE[] = "DTYPE"; static char __pyx_k_alpha[] = "alpha"; @@ -1324,21 +1328,23 @@ static char __pyx_k_numpy[] = "numpy"; static char __pyx_k_print[] = "print"; static char __pyx_k_probs[] = "probs"; static char __pyx_k_range[] = "range"; -static char __pyx_k_roots[] = "roots"; +static char __pyx_k_roots[] = "roots:"; static char __pyx_k_throw[] = "throw"; static char __pyx_k_zeros[] = "zeros"; static char __pyx_k_import[] = "__import__"; -static char __pyx_k_thresh[] = "thresh"; +static char __pyx_k_thresh[] = "thresh:"; static char __pyx_k_xrange[] = "xrange"; static char __pyx_k_float64[] = "float64"; static char __pyx_k_genexpr[] = "genexpr"; static char __pyx_k_n_nodes[] = "n_nodes"; static char __pyx_k_n_roots[] = "n_roots"; static char __pyx_k_parents[] = "parents"; +static char __pyx_k_roots_2[] = "roots"; static char __pyx_k_victims[] = "victims"; static char __pyx_k_beta_add[] = "beta_add"; static char __pyx_k_failures[] = "failures"; static char __pyx_k_probs_nv[] = "probs_nv"; +static char __pyx_k_thresh_2[] = "thresh"; static char __pyx_k_enumerate[] = "enumerate"; static char __pyx_k_n_victims[] = "n_victims"; static char __pyx_k_successes[] = "successes"; @@ -1351,6 +1357,7 @@ static char __pyx_k_max_beta_add[] = "max_beta_add"; static char __pyx_k_root_victims[] = "root_victims"; static char __pyx_k_UNDERFLOW_ERROR[] = "UNDERFLOW ERROR"; static char __pyx_k_ml_locals_genexpr[] = "ml.<locals>.genexpr"; +static char __pyx_k_len_probs_probs_thresh[] = "len(probs[probs>=thresh]):"; static char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; static char __pyx_k_Users_ben_Documents_Cascade_Pro[] = "/Users/ben/Documents/Cascade Project/criminal_cascades/experiments/ml.pyx"; static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; @@ -1366,6 +1373,7 @@ static PyObject *__pyx_n_s_RuntimeError; static PyObject *__pyx_kp_s_UNDERFLOW_ERROR; static PyObject *__pyx_kp_s_Users_ben_Documents_Cascade_Pro; static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_kp_s_add; static PyObject *__pyx_n_s_age; static PyObject *__pyx_n_s_alpha; static PyObject *__pyx_n_s_args; @@ -1383,11 +1391,13 @@ static PyObject *__pyx_n_s_failures; static PyObject *__pyx_n_s_file; static PyObject *__pyx_n_s_float64; static PyObject *__pyx_n_s_genexpr; -static PyObject *__pyx_n_s_i; +static PyObject *__pyx_kp_s_i; +static PyObject *__pyx_n_s_i_2; static PyObject *__pyx_n_s_import; static PyObject *__pyx_kp_s_inf; static PyObject *__pyx_n_s_itervalues; static PyObject *__pyx_n_s_l; +static PyObject *__pyx_kp_s_len_probs_probs_thresh; static PyObject *__pyx_n_s_ll; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_max; @@ -1410,13 +1420,17 @@ static PyObject *__pyx_n_s_probs_fail; static PyObject *__pyx_n_s_probs_nv; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_root_victims; -static PyObject *__pyx_n_s_roots; +static PyObject *__pyx_kp_s_roots; +static PyObject *__pyx_n_s_roots_2; static PyObject *__pyx_n_s_send; +static PyObject *__pyx_n_s_st; +static PyObject *__pyx_n_s_stnv; static PyObject *__pyx_n_s_successes; static PyObject *__pyx_n_s_sum; static PyObject *__pyx_n_s_t; static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_thresh; +static PyObject *__pyx_kp_s_thresh; +static PyObject *__pyx_n_s_thresh_2; static PyObject *__pyx_n_s_throw; static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; static PyObject *__pyx_n_s_victims; @@ -1487,6 +1501,9 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py __pyx_t_2ml_DTYPE_t __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -1528,14 +1545,39 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py * if exp(-alpha*dt)==0.: print 'UNDERFLOW ERROR' * # temporal = 1. / (1. + (dt - 1.)/alpha)**0.01 - 1. / (1. + dt/alpha)**0.01 * result = log(structural * temporal) # <<<<<<<<<<<<<< - * # print 'st', structural, temporal + * print 'st', structural, temporal * return result */ __pyx_v_result = log((__pyx_v_structural * __pyx_v_temporal)); + /* "ml.pyx":22 + * # temporal = 1. / (1. + (dt - 1.)/alpha)**0.01 - 1. / (1. + dt/alpha)**0.01 + * result = log(structural * temporal) + * print 'st', structural, temporal # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_structural); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_temporal); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_n_s_st); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_st); + __Pyx_GIVEREF(__pyx_n_s_st); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + if (__Pyx_Print(0, __pyx_t_4, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + /* "ml.pyx":23 * result = log(structural * temporal) - * # print 'st', structural, temporal + * print 'st', structural, temporal * return result # <<<<<<<<<<<<<< * * cdef DTYPE_t weight_failure(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, @@ -1553,6 +1595,9 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_success(int __pyx_v_dist, int __py /* function exit code */ __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("ml.weight_success", __pyx_clineno, __pyx_lineno, __pyx_filename, 0); __pyx_r = 0; __pyx_L0:; @@ -1574,6 +1619,12 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py __pyx_t_2ml_DTYPE_t __pyx_v_result; __pyx_t_2ml_DTYPE_t __pyx_r; __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("weight_failure", 0); /* "ml.pyx":29 @@ -1598,14 +1649,39 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py * temporal = exp(-alpha * dt) * # temporal = 1. - 1. / (1. + dt/alpha)**0.01 * result = log(1. - structural + structural * temporal) # <<<<<<<<<<<<<< - * # print 'stnv', structural, temporal + * print 'stnv', structural, temporal * return result */ __pyx_v_result = log(((1. - __pyx_v_structural) + (__pyx_v_structural * __pyx_v_temporal))); + /* "ml.pyx":34 + * # temporal = 1. - 1. / (1. + dt/alpha)**0.01 + * result = log(1. - structural + structural * temporal) + * print 'stnv', structural, temporal # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_structural); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_temporal); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_stnv); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_stnv); + __Pyx_GIVEREF(__pyx_n_s_stnv); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + /* "ml.pyx":35 * result = log(1. - structural + structural * temporal) - * # print 'stnv', structural, temporal + * print 'stnv', structural, temporal * return result # <<<<<<<<<<<<<< * * def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age, @@ -1622,6 +1698,12 @@ static __pyx_t_2ml_DTYPE_t __pyx_f_2ml_weight_failure(int __pyx_v_dist, int __py */ /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_WriteUnraisable("ml.weight_failure", __pyx_clineno, __pyx_lineno, __pyx_filename, 0); + __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; @@ -1963,7 +2045,7 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_ * DTYPE_t beta, ll, beta2 * list parents, failures, successes * n_roots, n_victims = len(root_victims), len(victims) # <<<<<<<<<<<<<< - * n_nodes = 148152 + * n_nodes = 4#148152 * cdef: */ if (unlikely(__pyx_v_root_victims == Py_None)) { @@ -1982,14 +2064,14 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_ /* "ml.pyx":44 * list parents, failures, successes * n_roots, n_victims = len(root_victims), len(victims) - * n_nodes = 148152 # <<<<<<<<<<<<<< + * n_nodes = 4#148152 # <<<<<<<<<<<<<< * cdef: * np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE) */ - __pyx_v_n_nodes = 148152; + __pyx_v_n_nodes = 4; /* "ml.pyx":46 - * n_nodes = 148152 + * n_nodes = 4#148152 * cdef: * np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE) # <<<<<<<<<<<<<< * np.ndarray[DTYPE_t] probs_fail = np.zeros(n_victims, dtype=DTYPE) @@ -2776,8 +2858,8 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_ * max_beta_add = float('-inf') * # iterate over all victim nodes to find the optimal threshold * for i in xrange(0, n_victims+1, 1): # <<<<<<<<<<<<<< + * print * roots = n_roots + n_victims - i - * beta = float(roots)/float(n_nodes) */ __pyx_t_28 = (__pyx_v_n_victims + 1); for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_28; __pyx_t_10+=1) { @@ -2786,208 +2868,291 @@ static PyObject *__pyx_pf_2ml_ml(CYTHON_UNUSED PyObject *__pyx_self, PyObject *_ /* "ml.pyx":83 * # iterate over all victim nodes to find the optimal threshold * for i in xrange(0, n_victims+1, 1): + * print # <<<<<<<<<<<<<< + * roots = n_roots + n_victims - i + * beta = 1. / (1. + exp(-probs[i])) + */ + if (__Pyx_Print(0, __pyx_empty_tuple, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + + /* "ml.pyx":84 + * for i in xrange(0, n_victims+1, 1): + * print * roots = n_roots + n_victims - i # <<<<<<<<<<<<<< - * beta = float(roots)/float(n_nodes) + * beta = 1. / (1. + exp(-probs[i])) * thresh = log(beta/(1.-beta)) */ __pyx_v_roots = ((__pyx_v_n_roots + __pyx_v_n_victims) - __pyx_v_i); - /* "ml.pyx":84 - * for i in xrange(0, n_victims+1, 1): + /* "ml.pyx":85 + * print * roots = n_roots + n_victims - i - * beta = float(roots)/float(n_nodes) # <<<<<<<<<<<<<< + * beta = 1. / (1. + exp(-probs[i])) # <<<<<<<<<<<<<< * thresh = log(beta/(1.-beta)) - * # print 'thresh:', thresh + * print 'thresh:', thresh */ - __pyx_v_beta = (((double)__pyx_v_roots) / ((double)__pyx_v_n_nodes)); + __pyx_t_11 = __pyx_v_i; + if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_pybuffernd_probs.diminfo[0].shape; + __pyx_v_beta = (1. / (1. + exp((-(*__Pyx_BufPtrStrided1d(__pyx_t_2ml_DTYPE_t *, __pyx_pybuffernd_probs.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_probs.diminfo[0].strides)))))); - /* "ml.pyx":85 + /* "ml.pyx":86 * roots = n_roots + n_victims - i - * beta = float(roots)/float(n_nodes) + * beta = 1. / (1. + exp(-probs[i])) * thresh = log(beta/(1.-beta)) # <<<<<<<<<<<<<< - * # print 'thresh:', thresh + * print 'thresh:', thresh * */ __pyx_v_thresh = log((__pyx_v_beta / (1. - __pyx_v_beta))); - /* "ml.pyx":89 + /* "ml.pyx":87 + * beta = 1. / (1. + exp(-probs[i])) + * thresh = log(beta/(1.-beta)) + * print 'thresh:', thresh # <<<<<<<<<<<<<< * * # add probability for realized edges and subtract probability these edges fail - * beta_add = (probs[probs>thresh]).sum() # <<<<<<<<<<<<<< - * # print 'len(probs[probs>thresh]):', len(probs[probs>thresh]) - * # add probability for the seeds and non-seeds */ - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __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 = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyTuple_New(2); 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_3 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_kp_s_thresh); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_s_thresh); + __Pyx_GIVEREF(__pyx_kp_s_thresh); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + if (__Pyx_Print(0, __pyx_t_4, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_probs), __pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __Pyx_GOTREF(__pyx_t_4); + + /* "ml.pyx":90 + * + * # add probability for realized edges and subtract probability these edges fail + * beta_add = (probs[probs>=thresh]).sum() # <<<<<<<<<<<<<< + * print 'len(probs[probs>=thresh]):', len(probs[probs>=thresh]) + * # add probability for the seeds and non-seeds + */ + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_5, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_probs), __pyx_t_3); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_5) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_beta_add, __pyx_t_4); + __pyx_t_4 = 0; + + /* "ml.pyx":91 + * # add probability for realized edges and subtract probability these edges fail + * beta_add = (probs[probs>=thresh]).sum() + * print 'len(probs[probs>=thresh]):', len(probs[probs>=thresh]) # <<<<<<<<<<<<<< + * # add probability for the seeds and non-seeds + * beta_add += roots * log(beta) + (n_nodes-roots) * log(1 - beta) + */ + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_thresh); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_probs), __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_probs), __pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_kp_s_len_probs_probs_thresh); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_len_probs_probs_thresh); + __Pyx_GIVEREF(__pyx_kp_s_len_probs_probs_thresh); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF_SET(__pyx_v_beta_add, __pyx_t_5); - __pyx_t_5 = 0; - /* "ml.pyx":92 - * # print 'len(probs[probs>thresh]):', len(probs[probs>thresh]) + /* "ml.pyx":93 + * print 'len(probs[probs>=thresh]):', len(probs[probs>=thresh]) * # add probability for the seeds and non-seeds * beta_add += roots * log(beta) + (n_nodes-roots) * log(1 - beta) # <<<<<<<<<<<<<< * * if beta_add > max_beta_add: */ - __pyx_t_5 = PyFloat_FromDouble(((__pyx_v_roots * log(__pyx_v_beta)) + ((__pyx_v_n_nodes - __pyx_v_roots) * log((1.0 - __pyx_v_beta))))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_beta_add, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyFloat_FromDouble(((__pyx_v_roots * log(__pyx_v_beta)) + ((__pyx_v_n_nodes - __pyx_v_roots) * log((1.0 - __pyx_v_beta))))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF_SET(__pyx_v_beta_add, __pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_beta_add, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_beta_add, __pyx_t_4); + __pyx_t_4 = 0; - /* "ml.pyx":94 + /* "ml.pyx":95 * beta_add += roots * log(beta) + (n_nodes-roots) * log(1 - beta) * * if beta_add > max_beta_add: # <<<<<<<<<<<<<< * max_i = i * max_beta_add = beta_add */ - __pyx_t_3 = PyObject_RichCompare(__pyx_v_beta_add, __pyx_v_max_beta_add, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_29 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_29 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = PyObject_RichCompare(__pyx_v_beta_add, __pyx_v_max_beta_add, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_29 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_29 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_29) { - /* "ml.pyx":95 + /* "ml.pyx":96 * * if beta_add > max_beta_add: * max_i = i # <<<<<<<<<<<<<< * max_beta_add = beta_add - * print max_i, max_beta_add + * print 'i:', max_i, 'add:', max_beta_add, 'roots:', roots */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF_SET(__pyx_v_max_i, __pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF_SET(__pyx_v_max_i, __pyx_t_4); + __pyx_t_4 = 0; - /* "ml.pyx":96 + /* "ml.pyx":97 * if beta_add > max_beta_add: * max_i = i * max_beta_add = beta_add # <<<<<<<<<<<<<< - * print max_i, max_beta_add + * print 'i:', max_i, 'add:', max_beta_add, 'roots:', roots * else: */ __Pyx_INCREF(__pyx_v_beta_add); __Pyx_DECREF_SET(__pyx_v_max_beta_add, __pyx_v_beta_add); - /* "ml.pyx":97 + /* "ml.pyx":98 * max_i = i * max_beta_add = beta_add - * print max_i, max_beta_add # <<<<<<<<<<<<<< + * print 'i:', max_i, 'add:', max_beta_add, 'roots:', roots # <<<<<<<<<<<<<< * else: * print i */ - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __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 = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_kp_s_i); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_i); + __Pyx_GIVEREF(__pyx_kp_s_i); __Pyx_INCREF(__pyx_v_max_i); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_max_i); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_max_i); __Pyx_GIVEREF(__pyx_v_max_i); + __Pyx_INCREF(__pyx_kp_s_add); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_s_add); + __Pyx_GIVEREF(__pyx_kp_s_add); __Pyx_INCREF(__pyx_v_max_beta_add); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_max_beta_add); + PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_max_beta_add); __Pyx_GIVEREF(__pyx_v_max_beta_add); - if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_kp_s_roots); + PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_s_roots); + __Pyx_GIVEREF(__pyx_kp_s_roots); + PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L21; } /*else*/ { - /* "ml.pyx":99 - * print max_i, max_beta_add + /* "ml.pyx":100 + * print 'i:', max_i, 'add:', max_beta_add, 'roots:', roots * else: * print i # <<<<<<<<<<<<<< * * ll += max_beta_add */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PrintOne(0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L21:; } - /* "ml.pyx":101 + /* "ml.pyx":102 * print i * * ll += max_beta_add # <<<<<<<<<<<<<< * roots = n_roots + n_victims - max_i - * # print n_nodes, n_roots, n_victims, max_i, roots + * beta = float(roots)/float(n_nodes) */ - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_v_max_beta_add); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_v_max_beta_add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_24 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_24 == (npy_double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ll = __pyx_t_24; - /* "ml.pyx":102 + /* "ml.pyx":103 * * ll += max_beta_add * roots = n_roots + n_victims - max_i # <<<<<<<<<<<<<< + * beta = float(roots)/float(n_nodes) * # print n_nodes, n_roots, n_victims, max_i, roots - * return (beta, roots, ll) */ - __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_n_roots + __pyx_v_n_victims)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_v_max_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_n_roots + __pyx_v_n_victims)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_v_max_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_roots = __pyx_t_10; /* "ml.pyx":104 + * ll += max_beta_add * roots = n_roots + n_victims - max_i + * beta = float(roots)/float(n_nodes) # <<<<<<<<<<<<<< + * # print n_nodes, n_roots, n_victims, max_i, roots + * return (beta, roots, ll) + */ + __pyx_v_beta = (((double)__pyx_v_roots) / ((double)__pyx_v_n_nodes)); + + /* "ml.pyx":106 + * beta = float(roots)/float(n_nodes) * # print n_nodes, n_roots, n_victims, max_i, roots * return (beta, roots, ll) # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_beta); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_beta); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_roots); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __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 = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_ll); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __pyx_t_3 = 0; - __pyx_t_5 = 0; __pyx_t_4 = 0; + __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; @@ -3583,7 +3748,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONG: f = "l" */ case NPY_INT: - __pyx_v_f = __pyx_k_i; + __pyx_v_f = __pyx_k_i_2; break; /* "../../../../Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266 @@ -5302,6 +5467,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_UNDERFLOW_ERROR, __pyx_k_UNDERFLOW_ERROR, sizeof(__pyx_k_UNDERFLOW_ERROR), 0, 0, 1, 0}, {&__pyx_kp_s_Users_ben_Documents_Cascade_Pro, __pyx_k_Users_ben_Documents_Cascade_Pro, sizeof(__pyx_k_Users_ben_Documents_Cascade_Pro), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 0}, {&__pyx_n_s_age, __pyx_k_age, sizeof(__pyx_k_age), 0, 0, 1, 1}, {&__pyx_n_s_alpha, __pyx_k_alpha, sizeof(__pyx_k_alpha), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, @@ -5319,11 +5485,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1}, {&__pyx_n_s_float64, __pyx_k_float64, sizeof(__pyx_k_float64), 0, 0, 1, 1}, {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1}, - {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_kp_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 0}, + {&__pyx_n_s_i_2, __pyx_k_i_2, sizeof(__pyx_k_i_2), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_kp_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 0}, {&__pyx_n_s_itervalues, __pyx_k_itervalues, sizeof(__pyx_k_itervalues), 0, 0, 1, 1}, {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1}, + {&__pyx_kp_s_len_probs_probs_thresh, __pyx_k_len_probs_probs_thresh, sizeof(__pyx_k_len_probs_probs_thresh), 0, 0, 1, 0}, {&__pyx_n_s_ll, __pyx_k_ll, sizeof(__pyx_k_ll), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, @@ -5346,13 +5514,17 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_probs_nv, __pyx_k_probs_nv, sizeof(__pyx_k_probs_nv), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_root_victims, __pyx_k_root_victims, sizeof(__pyx_k_root_victims), 0, 0, 1, 1}, - {&__pyx_n_s_roots, __pyx_k_roots, sizeof(__pyx_k_roots), 0, 0, 1, 1}, + {&__pyx_kp_s_roots, __pyx_k_roots, sizeof(__pyx_k_roots), 0, 0, 1, 0}, + {&__pyx_n_s_roots_2, __pyx_k_roots_2, sizeof(__pyx_k_roots_2), 0, 0, 1, 1}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_st, __pyx_k_st, sizeof(__pyx_k_st), 0, 0, 1, 1}, + {&__pyx_n_s_stnv, __pyx_k_stnv, sizeof(__pyx_k_stnv), 0, 0, 1, 1}, {&__pyx_n_s_successes, __pyx_k_successes, sizeof(__pyx_k_successes), 0, 0, 1, 1}, {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1}, {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_thresh, __pyx_k_thresh, sizeof(__pyx_k_thresh), 0, 0, 1, 1}, + {&__pyx_kp_s_thresh, __pyx_k_thresh, sizeof(__pyx_k_thresh), 0, 0, 1, 0}, + {&__pyx_n_s_thresh_2, __pyx_k_thresh_2, sizeof(__pyx_k_thresh_2), 0, 0, 1, 1}, {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, {&__pyx_n_s_victims, __pyx_k_victims, sizeof(__pyx_k_victims), 0, 0, 1, 1}, @@ -5457,7 +5629,7 @@ static int __Pyx_InitCachedConstants(void) { * DTYPE_t alpha, DTYPE_t delta): * cdef: */ - __pyx_tuple__7 = PyTuple_Pack(33, __pyx_n_s_root_victims, __pyx_n_s_victims, __pyx_n_s_non_victims, __pyx_n_s_age, __pyx_n_s_alpha, __pyx_n_s_delta, __pyx_n_s_n_roots, __pyx_n_s_n_victims, __pyx_n_s_n_nodes, __pyx_n_s_roots, __pyx_n_s_i, __pyx_n_s_dist, __pyx_n_s_dt, __pyx_n_s_t, __pyx_n_s_l, __pyx_n_s_beta, __pyx_n_s_ll, __pyx_n_s_beta2, __pyx_n_s_parents, __pyx_n_s_failures, __pyx_n_s_successes, __pyx_n_s_probs, __pyx_n_s_probs_fail, __pyx_n_s_probs_nv, __pyx_n_s_max_i, __pyx_n_s_max_beta_add, __pyx_n_s_thresh, __pyx_n_s_beta_add, __pyx_n_s_w1, __pyx_n_s_w2, __pyx_n_s_w3, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__7 = PyTuple_Pack(33, __pyx_n_s_root_victims, __pyx_n_s_victims, __pyx_n_s_non_victims, __pyx_n_s_age, __pyx_n_s_alpha, __pyx_n_s_delta, __pyx_n_s_n_roots, __pyx_n_s_n_victims, __pyx_n_s_n_nodes, __pyx_n_s_roots_2, __pyx_n_s_i_2, __pyx_n_s_dist, __pyx_n_s_dt, __pyx_n_s_t, __pyx_n_s_l, __pyx_n_s_beta, __pyx_n_s_ll, __pyx_n_s_beta2, __pyx_n_s_parents, __pyx_n_s_failures, __pyx_n_s_successes, __pyx_n_s_probs, __pyx_n_s_probs_fail, __pyx_n_s_probs_nv, __pyx_n_s_max_i, __pyx_n_s_max_beta_add, __pyx_n_s_thresh_2, __pyx_n_s_beta_add, __pyx_n_s_w1, __pyx_n_s_w2, __pyx_n_s_w3, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(6, 0, 33, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_ben_Documents_Cascade_Pro, __pyx_n_s_ml, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} diff --git a/experiments/ml.pyx b/experiments/ml.pyx index cc79609..853c934 100644 --- a/experiments/ml.pyx +++ b/experiments/ml.pyx @@ -19,7 +19,7 @@ cdef DTYPE_t weight_success(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, if exp(-alpha*dt)==0.: print 'UNDERFLOW ERROR' # temporal = 1. / (1. + (dt - 1.)/alpha)**0.01 - 1. / (1. + dt/alpha)**0.01 result = log(structural * temporal) - # print 'st', structural, temporal + print 'st', structural, temporal return result cdef DTYPE_t weight_failure(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, @@ -31,7 +31,7 @@ cdef DTYPE_t weight_failure(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, temporal = exp(-alpha * dt) # temporal = 1. - 1. / (1. + dt/alpha)**0.01 result = log(1. - structural + structural * temporal) - # print 'stnv', structural, temporal + print 'stnv', structural, temporal return result def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age, @@ -41,7 +41,7 @@ def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age, DTYPE_t beta, ll, beta2 list parents, failures, successes n_roots, n_victims = len(root_victims), len(victims) - n_nodes = 148152 + n_nodes = 4#148152 cdef: np.ndarray[DTYPE_t] probs = np.zeros(n_victims, dtype=DTYPE) np.ndarray[DTYPE_t] probs_fail = np.zeros(n_victims, dtype=DTYPE) @@ -80,21 +80,23 @@ def ml(dict root_victims, dict victims, dict non_victims, DTYPE_t age, max_beta_add = float('-inf') # iterate over all victim nodes to find the optimal threshold for i in xrange(0, n_victims+1, 1): + print roots = n_roots + n_victims - i - beta = float(roots)/float(n_nodes) + beta = 1. / (1. + exp(-probs[i])) + # beta = float(roots)/float(n_nodes) thresh = log(beta/(1.-beta)) - # print 'thresh:', thresh + print 'thresh:', thresh # add probability for realized edges and subtract probability these edges fail - beta_add = (probs[probs>thresh]).sum() - # print 'len(probs[probs>thresh]):', len(probs[probs>thresh]) + beta_add = (probs[probs>=thresh]).sum() + print 'len(probs[probs>=thresh]):', len(probs[probs>=thresh]) # add probability for the seeds and non-seeds beta_add += roots * log(beta) + (n_nodes-roots) * log(1 - beta) if beta_add > max_beta_add: max_i = i max_beta_add = beta_add - print max_i, max_beta_add + print 'i:', max_i, 'add:', max_beta_add, 'roots:', roots else: print i diff --git a/experiments/ml.so b/experiments/ml.so Binary files differindex 59be721..a42cc37 100755 --- a/experiments/ml.so +++ b/experiments/ml.so diff --git a/experiments/process.py b/experiments/process.py index a432dab..1b84d35 100644 --- a/experiments/process.py +++ b/experiments/process.py @@ -21,6 +21,6 @@ if __name__ == "__main__": # fh.flush() alpha = 1/10. - delta = 0.28 + delta = 0.2 beta, roots, ll = ml(root_victims, victims, non_victims, age, alpha, delta) print "\t".join(map(str, [1./alpha, delta, beta, roots, ll]))
\ No newline at end of file |
