/pullahelpers.html

https://bitbucket.org/pailakka/pullautin2 · HTML · 1459 lines · 1442 code · 16 blank · 1 comment · 0 complexity · e0c14c1aec77a0c83670c8941efa72df MD5 · raw file

  1. <!-- Generated by Cython 0.17.1 on Tue Dec 18 22:56:11 2012 -->
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <style type="text/css">
  6. body { font-family: courier; font-size: 12; }
  7. .code { font-size: 9; color: #444444; display: none; margin-left: 20px; }
  8. .py_c_api { color: red; }
  9. .py_macro_api { color: #FF7000; }
  10. .pyx_c_api { color: #FF3000; }
  11. .pyx_macro_api { color: #FF7000; }
  12. .refnanny { color: #FFA000; }
  13. .error_goto { color: #FFA000; }
  14. .tag { }
  15. .coerce { color: #008000; border: 1px dotted #008000 }
  16. .py_attr { color: #FF0000; font-weight: bold; }
  17. .c_attr { color: #0000FF; }
  18. .py_call { color: #FF0000; font-weight: bold; }
  19. .c_call { color: #0000FF; }
  20. .line { margin: 0em }
  21. </style>
  22. <script>
  23. function toggleDiv(id) {
  24. theDiv = document.getElementById(id);
  25. if (theDiv.style.display == 'none') theDiv.style.display = 'block';
  26. else theDiv.style.display = 'none';
  27. }
  28. </script>
  29. </head>
  30. <body>
  31. <p>Generated by Cython 0.17.1 on Tue Dec 18 22:56:11 2012
  32. <p>Raw output: <a href="pullahelpers.c">pullahelpers.c</a>
  33. <pre class='line' style='background-color: #FFFF57' onclick='toggleDiv("line1")'> 1: import numpy as np</pre>
  34. <pre id='line1' class='code' style='background-color: #FFFF57'>
  35. /* "pullahelpers.pyx":1
  36. * import numpy as np # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  37. * cimport numpy as np
  38. * cimport cython
  39. */
  40. __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Import</span>(((PyObject *)__pyx_n_s__numpy), 0, -1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  41. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_1);
  42. if (<span class='py_c_api'>PyObject_SetAttr</span>(__pyx_m, __pyx_n_s__np, __pyx_t_1) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  43. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  44. /* "pullahelpers.pyx":1
  45. * import numpy as np # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  46. * cimport numpy as np
  47. * cimport cython
  48. */
  49. __pyx_t_1 = <span class='py_c_api'>PyDict_New</span>();<span class='error_goto'> if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  50. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(((PyObject *)__pyx_t_1));
  51. if (<span class='py_c_api'>PyObject_SetAttr</span>(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  52. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  53. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line2")'> 2: cimport numpy as np</pre>
  54. <pre id='line2' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line3")'> 3: cimport cython</pre>
  55. <pre id='line3' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line4")'> 4: </pre>
  56. <pre id='line4' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line5")'> 5: </pre>
  57. <pre id='line5' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line6")'> 6: </pre>
  58. <pre id='line6' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line7")'> 7: ctypedef np.float_t DTYPE_t</pre>
  59. <pre id='line7' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line8")'> 8: </pre>
  60. <pre id='line8' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line9")'> 9: @cython.boundscheck(False)</pre>
  61. <pre id='line9' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF29' onclick='toggleDiv("line10")'> 10: def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid):</pre>
  62. <pre id='line10' class='code' style='background-color: #FFFF29'>
  63. /* "pullahelpers.pyx":10
  64. *
  65. * @cython.boundscheck(False)
  66. * def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  67. * cdef int xmax = mapgrid.shape[0]
  68. * cdef int ymax = mapgrid.shape[1]
  69. */
  70. static PyObject *__pyx_pf_12pullahelpers_interpolate(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mapgrid) {
  71. int __pyx_v_xmax;
  72. int __pyx_v_ymax;
  73. __pyx_t_12pullahelpers_DTYPE_t __pyx_v_val1;
  74. __pyx_t_12pullahelpers_DTYPE_t __pyx_v_val2;
  75. int __pyx_v_val1f;
  76. int __pyx_v_val2f;
  77. int __pyx_v_x;
  78. int __pyx_v_y;
  79. int __pyx_v_i1;
  80. int __pyx_v_i2;
  81. int __pyx_v_j1;
  82. int __pyx_v_j2;
  83. int __pyx_v_i;
  84. int __pyx_v_j;
  85. int __pyx_v_c;
  86. PyObject *__pyx_v_val = NULL;
  87. __Pyx_LocalBuf_ND __pyx_pybuffernd_mapgrid;
  88. __Pyx_Buffer __pyx_pybuffer_mapgrid;
  89. PyObject *__pyx_r = NULL;
  90. <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  91. <span class='pyx_c_api'><span class='refnanny'>__Pyx_RefNannySetupContext</span></span>("interpolate", 0);
  92. __pyx_pybuffer_mapgrid.pybuffer.buf = NULL;
  93. __pyx_pybuffer_mapgrid.refcount = 0;
  94. __pyx_pybuffernd_mapgrid.data = NULL;
  95. __pyx_pybuffernd_mapgrid.rcbuffer = &__pyx_pybuffer_mapgrid;
  96. {
  97. __Pyx_BufFmt_StackElem __pyx_stack[1];
  98. if (unlikely(<span class='pyx_c_api'>__Pyx_GetBufferAndValidate</span>(&__pyx_pybuffernd_mapgrid.rcbuffer->pybuffer, (PyObject*)__pyx_v_mapgrid, &__Pyx_TypeInfo_nn___pyx_t_12pullahelpers_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1))<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  99. }
  100. __pyx_pybuffernd_mapgrid.diminfo[0].strides = __pyx_pybuffernd_mapgrid.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mapgrid.diminfo[0].shape = __pyx_pybuffernd_mapgrid.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mapgrid.diminfo[1].strides = __pyx_pybuffernd_mapgrid.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mapgrid.diminfo[1].shape = __pyx_pybuffernd_mapgrid.rcbuffer->pybuffer.shape[1];
  101. /* "pullahelpers.pyx":10
  102. *
  103. * @cython.boundscheck(False)
  104. * def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  105. * cdef int xmax = mapgrid.shape[0]
  106. * cdef int ymax = mapgrid.shape[1]
  107. */
  108. __pyx_k_tuple_13 = <span class='py_c_api'>PyTuple_New</span>(19);<span class='error_goto'> if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  109. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_k_tuple_13);
  110. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__mapgrid));
  111. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_n_s__mapgrid));
  112. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__mapgrid));
  113. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__xmax));
  114. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 1, ((PyObject *)__pyx_n_s__xmax));
  115. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__xmax));
  116. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__ymax));
  117. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 2, ((PyObject *)__pyx_n_s__ymax));
  118. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__ymax));
  119. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__val1));
  120. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 3, ((PyObject *)__pyx_n_s__val1));
  121. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__val1));
  122. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__val2));
  123. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 4, ((PyObject *)__pyx_n_s__val2));
  124. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__val2));
  125. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__val1f));
  126. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 5, ((PyObject *)__pyx_n_s__val1f));
  127. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__val1f));
  128. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__val2f));
  129. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 6, ((PyObject *)__pyx_n_s__val2f));
  130. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__val2f));
  131. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__x));
  132. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 7, ((PyObject *)__pyx_n_s__x));
  133. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__x));
  134. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__y));
  135. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 8, ((PyObject *)__pyx_n_s__y));
  136. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__y));
  137. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__i1));
  138. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 9, ((PyObject *)__pyx_n_s__i1));
  139. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__i1));
  140. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__i2));
  141. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 10, ((PyObject *)__pyx_n_s__i2));
  142. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__i2));
  143. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__j1));
  144. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 11, ((PyObject *)__pyx_n_s__j1));
  145. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__j1));
  146. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__j2));
  147. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 12, ((PyObject *)__pyx_n_s__j2));
  148. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__j2));
  149. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__i12));
  150. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 13, ((PyObject *)__pyx_n_s__i12));
  151. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__i12));
  152. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__DTYPE_t));
  153. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 14, ((PyObject *)__pyx_n_s__DTYPE_t));
  154. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__DTYPE_t));
  155. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__i));
  156. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 15, ((PyObject *)__pyx_n_s__i));
  157. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__i));
  158. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__j));
  159. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 16, ((PyObject *)__pyx_n_s__j));
  160. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__j));
  161. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__c));
  162. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 17, ((PyObject *)__pyx_n_s__c));
  163. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__c));
  164. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_n_s__val));
  165. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_k_tuple_13, 18, ((PyObject *)__pyx_n_s__val));
  166. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_n_s__val));
  167. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(((PyObject *)__pyx_k_tuple_13));
  168. /* "pullahelpers.pyx":10
  169. *
  170. * @cython.boundscheck(False)
  171. * def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  172. * cdef int xmax = mapgrid.shape[0]
  173. * cdef int ymax = mapgrid.shape[1]
  174. */
  175. __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_12pullahelpers_1interpolate, NULL, __pyx_n_s__pullahelpers);<span class='error_goto'> if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  176. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_1);
  177. if (<span class='py_c_api'>PyObject_SetAttr</span>(__pyx_m, __pyx_n_s__interpolate, __pyx_t_1) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  178. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  179. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line11")'> 11: cdef int xmax = mapgrid.shape[0]</pre>
  180. <pre id='line11' class='code' style='background-color: #FFFFff'>
  181. /* "pullahelpers.pyx":11
  182. * @cython.boundscheck(False)
  183. * def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid):
  184. * cdef int xmax = mapgrid.shape[0] # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  185. * cdef int ymax = mapgrid.shape[1]
  186. * cdef DTYPE_t val1,val2
  187. */
  188. __pyx_v_xmax = (__pyx_v_mapgrid->dimensions[0]);
  189. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line12")'> 12: cdef int ymax = mapgrid.shape[1]</pre>
  190. <pre id='line12' class='code' style='background-color: #FFFFff'>
  191. /* "pullahelpers.pyx":12
  192. * def interpolate(np.ndarray[DTYPE_t, ndim=2] mapgrid):
  193. * cdef int xmax = mapgrid.shape[0]
  194. * cdef int ymax = mapgrid.shape[1] # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  195. * cdef DTYPE_t val1,val2
  196. * cdef int val1f,val2f
  197. */
  198. __pyx_v_ymax = (__pyx_v_mapgrid->dimensions[1]);
  199. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line13")'> 13: cdef DTYPE_t val1,val2</pre>
  200. <pre id='line13' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line14")'> 14: cdef int val1f,val2f</pre>
  201. <pre id='line14' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line15")'> 15: cdef int x, y</pre>
  202. <pre id='line15' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line16")'> 16: </pre>
  203. <pre id='line16' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line17")'> 17: cdef int i1,i2,j1,j2,i12</pre>
  204. <pre id='line17' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line18")'> 18: </pre>
  205. <pre id='line18' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFd4' onclick='toggleDiv("line19")'> 19: print 'step1'</pre>
  206. <pre id='line19' class='code' style='background-color: #FFFFd4'>
  207. /* "pullahelpers.pyx":19
  208. * cdef int i1,i2,j1,j2,i12
  209. *
  210. * print 'step1' # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  211. * for x in xrange(xmax):
  212. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  213. */
  214. if (<span class='pyx_c_api'>__Pyx_PrintOne</span>(0, ((PyObject *)__pyx_n_s__step1)) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  215. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line20")'> 20: for x in xrange(xmax):</pre>
  216. <pre id='line20' class='code' style='background-color: #FFFFff'>
  217. /* "pullahelpers.pyx":20
  218. *
  219. * print 'step1'
  220. * for x in xrange(xmax): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  221. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  222. * continue
  223. */
  224. __pyx_t_1 = __pyx_v_xmax;
  225. for (__pyx_t_2 = 0; __pyx_t_2 <code><</code> __pyx_t_1; __pyx_t_2+=1) {
  226. __pyx_v_x = __pyx_t_2;
  227. </pre><pre class='line' style='background-color: #FFFF2a' onclick='toggleDiv("line21")'> 21: if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -&gt; skipataan koko rivi</pre>
  228. <pre id='line21' class='code' style='background-color: #FFFF2a'>
  229. /* "pullahelpers.pyx":21
  230. * print 'step1'
  231. * for x in xrange(xmax):
  232. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  233. * continue
  234. * for y in xrange(ymax):
  235. */
  236. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  237. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  238. __pyx_t_4 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  239. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  240. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  241. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  242. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  243. __pyx_t_5 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__sum);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  244. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  245. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  246. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  247. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  248. __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  249. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  250. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_t_3);
  251. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_3);
  252. __pyx_t_3 = 0;
  253. __pyx_t_3 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  254. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  255. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  256. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  257. __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  258. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  259. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_t_3);
  260. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_3);
  261. __pyx_t_3 = 0;
  262. __pyx_t_3 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  263. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  264. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  265. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  266. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_3);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  267. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  268. __pyx_t_8 = (!__pyx_t_7);
  269. if (__pyx_t_8) {
  270. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line22")'> 22: continue</pre>
  271. <pre id='line22' class='code' style='background-color: #FFFFff'>
  272. /* "pullahelpers.pyx":22
  273. * for x in xrange(xmax):
  274. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  275. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  276. * for y in xrange(ymax):
  277. * if not np.isnan(mapgrid[x][y]):
  278. */
  279. goto __pyx_L3_continue;
  280. goto __pyx_L5;
  281. }
  282. __pyx_L5:;
  283. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line23")'> 23: for y in xrange(ymax):</pre>
  284. <pre id='line23' class='code' style='background-color: #FFFFff'>
  285. /* "pullahelpers.pyx":23
  286. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  287. * continue
  288. * for y in xrange(ymax): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  289. * if not np.isnan(mapgrid[x][y]):
  290. * continue
  291. */
  292. __pyx_t_9 = __pyx_v_ymax;
  293. for (__pyx_t_10 = 0; __pyx_t_10 <code><</code> __pyx_t_9; __pyx_t_10+=1) {
  294. __pyx_v_y = __pyx_t_10;
  295. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line24")'> 24: if not np.isnan(mapgrid[x][y]):</pre>
  296. <pre id='line24' class='code' style='background-color: #FFFF3c'>
  297. /* "pullahelpers.pyx":24
  298. * continue
  299. * for y in xrange(ymax):
  300. * if not np.isnan(mapgrid[x][y]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  301. * continue
  302. *
  303. */
  304. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  305. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  306. __pyx_t_6 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  307. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  308. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  309. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  310. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  311. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  312. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  313. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  314. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  315. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  316. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_4);
  317. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_4);
  318. __pyx_t_4 = 0;
  319. __pyx_t_4 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  320. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  321. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  322. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  323. __pyx_t_8 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(__pyx_t_8 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  324. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  325. __pyx_t_7 = (!__pyx_t_8);
  326. if (__pyx_t_7) {
  327. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line25")'> 25: continue</pre>
  328. <pre id='line25' class='code' style='background-color: #FFFFff'>
  329. /* "pullahelpers.pyx":25
  330. * for y in xrange(ymax):
  331. * if not np.isnan(mapgrid[x][y]):
  332. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  333. *
  334. * i1 = x
  335. */
  336. goto __pyx_L6_continue;
  337. goto __pyx_L8;
  338. }
  339. __pyx_L8:;
  340. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line26")'> 26: </pre>
  341. <pre id='line26' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line27")'> 27: i1 = x</pre>
  342. <pre id='line27' class='code' style='background-color: #FFFFff'>
  343. /* "pullahelpers.pyx":27
  344. * continue
  345. *
  346. * i1 = x # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  347. * i2 = x
  348. * j1 = y
  349. */
  350. __pyx_v_i1 = __pyx_v_x;
  351. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line28")'> 28: i2 = x</pre>
  352. <pre id='line28' class='code' style='background-color: #FFFFff'>
  353. /* "pullahelpers.pyx":28
  354. *
  355. * i1 = x
  356. * i2 = x # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  357. * j1 = y
  358. * j2 = y
  359. */
  360. __pyx_v_i2 = __pyx_v_x;
  361. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line29")'> 29: j1 = y</pre>
  362. <pre id='line29' class='code' style='background-color: #FFFFff'>
  363. /* "pullahelpers.pyx":29
  364. * i1 = x
  365. * i2 = x
  366. * j1 = y # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  367. * j2 = y
  368. *
  369. */
  370. __pyx_v_j1 = __pyx_v_y;
  371. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line30")'> 30: j2 = y</pre>
  372. <pre id='line30' class='code' style='background-color: #FFFFff'>
  373. /* "pullahelpers.pyx":30
  374. * i2 = x
  375. * j1 = y
  376. * j2 = y # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  377. *
  378. * for i1 from -x <code><</code>= i1 <code><</code> 0 by 1:
  379. */
  380. __pyx_v_j2 = __pyx_v_y;
  381. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line31")'> 31: </pre>
  382. <pre id='line31' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line32")'> 32: for i1 from -x &lt;= i1 &lt; 0 by 1:</pre>
  383. <pre id='line32' class='code' style='background-color: #FFFFff'>
  384. /* "pullahelpers.pyx":32
  385. * j2 = y
  386. *
  387. * for i1 from -x <code><</code>= i1 <code><</code> 0 by 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  388. * if not np.isnan(mapgrid[-i1][y]):
  389. * break
  390. */
  391. for (__pyx_v_i1 = (-__pyx_v_x); __pyx_v_i1 <code><</code> 0; __pyx_v_i1+=1) {
  392. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line33")'> 33: if not np.isnan(mapgrid[-i1][y]):</pre>
  393. <pre id='line33' class='code' style='background-color: #FFFF3c'>
  394. /* "pullahelpers.pyx":33
  395. *
  396. * for i1 from -x <code><</code>= i1 <code><</code> 0 by 1:
  397. * if not np.isnan(mapgrid[-i1][y]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  398. * break
  399. * i1 = -i1
  400. */
  401. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  402. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  403. __pyx_t_3 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_4, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  404. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  405. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  406. __pyx_t_11 = (-__pyx_v_i1);
  407. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_t_11, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  408. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  409. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_4, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  410. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  411. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  412. __pyx_t_4 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  413. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  414. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_4, 0, __pyx_t_6);
  415. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_6);
  416. __pyx_t_6 = 0;
  417. __pyx_t_6 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  418. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  419. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  420. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  421. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_6);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  422. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  423. __pyx_t_8 = (!__pyx_t_7);
  424. if (__pyx_t_8) {
  425. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line34")'> 34: break</pre>
  426. <pre id='line34' class='code' style='background-color: #FFFFff'>
  427. /* "pullahelpers.pyx":34
  428. * for i1 from -x <code><</code>= i1 <code><</code> 0 by 1:
  429. * if not np.isnan(mapgrid[-i1][y]):
  430. * break # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  431. * i1 = -i1
  432. *
  433. */
  434. goto __pyx_L10_break;
  435. goto __pyx_L11;
  436. }
  437. __pyx_L11:;
  438. }
  439. __pyx_L10_break:;
  440. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line35")'> 35: i1 = -i1</pre>
  441. <pre id='line35' class='code' style='background-color: #FFFFff'>
  442. /* "pullahelpers.pyx":35
  443. * if not np.isnan(mapgrid[-i1][y]):
  444. * break
  445. * i1 = -i1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  446. *
  447. *
  448. */
  449. __pyx_v_i1 = (-__pyx_v_i1);
  450. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line36")'> 36: </pre>
  451. <pre id='line36' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line37")'> 37: </pre>
  452. <pre id='line37' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line38")'> 38: </pre>
  453. <pre id='line38' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line39")'> 39: for i2 from x &lt;= i2 &lt; xmax-1 by 1:</pre>
  454. <pre id='line39' class='code' style='background-color: #FFFFff'>
  455. /* "pullahelpers.pyx":39
  456. *
  457. *
  458. * for i2 from x <code><</code>= i2 <code><</code> xmax-1 by 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  459. * if not np.isnan(mapgrid[i2][y]):
  460. * break
  461. */
  462. __pyx_t_12 = (__pyx_v_xmax - 1);
  463. for (__pyx_v_i2 = __pyx_v_x; __pyx_v_i2 <code><</code> __pyx_t_12; __pyx_v_i2+=1) {
  464. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line40")'> 40: if not np.isnan(mapgrid[i2][y]):</pre>
  465. <pre id='line40' class='code' style='background-color: #FFFF3c'>
  466. /* "pullahelpers.pyx":40
  467. *
  468. * for i2 from x <code><</code>= i2 <code><</code> xmax-1 by 1:
  469. * if not np.isnan(mapgrid[i2][y]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  470. * break
  471. *
  472. */
  473. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  474. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  475. __pyx_t_4 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_6, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  476. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  477. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  478. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_i2, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  479. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  480. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_6, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  481. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  482. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  483. __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  484. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  485. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_t_3);
  486. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_3);
  487. __pyx_t_3 = 0;
  488. __pyx_t_3 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  489. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  490. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  491. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  492. __pyx_t_8 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_3);<span class='error_goto'> if (unlikely(__pyx_t_8 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  493. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  494. __pyx_t_7 = (!__pyx_t_8);
  495. if (__pyx_t_7) {
  496. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line41")'> 41: break</pre>
  497. <pre id='line41' class='code' style='background-color: #FFFFff'>
  498. /* "pullahelpers.pyx":41
  499. * for i2 from x <code><</code>= i2 <code><</code> xmax-1 by 1:
  500. * if not np.isnan(mapgrid[i2][y]):
  501. * break # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  502. *
  503. * for j1 from -y <code><</code>= j1 <code><</code> 0 by 1:
  504. */
  505. goto __pyx_L13_break;
  506. goto __pyx_L14;
  507. }
  508. __pyx_L14:;
  509. }
  510. __pyx_L13_break:;
  511. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line42")'> 42: </pre>
  512. <pre id='line42' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line43")'> 43: for j1 from -y &lt;= j1 &lt; 0 by 1:</pre>
  513. <pre id='line43' class='code' style='background-color: #FFFFff'>
  514. /* "pullahelpers.pyx":43
  515. * break
  516. *
  517. * for j1 from -y <code><</code>= j1 <code><</code> 0 by 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  518. * if not np.isnan(mapgrid[x][-j1]):
  519. * break
  520. */
  521. for (__pyx_v_j1 = (-__pyx_v_y); __pyx_v_j1 <code><</code> 0; __pyx_v_j1+=1) {
  522. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line44")'> 44: if not np.isnan(mapgrid[x][-j1]):</pre>
  523. <pre id='line44' class='code' style='background-color: #FFFF3c'>
  524. /* "pullahelpers.pyx":44
  525. *
  526. * for j1 from -y <code><</code>= j1 <code><</code> 0 by 1:
  527. * if not np.isnan(mapgrid[x][-j1]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  528. * break
  529. * j1 = -j1
  530. */
  531. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  532. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  533. __pyx_t_6 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  534. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  535. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  536. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  537. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  538. __pyx_t_11 = (-__pyx_v_j1);
  539. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_t_11, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  540. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  541. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  542. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  543. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  544. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_4);
  545. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_4);
  546. __pyx_t_4 = 0;
  547. __pyx_t_4 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  548. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  549. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  550. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  551. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  552. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  553. __pyx_t_8 = (!__pyx_t_7);
  554. if (__pyx_t_8) {
  555. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line45")'> 45: break</pre>
  556. <pre id='line45' class='code' style='background-color: #FFFFff'>
  557. /* "pullahelpers.pyx":45
  558. * for j1 from -y <code><</code>= j1 <code><</code> 0 by 1:
  559. * if not np.isnan(mapgrid[x][-j1]):
  560. * break # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  561. * j1 = -j1
  562. *
  563. */
  564. goto __pyx_L16_break;
  565. goto __pyx_L17;
  566. }
  567. __pyx_L17:;
  568. }
  569. __pyx_L16_break:;
  570. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line46")'> 46: j1 = -j1</pre>
  571. <pre id='line46' class='code' style='background-color: #FFFFff'>
  572. /* "pullahelpers.pyx":46
  573. * if not np.isnan(mapgrid[x][-j1]):
  574. * break
  575. * j1 = -j1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  576. *
  577. * for j2 from x <code><</code>= j2 <code><</code> ymax-1 by 1:
  578. */
  579. __pyx_v_j1 = (-__pyx_v_j1);
  580. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line47")'> 47: </pre>
  581. <pre id='line47' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line48")'> 48: for j2 from x &lt;= j2 &lt; ymax-1 by 1:</pre>
  582. <pre id='line48' class='code' style='background-color: #FFFFff'>
  583. /* "pullahelpers.pyx":48
  584. * j1 = -j1
  585. *
  586. * for j2 from x <code><</code>= j2 <code><</code> ymax-1 by 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  587. * if not np.isnan(mapgrid[x][j2]):
  588. * break
  589. */
  590. __pyx_t_12 = (__pyx_v_ymax - 1);
  591. for (__pyx_v_j2 = __pyx_v_x; __pyx_v_j2 <code><</code> __pyx_t_12; __pyx_v_j2+=1) {
  592. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line49")'> 49: if not np.isnan(mapgrid[x][j2]):</pre>
  593. <pre id='line49' class='code' style='background-color: #FFFF3c'>
  594. /* "pullahelpers.pyx":49
  595. *
  596. * for j2 from x <code><</code>= j2 <code><</code> ymax-1 by 1:
  597. * if not np.isnan(mapgrid[x][j2]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  598. * break
  599. *
  600. */
  601. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  602. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  603. __pyx_t_3 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_4, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  604. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  605. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  606. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  607. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  608. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_4, __pyx_v_j2, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  609. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  610. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  611. __pyx_t_4 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  612. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  613. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_4, 0, __pyx_t_6);
  614. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_6);
  615. __pyx_t_6 = 0;
  616. __pyx_t_6 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  617. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  618. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  619. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  620. __pyx_t_8 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_6);<span class='error_goto'> if (unlikely(__pyx_t_8 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  621. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  622. __pyx_t_7 = (!__pyx_t_8);
  623. if (__pyx_t_7) {
  624. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line50")'> 50: break</pre>
  625. <pre id='line50' class='code' style='background-color: #FFFFff'>
  626. /* "pullahelpers.pyx":50
  627. * for j2 from x <code><</code>= j2 <code><</code> ymax-1 by 1:
  628. * if not np.isnan(mapgrid[x][j2]):
  629. * break # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  630. *
  631. * #i1-=1
  632. */
  633. goto __pyx_L19_break;
  634. goto __pyx_L20;
  635. }
  636. __pyx_L20:;
  637. }
  638. __pyx_L19_break:;
  639. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line51")'> 51: </pre>
  640. <pre id='line51' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line52")'> 52: #i1-=1</pre>
  641. <pre id='line52' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line53")'> 53: #i2+=1</pre>
  642. <pre id='line53' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line54")'> 54: #j1-=1</pre>
  643. <pre id='line54' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line55")'> 55: #j2+=1</pre>
  644. <pre id='line55' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line56")'> 56: </pre>
  645. <pre id='line56' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line57")'> 57: val1 = 0</pre>
  646. <pre id='line57' class='code' style='background-color: #FFFFff'>
  647. /* "pullahelpers.pyx":57
  648. * #j2+=1
  649. *
  650. * val1 = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  651. * val2 = 0
  652. * val1f = 0
  653. */
  654. __pyx_v_val1 = 0.0;
  655. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line58")'> 58: val2 = 0</pre>
  656. <pre id='line58' class='code' style='background-color: #FFFFff'>
  657. /* "pullahelpers.pyx":58
  658. *
  659. * val1 = 0
  660. * val2 = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  661. * val1f = 0
  662. * val2f = 0
  663. */
  664. __pyx_v_val2 = 0.0;
  665. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line59")'> 59: val1f = 0</pre>
  666. <pre id='line59' class='code' style='background-color: #FFFFff'>
  667. /* "pullahelpers.pyx":59
  668. * val1 = 0
  669. * val2 = 0
  670. * val1f = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  671. * val2f = 0
  672. *
  673. */
  674. __pyx_v_val1f = 0;
  675. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line60")'> 60: val2f = 0</pre>
  676. <pre id='line60' class='code' style='background-color: #FFFFff'>
  677. /* "pullahelpers.pyx":60
  678. * val2 = 0
  679. * val1f = 0
  680. * val2f = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  681. *
  682. *
  683. */
  684. __pyx_v_val2f = 0;
  685. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line61")'> 61: </pre>
  686. <pre id='line61' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line62")'> 62: </pre>
  687. <pre id='line62' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF22' onclick='toggleDiv("line63")'> 63: if not np.isnan(mapgrid[i1][y]) and not np.isnan(mapgrid[i1][y]):</pre>
  688. <pre id='line63' class='code' style='background-color: #FFFF22'>
  689. /* "pullahelpers.pyx":63
  690. *
  691. *
  692. * if not np.isnan(mapgrid[i1][y]) and not np.isnan(mapgrid[i1][y]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  693. * val1 = ((i2-x)*mapgrid[i1][y]+(x-i1)*mapgrid[i2][y]) / (i2-i1)
  694. * val1f = 1
  695. */
  696. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  697. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  698. __pyx_t_4 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_6, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  699. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  700. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  701. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_i1, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  702. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  703. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_6, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  704. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  705. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  706. __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  707. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  708. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_t_3);
  709. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_3);
  710. __pyx_t_3 = 0;
  711. __pyx_t_3 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  712. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  713. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  714. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  715. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_3);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  716. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  717. __pyx_t_8 = (!__pyx_t_7);
  718. if (__pyx_t_8) {
  719. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  720. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  721. __pyx_t_6 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  722. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  723. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  724. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_i1, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  725. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  726. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  727. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  728. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  729. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  730. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  731. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_4);
  732. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_4);
  733. __pyx_t_4 = 0;
  734. __pyx_t_4 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  735. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  736. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  737. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  738. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  739. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  740. __pyx_t_13 = (!__pyx_t_7);
  741. __pyx_t_7 = __pyx_t_13;
  742. } else {
  743. __pyx_t_7 = __pyx_t_8;
  744. }
  745. if (__pyx_t_7) {
  746. </pre><pre class='line' style='background-color: #FFFF22' onclick='toggleDiv("line64")'> 64: val1 = ((i2-x)*mapgrid[i1][y]+(x-i1)*mapgrid[i2][y]) / (i2-i1)</pre>
  747. <pre id='line64' class='code' style='background-color: #FFFF22'>
  748. /* "pullahelpers.pyx":64
  749. *
  750. * if not np.isnan(mapgrid[i1][y]) and not np.isnan(mapgrid[i1][y]):
  751. * val1 = ((i2-x)*mapgrid[i1][y]+(x-i1)*mapgrid[i2][y]) / (i2-i1) # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  752. * val1f = 1
  753. *
  754. */
  755. __pyx_t_4 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_i2 - __pyx_v_x));<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  756. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  757. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_i1, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  758. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  759. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  760. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  761. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  762. __pyx_t_3 = <span class='py_c_api'>PyNumber_Multiply</span>(__pyx_t_4, __pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  763. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  764. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  765. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  766. __pyx_t_6 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_x - __pyx_v_i1));<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  767. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  768. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_i2, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  769. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  770. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_4, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  771. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  772. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  773. __pyx_t_4 = <span class='py_c_api'>PyNumber_Multiply</span>(__pyx_t_6, __pyx_t_5);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  774. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  775. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  776. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  777. __pyx_t_5 = <span class='py_c_api'>PyNumber_Add</span>(__pyx_t_3, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  778. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  779. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  780. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  781. __pyx_t_4 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_i2 - __pyx_v_i1));<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  782. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  783. __pyx_t_3 = __Pyx_<span class='py_c_api'>PyNumber_Divide</span>(__pyx_t_5, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  784. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  785. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  786. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  787. __pyx_t_14 = __pyx_<span class='py_c_api'>PyFloat_AsDouble</span>(__pyx_t_3);<span class='error_goto'> if (unlikely((__pyx_t_14 == (npy_double)-1) && <span class='py_c_api'>PyErr_Occurred</span>())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  788. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  789. __pyx_v_val1 = __pyx_t_14;
  790. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line65")'> 65: val1f = 1</pre>
  791. <pre id='line65' class='code' style='background-color: #FFFFff'>
  792. /* "pullahelpers.pyx":65
  793. * if not np.isnan(mapgrid[i1][y]) and not np.isnan(mapgrid[i1][y]):
  794. * val1 = ((i2-x)*mapgrid[i1][y]+(x-i1)*mapgrid[i2][y]) / (i2-i1)
  795. * val1f = 1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  796. *
  797. * if not np.isnan(mapgrid[x][j1]) and not np.isnan(mapgrid[x][j2]):
  798. */
  799. __pyx_v_val1f = 1;
  800. goto __pyx_L21;
  801. }
  802. __pyx_L21:;
  803. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line66")'> 66: </pre>
  804. <pre id='line66' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF22' onclick='toggleDiv("line67")'> 67: if not np.isnan(mapgrid[x][j1]) and not np.isnan(mapgrid[x][j2]):</pre>
  805. <pre id='line67' class='code' style='background-color: #FFFF22'>
  806. /* "pullahelpers.pyx":67
  807. * val1f = 1
  808. *
  809. * if not np.isnan(mapgrid[x][j1]) and not np.isnan(mapgrid[x][j2]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  810. * val2 = ((j2-y)*mapgrid[x][j1]+(y-j1)*mapgrid[x][j2]) / (j2-j1)
  811. * val2f = 1
  812. */
  813. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  814. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  815. __pyx_t_4 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_3, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  816. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  817. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  818. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  819. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  820. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_v_j1, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  821. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  822. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  823. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  824. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  825. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_5);
  826. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_5);
  827. __pyx_t_5 = 0;
  828. __pyx_t_5 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  829. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  830. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  831. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  832. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_5);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  833. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  834. __pyx_t_8 = (!__pyx_t_7);
  835. if (__pyx_t_8) {
  836. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  837. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  838. __pyx_t_3 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_5, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  839. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  840. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  841. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  842. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  843. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_5, __pyx_v_j2, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  844. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  845. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  846. __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  847. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  848. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_t_4);
  849. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_4);
  850. __pyx_t_4 = 0;
  851. __pyx_t_4 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  852. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  853. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  854. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  855. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  856. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  857. __pyx_t_13 = (!__pyx_t_7);
  858. __pyx_t_7 = __pyx_t_13;
  859. } else {
  860. __pyx_t_7 = __pyx_t_8;
  861. }
  862. if (__pyx_t_7) {
  863. </pre><pre class='line' style='background-color: #FFFF22' onclick='toggleDiv("line68")'> 68: val2 = ((j2-y)*mapgrid[x][j1]+(y-j1)*mapgrid[x][j2]) / (j2-j1)</pre>
  864. <pre id='line68' class='code' style='background-color: #FFFF22'>
  865. /* "pullahelpers.pyx":68
  866. *
  867. * if not np.isnan(mapgrid[x][j1]) and not np.isnan(mapgrid[x][j2]):
  868. * val2 = ((j2-y)*mapgrid[x][j1]+(y-j1)*mapgrid[x][j2]) / (j2-j1) # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  869. * val2f = 1
  870. *
  871. */
  872. __pyx_t_4 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_j2 - __pyx_v_y));<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  873. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  874. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  875. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  876. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_5, __pyx_v_j1, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  877. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  878. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  879. __pyx_t_5 = <span class='py_c_api'>PyNumber_Multiply</span>(__pyx_t_4, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  880. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  881. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  882. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  883. __pyx_t_3 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_y - __pyx_v_j1));<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  884. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  885. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  886. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  887. __pyx_t_6 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_4, __pyx_v_j2, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  888. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  889. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  890. __pyx_t_4 = <span class='py_c_api'>PyNumber_Multiply</span>(__pyx_t_3, __pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  891. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  892. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  893. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  894. __pyx_t_6 = <span class='py_c_api'>PyNumber_Add</span>(__pyx_t_5, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  895. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  896. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  897. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  898. __pyx_t_4 = <span class='py_c_api'>PyInt_FromLong</span>((__pyx_v_j2 - __pyx_v_j1));<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  899. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  900. __pyx_t_5 = __Pyx_<span class='py_c_api'>PyNumber_Divide</span>(__pyx_t_6, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  901. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  902. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  903. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  904. __pyx_t_14 = __pyx_<span class='py_c_api'>PyFloat_AsDouble</span>(__pyx_t_5);<span class='error_goto'> if (unlikely((__pyx_t_14 == (npy_double)-1) && <span class='py_c_api'>PyErr_Occurred</span>())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  905. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  906. __pyx_v_val2 = __pyx_t_14;
  907. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line69")'> 69: val2f = 1</pre>
  908. <pre id='line69' class='code' style='background-color: #FFFFff'>
  909. /* "pullahelpers.pyx":69
  910. * if not np.isnan(mapgrid[x][j1]) and not np.isnan(mapgrid[x][j2]):
  911. * val2 = ((j2-y)*mapgrid[x][j1]+(y-j1)*mapgrid[x][j2]) / (j2-j1)
  912. * val2f = 1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  913. *
  914. *
  915. */
  916. __pyx_v_val2f = 1;
  917. goto __pyx_L22;
  918. }
  919. __pyx_L22:;
  920. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line70")'> 70: </pre>
  921. <pre id='line70' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line71")'> 71: </pre>
  922. <pre id='line71' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line72")'> 72: if val1f == 1:</pre>
  923. <pre id='line72' class='code' style='background-color: #FFFFff'>
  924. /* "pullahelpers.pyx":72
  925. *
  926. *
  927. * if val1f == 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  928. * mapgrid[x][y] = val1
  929. *
  930. */
  931. __pyx_t_7 = (__pyx_v_val1f == 1);
  932. if (__pyx_t_7) {
  933. </pre><pre class='line' style='background-color: #FFFF79' onclick='toggleDiv("line73")'> 73: mapgrid[x][y] = val1</pre>
  934. <pre id='line73' class='code' style='background-color: #FFFF79'>
  935. /* "pullahelpers.pyx":73
  936. *
  937. * if val1f == 1:
  938. * mapgrid[x][y] = val1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  939. *
  940. * if val2f == 1:
  941. */
  942. __pyx_t_5 = <span class='py_c_api'>PyFloat_FromDouble</span>(__pyx_v_val1);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  943. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  944. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  945. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  946. if (<span class='pyx_c_api'>__Pyx_SetItemInt</span>(__pyx_t_4, __pyx_v_y, __pyx_t_5, sizeof(int), PyInt_FromLong) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  947. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  948. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  949. goto __pyx_L23;
  950. }
  951. __pyx_L23:;
  952. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line74")'> 74: </pre>
  953. <pre id='line74' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line75")'> 75: if val2f == 1:</pre>
  954. <pre id='line75' class='code' style='background-color: #FFFFff'>
  955. /* "pullahelpers.pyx":75
  956. * mapgrid[x][y] = val1
  957. *
  958. * if val2f == 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  959. * if val1f == 1:
  960. * mapgrid[x][y] = (val1+val2) / 2.0
  961. */
  962. __pyx_t_7 = (__pyx_v_val2f == 1);
  963. if (__pyx_t_7) {
  964. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line76")'> 76: if val1f == 1:</pre>
  965. <pre id='line76' class='code' style='background-color: #FFFFff'>
  966. /* "pullahelpers.pyx":76
  967. *
  968. * if val2f == 1:
  969. * if val1f == 1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  970. * mapgrid[x][y] = (val1+val2) / 2.0
  971. * else:
  972. */
  973. __pyx_t_7 = (__pyx_v_val1f == 1);
  974. if (__pyx_t_7) {
  975. </pre><pre class='line' style='background-color: #FFFF79' onclick='toggleDiv("line77")'> 77: mapgrid[x][y] = (val1+val2) / 2.0</pre>
  976. <pre id='line77' class='code' style='background-color: #FFFF79'>
  977. /* "pullahelpers.pyx":77
  978. * if val2f == 1:
  979. * if val1f == 1:
  980. * mapgrid[x][y] = (val1+val2) / 2.0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  981. * else:
  982. * mapgrid[x][y] = val2
  983. */
  984. __pyx_t_5 = <span class='py_c_api'>PyFloat_FromDouble</span>(((__pyx_v_val1 + __pyx_v_val2) / 2.0));<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  985. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  986. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  987. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  988. if (<span class='pyx_c_api'>__Pyx_SetItemInt</span>(__pyx_t_4, __pyx_v_y, __pyx_t_5, sizeof(int), PyInt_FromLong) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  989. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  990. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  991. goto __pyx_L25;
  992. }
  993. /*else*/ {
  994. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line78")'> 78: else:</pre>
  995. <pre id='line78' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF79' onclick='toggleDiv("line79")'> 79: mapgrid[x][y] = val2</pre>
  996. <pre id='line79' class='code' style='background-color: #FFFF79'>
  997. /* "pullahelpers.pyx":79
  998. * mapgrid[x][y] = (val1+val2) / 2.0
  999. * else:
  1000. * mapgrid[x][y] = val2 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1001. * print x
  1002. *
  1003. */
  1004. __pyx_t_5 = <span class='py_c_api'>PyFloat_FromDouble</span>(__pyx_v_val2);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1005. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1006. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1007. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1008. if (<span class='pyx_c_api'>__Pyx_SetItemInt</span>(__pyx_t_4, __pyx_v_y, __pyx_t_5, sizeof(int), PyInt_FromLong) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1009. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1010. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1011. }
  1012. __pyx_L25:;
  1013. goto __pyx_L24;
  1014. }
  1015. __pyx_L24:;
  1016. __pyx_L6_continue:;
  1017. }
  1018. </pre><pre class='line' style='background-color: #FFFF8d' onclick='toggleDiv("line80")'> 80: print x</pre>
  1019. <pre id='line80' class='code' style='background-color: #FFFF8d'>
  1020. /* "pullahelpers.pyx":80
  1021. * else:
  1022. * mapgrid[x][y] = val2
  1023. * print x # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1024. *
  1025. *
  1026. */
  1027. __pyx_t_5 = <span class='py_c_api'>PyInt_FromLong</span>(__pyx_v_x);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1028. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1029. if (<span class='pyx_c_api'>__Pyx_PrintOne</span>(0, __pyx_t_5) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1030. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1031. __pyx_L3_continue:;
  1032. }
  1033. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line81")'> 81: </pre>
  1034. <pre id='line81' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line82")'> 82: </pre>
  1035. <pre id='line82' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line83")'> 83: cdef DTYPE_t</pre>
  1036. <pre id='line83' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line84")'> 84: cdef int i,j,c</pre>
  1037. <pre id='line84' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFd4' onclick='toggleDiv("line85")'> 85: print 'step2'</pre>
  1038. <pre id='line85' class='code' style='background-color: #FFFFd4'>
  1039. /* "pullahelpers.pyx":85
  1040. * cdef DTYPE_t
  1041. * cdef int i,j,c
  1042. * print 'step2' # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1043. * for x in xrange(1,xmax-1):
  1044. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  1045. */
  1046. if (<span class='pyx_c_api'>__Pyx_PrintOne</span>(0, ((PyObject *)__pyx_n_s__step2)) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1047. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line86")'> 86: for x in xrange(1,xmax-1):</pre>
  1048. <pre id='line86' class='code' style='background-color: #FFFFff'>
  1049. /* "pullahelpers.pyx":86
  1050. * cdef int i,j,c
  1051. * print 'step2'
  1052. * for x in xrange(1,xmax-1): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1053. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  1054. * continue
  1055. */
  1056. __pyx_t_12 = (__pyx_v_xmax - 1);
  1057. for (__pyx_t_1 = 1; __pyx_t_1 <code><</code> __pyx_t_12; __pyx_t_1+=1) {
  1058. __pyx_v_x = __pyx_t_1;
  1059. </pre><pre class='line' style='background-color: #FFFF2a' onclick='toggleDiv("line87")'> 87: if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -&gt; skipataan koko rivi</pre>
  1060. <pre id='line87' class='code' style='background-color: #FFFF2a'>
  1061. /* "pullahelpers.pyx":87
  1062. * print 'step2'
  1063. * for x in xrange(1,xmax-1):
  1064. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1065. * continue
  1066. * for y in xrange(1,ymax-1):
  1067. */
  1068. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1069. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1070. __pyx_t_4 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_5, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1071. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1072. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1073. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1074. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1075. __pyx_t_6 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_5, __pyx_n_s__sum);<span class='error_goto'> if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1076. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_6);
  1077. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1078. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1079. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1080. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1081. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1082. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_5);
  1083. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_5);
  1084. __pyx_t_5 = 0;
  1085. __pyx_t_5 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1086. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1087. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
  1088. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  1089. __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1090. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1091. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_5);
  1092. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_5);
  1093. __pyx_t_5 = 0;
  1094. __pyx_t_5 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1095. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1096. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1097. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  1098. __pyx_t_7 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_5);<span class='error_goto'> if (unlikely(__pyx_t_7 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1099. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1100. __pyx_t_8 = (!__pyx_t_7);
  1101. if (__pyx_t_8) {
  1102. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line88")'> 88: continue</pre>
  1103. <pre id='line88' class='code' style='background-color: #FFFFff'>
  1104. /* "pullahelpers.pyx":88
  1105. * for x in xrange(1,xmax-1):
  1106. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  1107. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1108. * for y in xrange(1,ymax-1):
  1109. * if not np.isnan(mapgrid[x][y]):
  1110. */
  1111. goto __pyx_L26_continue;
  1112. goto __pyx_L28;
  1113. }
  1114. __pyx_L28:;
  1115. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line89")'> 89: for y in xrange(1,ymax-1):</pre>
  1116. <pre id='line89' class='code' style='background-color: #FFFFff'>
  1117. /* "pullahelpers.pyx":89
  1118. * if not np.isnan(np.sum(mapgrid[x])): #Ei tyhjia rivilla -> skipataan koko rivi
  1119. * continue
  1120. * for y in xrange(1,ymax-1): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1121. * if not np.isnan(mapgrid[x][y]):
  1122. * continue
  1123. */
  1124. __pyx_t_15 = (__pyx_v_ymax - 1);
  1125. for (__pyx_t_2 = 1; __pyx_t_2 <code><</code> __pyx_t_15; __pyx_t_2+=1) {
  1126. __pyx_v_y = __pyx_t_2;
  1127. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line90")'> 90: if not np.isnan(mapgrid[x][y]):</pre>
  1128. <pre id='line90' class='code' style='background-color: #FFFF3c'>
  1129. /* "pullahelpers.pyx":90
  1130. * continue
  1131. * for y in xrange(1,ymax-1):
  1132. * if not np.isnan(mapgrid[x][y]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1133. * continue
  1134. * val = 0
  1135. */
  1136. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1137. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1138. __pyx_t_3 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_5, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1139. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1140. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1141. __pyx_t_5 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1142. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1143. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_5, __pyx_v_y, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1144. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1145. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1146. __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1147. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1148. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_t_4);
  1149. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_4);
  1150. __pyx_t_4 = 0;
  1151. __pyx_t_4 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1152. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1153. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  1154. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  1155. __pyx_t_8 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(__pyx_t_8 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1156. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1157. __pyx_t_7 = (!__pyx_t_8);
  1158. if (__pyx_t_7) {
  1159. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line91")'> 91: continue</pre>
  1160. <pre id='line91' class='code' style='background-color: #FFFFff'>
  1161. /* "pullahelpers.pyx":91
  1162. * for y in xrange(1,ymax-1):
  1163. * if not np.isnan(mapgrid[x][y]):
  1164. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1165. * val = 0
  1166. * c = 0
  1167. */
  1168. goto __pyx_L29_continue;
  1169. goto __pyx_L31;
  1170. }
  1171. __pyx_L31:;
  1172. </pre><pre class='line' style='background-color: #FFFFd4' onclick='toggleDiv("line92")'> 92: val = 0</pre>
  1173. <pre id='line92' class='code' style='background-color: #FFFFd4'>
  1174. /* "pullahelpers.pyx":92
  1175. * if not np.isnan(mapgrid[x][y]):
  1176. * continue
  1177. * val = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1178. * c = 0
  1179. * for i from -1 <code><</code>= i <code><</code> 2:
  1180. */
  1181. <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_int_0);
  1182. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_val);
  1183. __pyx_v_val = __pyx_int_0;
  1184. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line93")'> 93: c = 0</pre>
  1185. <pre id='line93' class='code' style='background-color: #FFFFff'>
  1186. /* "pullahelpers.pyx":93
  1187. * continue
  1188. * val = 0
  1189. * c = 0 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1190. * for i from -1 <code><</code>= i <code><</code> 2:
  1191. * for j from -1 <code><</code>= j <code><</code> 2:
  1192. */
  1193. __pyx_v_c = 0;
  1194. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line94")'> 94: for i from -1 &lt;= i &lt; 2:</pre>
  1195. <pre id='line94' class='code' style='background-color: #FFFFff'>
  1196. /* "pullahelpers.pyx":94
  1197. * val = 0
  1198. * c = 0
  1199. * for i from -1 <code><</code>= i <code><</code> 2: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1200. * for j from -1 <code><</code>= j <code><</code> 2:
  1201. * if x+i <code><</code> 0 or y+j <code><</code> 0:
  1202. */
  1203. for (__pyx_v_i = -1; __pyx_v_i <code><</code> 2; __pyx_v_i++) {
  1204. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line95")'> 95: for j from -1 &lt;= j &lt; 2:</pre>
  1205. <pre id='line95' class='code' style='background-color: #FFFFff'>
  1206. /* "pullahelpers.pyx":95
  1207. * c = 0
  1208. * for i from -1 <code><</code>= i <code><</code> 2:
  1209. * for j from -1 <code><</code>= j <code><</code> 2: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1210. * if x+i <code><</code> 0 or y+j <code><</code> 0:
  1211. * continue
  1212. */
  1213. for (__pyx_v_j = -1; __pyx_v_j <code><</code> 2; __pyx_v_j++) {
  1214. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line96")'> 96: if x+i &lt; 0 or y+j &lt; 0:</pre>
  1215. <pre id='line96' class='code' style='background-color: #FFFFff'>
  1216. /* "pullahelpers.pyx":96
  1217. * for i from -1 <code><</code>= i <code><</code> 2:
  1218. * for j from -1 <code><</code>= j <code><</code> 2:
  1219. * if x+i <code><</code> 0 or y+j <code><</code> 0: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1220. * continue
  1221. *
  1222. */
  1223. __pyx_t_7 = ((__pyx_v_x + __pyx_v_i) <code><</code> 0);
  1224. if (!__pyx_t_7) {
  1225. __pyx_t_8 = ((__pyx_v_y + __pyx_v_j) <code><</code> 0);
  1226. __pyx_t_13 = __pyx_t_8;
  1227. } else {
  1228. __pyx_t_13 = __pyx_t_7;
  1229. }
  1230. if (__pyx_t_13) {
  1231. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line97")'> 97: continue</pre>
  1232. <pre id='line97' class='code' style='background-color: #FFFFff'>
  1233. /* "pullahelpers.pyx":97
  1234. * for j from -1 <code><</code>= j <code><</code> 2:
  1235. * if x+i <code><</code> 0 or y+j <code><</code> 0:
  1236. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1237. *
  1238. * if x+i > xmax-1 or y+j > ymax-1:
  1239. */
  1240. goto __pyx_L34_continue;
  1241. goto __pyx_L36;
  1242. }
  1243. __pyx_L36:;
  1244. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line98")'> 98: </pre>
  1245. <pre id='line98' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line99")'> 99: if x+i &gt; xmax-1 or y+j &gt; ymax-1:</pre>
  1246. <pre id='line99' class='code' style='background-color: #FFFFff'>
  1247. /* "pullahelpers.pyx":99
  1248. * continue
  1249. *
  1250. * if x+i > xmax-1 or y+j > ymax-1: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1251. * continue
  1252. * if not np.isnan(mapgrid[x+i][y+j]):
  1253. */
  1254. __pyx_t_13 = ((__pyx_v_x + __pyx_v_i) > (__pyx_v_xmax - 1));
  1255. if (!__pyx_t_13) {
  1256. __pyx_t_7 = ((__pyx_v_y + __pyx_v_j) > (__pyx_v_ymax - 1));
  1257. __pyx_t_8 = __pyx_t_7;
  1258. } else {
  1259. __pyx_t_8 = __pyx_t_13;
  1260. }
  1261. if (__pyx_t_8) {
  1262. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line100")'> 100: continue</pre>
  1263. <pre id='line100' class='code' style='background-color: #FFFFff'>
  1264. /* "pullahelpers.pyx":100
  1265. *
  1266. * if x+i > xmax-1 or y+j > ymax-1:
  1267. * continue # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1268. * if not np.isnan(mapgrid[x+i][y+j]):
  1269. * c+=1
  1270. */
  1271. goto __pyx_L34_continue;
  1272. goto __pyx_L37;
  1273. }
  1274. __pyx_L37:;
  1275. </pre><pre class='line' style='background-color: #FFFF3c' onclick='toggleDiv("line101")'> 101: if not np.isnan(mapgrid[x+i][y+j]):</pre>
  1276. <pre id='line101' class='code' style='background-color: #FFFF3c'>
  1277. /* "pullahelpers.pyx":101
  1278. * if x+i > xmax-1 or y+j > ymax-1:
  1279. * continue
  1280. * if not np.isnan(mapgrid[x+i][y+j]): # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1281. * c+=1
  1282. * val+=mapgrid[x+i][y+j]
  1283. */
  1284. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetName</span>(__pyx_m, __pyx_n_s__np);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1285. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1286. __pyx_t_5 = <span class='py_c_api'>PyObject_GetAttr</span>(__pyx_t_4, __pyx_n_s__isnan);<span class='error_goto'> if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1287. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_5);
  1288. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1289. __pyx_t_9 = (__pyx_v_x + __pyx_v_i);
  1290. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_t_9, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1291. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1292. __pyx_t_9 = (__pyx_v_y + __pyx_v_j);
  1293. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_4, __pyx_t_9, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1294. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1295. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1296. __pyx_t_4 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1297. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1298. <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_4, 0, __pyx_t_3);
  1299. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GIVEREF</span></span>(__pyx_t_3);
  1300. __pyx_t_3 = 0;
  1301. __pyx_t_3 = <span class='py_c_api'>PyObject_Call</span>(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1302. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1303. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  1304. <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  1305. __pyx_t_8 = __Pyx_<span class='py_c_api'>PyObject_IsTrue</span>(__pyx_t_3);<span class='error_goto'> if (unlikely(__pyx_t_8 <code><</code> 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1306. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  1307. __pyx_t_13 = (!__pyx_t_8);
  1308. if (__pyx_t_13) {
  1309. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line102")'> 102: c+=1</pre>
  1310. <pre id='line102' class='code' style='background-color: #FFFFff'>
  1311. /* "pullahelpers.pyx":102
  1312. * continue
  1313. * if not np.isnan(mapgrid[x+i][y+j]):
  1314. * c+=1 # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1315. * val+=mapgrid[x+i][y+j]
  1316. * if c > 0:
  1317. */
  1318. __pyx_v_c = (__pyx_v_c + 1);
  1319. </pre><pre class='line' style='background-color: #FFFF73' onclick='toggleDiv("line103")'> 103: val+=mapgrid[x+i][y+j]</pre>
  1320. <pre id='line103' class='code' style='background-color: #FFFF73'>
  1321. /* "pullahelpers.pyx":103
  1322. * if not np.isnan(mapgrid[x+i][y+j]):
  1323. * c+=1
  1324. * val+=mapgrid[x+i][y+j] # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1325. * if c > 0:
  1326. * mapgrid[x][y] = val / c
  1327. */
  1328. __pyx_t_9 = (__pyx_v_x + __pyx_v_i);
  1329. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_t_9, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1330. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1331. __pyx_t_9 = (__pyx_v_y + __pyx_v_j);
  1332. __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(__pyx_t_3, __pyx_t_9, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1333. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1334. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  1335. __pyx_t_3 = <span class='py_c_api'>PyNumber_InPlaceAdd</span>(__pyx_v_val, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1336. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1337. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1338. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_val);
  1339. __pyx_v_val = __pyx_t_3;
  1340. __pyx_t_3 = 0;
  1341. goto __pyx_L38;
  1342. }
  1343. __pyx_L38:;
  1344. __pyx_L34_continue:;
  1345. }
  1346. }
  1347. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line104")'> 104: if c &gt; 0:</pre>
  1348. <pre id='line104' class='code' style='background-color: #FFFFff'>
  1349. /* "pullahelpers.pyx":104
  1350. * c+=1
  1351. * val+=mapgrid[x+i][y+j]
  1352. * if c > 0: # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1353. * mapgrid[x][y] = val / c
  1354. *
  1355. */
  1356. __pyx_t_13 = (__pyx_v_c > 0);
  1357. if (__pyx_t_13) {
  1358. </pre><pre class='line' style='background-color: #FFFF5e' onclick='toggleDiv("line105")'> 105: mapgrid[x][y] = val / c</pre>
  1359. <pre id='line105' class='code' style='background-color: #FFFF5e'>
  1360. /* "pullahelpers.pyx":105
  1361. * val+=mapgrid[x+i][y+j]
  1362. * if c > 0:
  1363. * mapgrid[x][y] = val / c # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1364. *
  1365. *
  1366. */
  1367. __pyx_t_3 = <span class='py_c_api'>PyInt_FromLong</span>(__pyx_v_c);<span class='error_goto'> if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1368. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1369. __pyx_t_4 = __Pyx_<span class='py_c_api'>PyNumber_Divide</span>(__pyx_v_val, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1370. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1371. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  1372. __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetItemInt</span>(((PyObject *)__pyx_v_mapgrid), __pyx_v_x, sizeof(int), PyInt_FromLong);<span class='error_goto'> if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1373. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_3);
  1374. if (<span class='pyx_c_api'>__Pyx_SetItemInt</span>(__pyx_t_3, __pyx_v_y, __pyx_t_4, sizeof(int), PyInt_FromLong) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1375. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  1376. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1377. goto __pyx_L39;
  1378. }
  1379. __pyx_L39:;
  1380. __pyx_L29_continue:;
  1381. }
  1382. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line106")'> 106: </pre>
  1383. <pre id='line106' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line107")'> 107: </pre>
  1384. <pre id='line107' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF8d' onclick='toggleDiv("line108")'> 108: print x</pre>
  1385. <pre id='line108' class='code' style='background-color: #FFFF8d'>
  1386. /* "pullahelpers.pyx":108
  1387. *
  1388. *
  1389. * print x # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1390. *
  1391. * return mapgrid
  1392. */
  1393. __pyx_t_4 = <span class='py_c_api'>PyInt_FromLong</span>(__pyx_v_x);<span class='error_goto'> if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1394. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_GOTREF</span></span>(__pyx_t_4);
  1395. if (<span class='pyx_c_api'>__Pyx_PrintOne</span>(0, __pyx_t_4) <code><</code> 0)<span class='error_goto'> {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}</span>
  1396. <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  1397. __pyx_L26_continue:;
  1398. }
  1399. </pre><pre class='line' style='background-color: #FFFFff' onclick='toggleDiv("line109")'> 109: </pre>
  1400. <pre id='line109' class='code' style='background-color: #FFFFff'></pre><pre class='line' style='background-color: #FFFF55' onclick='toggleDiv("line110")'> 110: return mapgrid</pre>
  1401. <pre id='line110' class='code' style='background-color: #FFFF55'>
  1402. /* "pullahelpers.pyx":110
  1403. * print x
  1404. *
  1405. * return mapgrid # <code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code><code><</code>
  1406. */
  1407. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  1408. <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_mapgrid));
  1409. __pyx_r = ((PyObject *)__pyx_v_mapgrid);
  1410. goto __pyx_L0;
  1411. __pyx_r = Py_None; <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
  1412. goto __pyx_L0;
  1413. __pyx_L1_error:;
  1414. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  1415. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
  1416. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  1417. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
  1418. { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
  1419. <span class='pyx_c_api'>__Pyx_ErrFetch</span>(&__pyx_type, &__pyx_value, &__pyx_tb);
  1420. <span class='pyx_c_api'>__Pyx_SafeReleaseBuffer</span>(&__pyx_pybuffernd_mapgrid.rcbuffer->pybuffer);
  1421. <span class='pyx_c_api'>__Pyx_ErrRestore</span>(__pyx_type, __pyx_value, __pyx_tb);}
  1422. <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pullahelpers.interpolate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  1423. __pyx_r = NULL;
  1424. goto __pyx_L2;
  1425. __pyx_L0:;
  1426. <span class='pyx_c_api'>__Pyx_SafeReleaseBuffer</span>(&__pyx_pybuffernd_mapgrid.rcbuffer->pybuffer);
  1427. __pyx_L2:;
  1428. <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_val);
  1429. <span class='pyx_macro_api'><span class='refnanny'>__Pyx_XGIVEREF</span></span>(__pyx_r);
  1430. <span class='pyx_c_api'><span class='refnanny'>__Pyx_RefNannyFinishContext</span></span>();
  1431. return __pyx_r;
  1432. }
  1433. /* Python wrapper */
  1434. static int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
  1435. static int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  1436. int __pyx_r;
  1437. <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  1438. <span class='pyx_c_api'><span class='refnanny'>__Pyx_RefNannySetupContext</span></span>("__getbuffer__ (wrapper)", 0);
  1439. __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
  1440. <span class='pyx_c_api'><span class='refnanny'>__Pyx_RefNannyFinishContext</span></span>();
  1441. return __pyx_r;
  1442. }
  1443. </pre></body></html>