mapdata 3.0.0__tar.gz → 3.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. {mapdata-3.0.0/mapdata.egg-info → mapdata-3.1.0}/PKG-INFO +1 -1
  2. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/mapdata.py +87 -25
  3. {mapdata-3.0.0 → mapdata-3.1.0/mapdata.egg-info}/PKG-INFO +1 -1
  4. {mapdata-3.0.0 → mapdata-3.1.0}/setup.py +1 -1
  5. {mapdata-3.0.0 → mapdata-3.1.0}/LICENSE.txt +0 -0
  6. {mapdata-3.0.0 → mapdata-3.1.0}/MANIFEST.in +0 -0
  7. {mapdata-3.0.0 → mapdata-3.1.0}/README.md +0 -0
  8. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/configfile/mapdata.conf +0 -0
  9. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/0.xbm +0 -0
  10. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/1.xbm +0 -0
  11. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/2.xbm +0 -0
  12. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/3.xbm +0 -0
  13. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/4.xbm +0 -0
  14. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/5.xbm +0 -0
  15. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/6.xbm +0 -0
  16. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/7.xbm +0 -0
  17. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/8.xbm +0 -0
  18. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/9.xbm +0 -0
  19. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/A.xbm +0 -0
  20. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/B.xbm +0 -0
  21. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/C.xbm +0 -0
  22. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/D.xbm +0 -0
  23. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/E.xbm +0 -0
  24. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/F.xbm +0 -0
  25. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/G.xbm +0 -0
  26. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/H.xbm +0 -0
  27. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/I.xbm +0 -0
  28. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/J.xbm +0 -0
  29. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/K.xbm +0 -0
  30. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/L.xbm +0 -0
  31. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/M.xbm +0 -0
  32. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/N.xbm +0 -0
  33. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/O.xbm +0 -0
  34. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/P.xbm +0 -0
  35. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/Q.xbm +0 -0
  36. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/R.xbm +0 -0
  37. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/S.xbm +0 -0
  38. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/T.xbm +0 -0
  39. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/U.xbm +0 -0
  40. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/V.xbm +0 -0
  41. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/W.xbm +0 -0
  42. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/X.xbm +0 -0
  43. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/Y.xbm +0 -0
  44. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/Z.xbm +0 -0
  45. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/airplane.xbm +0 -0
  46. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/anchor.xbm +0 -0
  47. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/ball.xbm +0 -0
  48. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/ball_small.xbm +0 -0
  49. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/bar.xbm +0 -0
  50. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/bars.xbm +0 -0
  51. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/binoculars.xbm +0 -0
  52. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/bird.xbm +0 -0
  53. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/block.xbm +0 -0
  54. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/block_small.xbm +0 -0
  55. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/bookmark.xbm +0 -0
  56. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/box_stack.xbm +0 -0
  57. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/camera.xbm +0 -0
  58. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/cancel.xbm +0 -0
  59. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/car.xbm +0 -0
  60. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/car2.xbm +0 -0
  61. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/center8.xbm +0 -0
  62. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/check.xbm +0 -0
  63. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/check_circle.xbm +0 -0
  64. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/checkbox.xbm +0 -0
  65. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/checkerboard.xbm +0 -0
  66. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/chevrons.xbm +0 -0
  67. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle.xbm +0 -0
  68. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_bar.xbm +0 -0
  69. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_plus.xbm +0 -0
  70. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_stipple.xbm +0 -0
  71. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_triangle.xbm +0 -0
  72. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_wedge.xbm +0 -0
  73. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/circle_x.xbm +0 -0
  74. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/clock.xbm +0 -0
  75. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/columns.xbm +0 -0
  76. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/contract.xbm +0 -0
  77. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/cross.xbm +0 -0
  78. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/darkeye.xbm +0 -0
  79. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/decrease.xbm +0 -0
  80. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/deposition.xbm +0 -0
  81. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/diag_ll.xbm +0 -0
  82. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/diag_lr.xbm +0 -0
  83. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/diag_ul.xbm +0 -0
  84. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/diag_ur.xbm +0 -0
  85. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/dialog.xbm +0 -0
  86. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/diamond.xbm +0 -0
  87. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/donkey.xbm +0 -0
  88. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/dot.xbm +0 -0
  89. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/down.xbm +0 -0
  90. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/drop.xbm +0 -0
  91. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/elephant.xbm +0 -0
  92. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/expand.xbm +0 -0
  93. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/eye.xbm +0 -0
  94. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/fire.xbm +0 -0
  95. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/fish.xbm +0 -0
  96. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/flag.xbm +0 -0
  97. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/flag2.xbm +0 -0
  98. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/four_arrows.xbm +0 -0
  99. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/graph.xbm +0 -0
  100. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/hand.xbm +0 -0
  101. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/hash.xbm +0 -0
  102. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/heart.xbm +0 -0
  103. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/hidden.xbm +0 -0
  104. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/hourglass.xbm +0 -0
  105. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/house.xbm +0 -0
  106. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/increase.xbm +0 -0
  107. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/info.xbm +0 -0
  108. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/leaf.xbm +0 -0
  109. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/left.xbm +0 -0
  110. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/lightbulb.xbm +0 -0
  111. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/lightning.xbm +0 -0
  112. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/lightning2.xbm +0 -0
  113. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/location_ptr.xbm +0 -0
  114. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/mine.xbm +0 -0
  115. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/nested_boxes.xbm +0 -0
  116. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pennant.xbm +0 -0
  117. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pennant2.xbm +0 -0
  118. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/people.xbm +0 -0
  119. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/person.xbm +0 -0
  120. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/person2.xbm +0 -0
  121. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/person3.xbm +0 -0
  122. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/phone.xbm +0 -0
  123. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/photo.xbm +0 -0
  124. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/picnic.xbm +0 -0
  125. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/plus.xbm +0 -0
  126. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/point_down.xbm +0 -0
  127. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/point_left.xbm +0 -0
  128. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/point_right.xbm +0 -0
  129. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/point_up.xbm +0 -0
  130. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pointer_ne.xbm +0 -0
  131. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pointer_nw.xbm +0 -0
  132. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pointer_se.xbm +0 -0
  133. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/pointer_sw.xbm +0 -0
  134. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/puzzle.xbm +0 -0
  135. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q1.xbm +0 -0
  136. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q1_notch.xbm +0 -0
  137. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q2.xbm +0 -0
  138. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q2_notch.xbm +0 -0
  139. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q3.xbm +0 -0
  140. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q3_notch.xbm +0 -0
  141. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q4.xbm +0 -0
  142. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/q4_notch.xbm +0 -0
  143. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/qmark_circle.xbm +0 -0
  144. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/qmark_circle2.xbm +0 -0
  145. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/raincloud.xbm +0 -0
  146. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/right.xbm +0 -0
  147. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/rocket.xbm +0 -0
  148. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/rocket2.xbm +0 -0
  149. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/rose.xbm +0 -0
  150. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/rows.xbm +0 -0
  151. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/scales.xbm +0 -0
  152. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/search.xbm +0 -0
  153. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/search2.xbm +0 -0
  154. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/skull.xbm +0 -0
  155. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/square.xbm +0 -0
  156. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/star.xbm +0 -0
  157. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/stipple.xbm +0 -0
  158. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/stop.xbm +0 -0
  159. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/surprise_circle.xbm +0 -0
  160. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/swamp.xbm +0 -0
  161. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/target.xbm +0 -0
  162. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/target2.xbm +0 -0
  163. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/ten.xbm +0 -0
  164. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/trash.xbm +0 -0
  165. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/tree.xbm +0 -0
  166. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/tree2.xbm +0 -0
  167. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/tree3.xbm +0 -0
  168. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/triangle.xbm +0 -0
  169. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/triangle_open.xbm +0 -0
  170. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/triangle_sm.xbm +0 -0
  171. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/up.xbm +0 -0
  172. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/vapor.xbm +0 -0
  173. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/warning.xbm +0 -0
  174. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wave.xbm +0 -0
  175. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wave2.xbm +0 -0
  176. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wave3.xbm +0 -0
  177. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/weather.xbm +0 -0
  178. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wedge.xbm +0 -0
  179. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wedge_sm.xbm +0 -0
  180. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wedges_3.xbm +0 -0
  181. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/well.xbm +0 -0
  182. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/whale.xbm +0 -0
  183. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/whale2.xbm +0 -0
  184. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/wheelchair.xbm +0 -0
  185. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/zigzags.xbm +0 -0
  186. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/16x16/zigzags2.xbm +0 -0
  187. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/ball20.xbm +0 -0
  188. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/block20.xbm +0 -0
  189. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/circle20.xbm +0 -0
  190. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/q1_20.xbm +0 -0
  191. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/q2_20.xbm +0 -0
  192. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/q3_20.xbm +0 -0
  193. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/q4_20.xbm +0 -0
  194. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/20x20/square20.xbm +0 -0
  195. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/24x24/ball24.xbm +0 -0
  196. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/24x24/block24.xbm +0 -0
  197. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/24x24/circle24.xbm +0 -0
  198. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/24x24/square24.xbm +0 -0
  199. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/28x28/ball28.xbm +0 -0
  200. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/28x28/block28.xbm +0 -0
  201. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/28x28/circle28.xbm +0 -0
  202. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata/symbols/28x28/square28.xbm +0 -0
  203. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata.egg-info/SOURCES.txt +0 -0
  204. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata.egg-info/dependency_links.txt +0 -0
  205. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata.egg-info/requires.txt +0 -0
  206. {mapdata-3.0.0 → mapdata-3.1.0}/mapdata.egg-info/top_level.txt +0 -0
  207. {mapdata-3.0.0 → mapdata-3.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mapdata
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database
5
5
  Home-page: https://osdn.net/project/mapdata/
6
6
  Author: Dreas Nielsen
@@ -24,8 +24,8 @@
24
24
  #
25
25
  # ==================================================================
26
26
 
27
- version = "3.0.0"
28
- vdate = "2024-02-13"
27
+ version = "3.1.0"
28
+ vdate = "2024-02-18"
29
29
 
30
30
  copyright = "2023-2024"
31
31
 
@@ -6519,7 +6519,7 @@ class ContTableDialog(object):
6519
6519
  prompt_frame = tk.Frame(self.dlg, borderwidth=5)
6520
6520
  prompt_frame.grid(row=0, column=0, sticky=tk.N+tk.EW, pady=(3,3))
6521
6521
  prompt_frame.columnconfigure(0, weight=1)
6522
- msg_lbl = ttk.Label(prompt_frame, width=70, text="Select row and column variables. For each, the range of positive responses must be specified")
6522
+ msg_lbl = ttk.Label(prompt_frame, width=200, text="Select row and column variables. Conventionally, the row represents the explanatory or treatment variable and the column represents the response, condition, or effect variable. For each, the range of positive responses must be specified.")
6523
6523
  msg_lbl.grid(row=0, column=0, sticky=tk.W, padx=(6,6), pady=(3,3))
6524
6524
  def wrap_msg(event):
6525
6525
  msg_lbl.configure(wraplength=event.width - 5)
@@ -6568,15 +6568,16 @@ class ContTableDialog(object):
6568
6568
  self.autoupdate_ck.grid(row=0, column=1, sticky=tk.W, padx=(6,3), pady=(3,3))
6569
6569
 
6570
6570
  # Row and column variables
6571
+ num_validator = self.dlg.register(self.validate_num_entry)
6571
6572
  ttk.Label(rowvar_frame, text="Row variable (R)").grid(row=0, column=0, sticky=tk.W, padx=(6,3), pady=(3,1))
6572
6573
  ttk.Label(colvar_frame, text="Column variable (C)").grid(row=0, column=0, sticky=tk.W, padx=(6,3), pady=(3,1))
6573
6574
  self.row_var = tk.StringVar(rowvar_frame)
6574
6575
  self.row_sel = ttk.Combobox(rowvar_frame, state="readonly", textvariable=self.row_var, values=self.selectable_columns, width=24)
6575
- self.row_sel.grid(row=1, column=0, columnspan=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6576
+ self.row_sel.grid(row=1, column=0, columnspan=3, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6576
6577
  self.row_sel.bind("<<ComboboxSelected>>", self.ck_rowvar)
6577
6578
  self.col_var = tk.StringVar(colvar_frame)
6578
6579
  self.col_sel = ttk.Combobox(colvar_frame, state="readonly", textvariable=self.col_var, values=self.selectable_columns, width=24)
6579
- self.col_sel.grid(row=1, column=0, columnspan=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6580
+ self.col_sel.grid(row=1, column=0, columnspan=3, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6580
6581
  self.col_sel.bind("<<ComboboxSelected>>", self.ck_colvar)
6581
6582
 
6582
6583
  self.row_thresh_lbl = ttk.Label(rowvar_frame, text="Threshold for\npositive response")
@@ -6588,19 +6589,25 @@ class ContTableDialog(object):
6588
6589
  # or a selected list of categorical values specified in a Listbox widget. The Entry widget is
6589
6590
  # initially displayed, but disabled. The 'ck_rowvar' and 'ck_colvar' methods hide and re-grid
6590
6591
  # these widgets as necessary.
6592
+ gt_lt_list = ['>', '<']
6591
6593
  self.row_thresh_var = tk.DoubleVar(rowvar_frame, 0.0)
6592
6594
  self.row_thresh_listvar = tk.Variable(rowvar_frame)
6593
- #self.row_thresh_entry = ttk.Entry(rowvar_frame, width=6, textvariable=self.row_thresh_var, validate="focusout", validatecommand=self.ck_row_thresh_num)
6594
- self.row_thresh_entry = ttk.Entry(rowvar_frame, width=6, textvariable=self.row_thresh_var)
6595
+ self.row_thresh_gtlt_var = tk.StringVar(rowvar_frame, '>')
6596
+ self.row_thresh_gtlt = ttk.Combobox(rowvar_frame, width=2, state="disabled", textvariable=self.row_thresh_gtlt_var, values=gt_lt_list)
6597
+ self.row_thresh_gtlt.bind("<<ComboboxSelected>>", self.q_recalc)
6598
+ self.row_thresh_gtlt.grid(row=2, column=1, sticky=tk.N+tk.E, padx=(3,0), pady=(3,3))
6599
+ self.row_thresh_entry = ttk.Entry(rowvar_frame, width=6, textvariable=self.row_thresh_var, state="disabled", validate='key', validatecommand=(num_validator, '%P'))
6595
6600
  self.row_thresh_entry.bind("<KeyRelease>", self.ck_row_thresh_num)
6596
- self.row_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6597
- self.row_thresh_entry["state"] = tk.DISABLED
6601
+ self.row_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6598
6602
  self.col_thresh_var = tk.DoubleVar(colvar_frame, 0.0)
6603
+ self.col_thresh_gtlt_var = tk.StringVar(colvar_frame, '>')
6604
+ self.col_thresh_gtlt = ttk.Combobox(colvar_frame, width=2, state="disabled", textvariable=self.col_thresh_gtlt_var, values=gt_lt_list)
6605
+ self.col_thresh_gtlt.bind("<<ComboboxSelected>>", self.q_recalc)
6606
+ self.col_thresh_gtlt.grid(row=2, column=1, sticky=tk.N+tk.E, padx=(3,0), pady=(3,3))
6599
6607
  self.col_thresh_listvar = tk.Variable(colvar_frame)
6600
- self.col_thresh_entry = ttk.Entry(colvar_frame, width=6, textvariable=self.col_thresh_var)
6608
+ self.col_thresh_entry = ttk.Entry(colvar_frame, width=6, textvariable=self.col_thresh_var, state="disabled", validate='key', validatecommand=(num_validator, '%P'))
6601
6609
  self.col_thresh_entry.bind("<KeyRelease>", self.ck_col_thresh_num)
6602
- self.col_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6603
- self.col_thresh_entry["state"] = tk.DISABLED
6610
+ self.col_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6604
6611
  self.row_thresh_list = tk.Listbox(rowvar_frame, listvariable=self.row_thresh_listvar, selectmode=tk.MULTIPLE, width=24, height=24)
6605
6612
  self.row_thresh_list.configure(exportselection=False)
6606
6613
  self.row_thresh_list.bind("<<ListboxSelect>>", self.ck_row_thresh_list)
@@ -6619,7 +6626,7 @@ class ContTableDialog(object):
6619
6626
  self.out_tbl_frm = tk.Frame(output_panes, borderwidth=3, relief=tk.RIDGE)
6620
6627
  self.out_tbl_frm.grid(row=0, column=0, sticky=tk.NSEW)
6621
6628
  self.out_tbl_frm.rowconfigure(0, weight=1)
6622
- self.out_tbl_frm.columnconfigure(0, weight=1, minsize=380)
6629
+ self.out_tbl_frm.columnconfigure(0, weight=1, minsize=400)
6623
6630
  output_panes.add(self.out_tbl_frm, weight=1)
6624
6631
 
6625
6632
  self.out_plt_frm = tk.Frame(output_panes, borderwidth=3, relief=tk.RIDGE)
@@ -6658,6 +6665,9 @@ class ContTableDialog(object):
6658
6665
  def do_help(self, *args):
6659
6666
  webbrowser.open("https://mapdata.readthedocs.io/en/latest/dialogs.html#contingency-table-dialog", new=2, autoraise=True)
6660
6667
 
6668
+ def validate_num_entry(self, potential_new_value):
6669
+ return not (potential_new_value is None or len(str(potential_new_value)) == 0)
6670
+
6661
6671
  def clear_output(self):
6662
6672
  for ctl in self.out_tbl_frm.winfo_children():
6663
6673
  ctl.destroy()
@@ -6687,6 +6697,7 @@ class ContTableDialog(object):
6687
6697
  if rowvar in self.categ_columns:
6688
6698
  self.row_thresh_lbl["text"] = "Select categories for\npositive response"
6689
6699
  self.row_thresh_entry.grid_forget()
6700
+ self.row_thresh_gtlt.grid_forget()
6690
6701
  self.row_thresh_list.grid(row=3, column=0, sticky=tk.N+tk.EW, padx=(3,0), pady=(3,3))
6691
6702
  self.rsb.grid(row=3, column=1, sticky=tk.NS, pady=(3,3))
6692
6703
  # Populate the list box
@@ -6699,7 +6710,9 @@ class ContTableDialog(object):
6699
6710
  self.row_thresh_lbl["text"] = "Threshold for\npositive response"
6700
6711
  self.row_thresh_list.grid_forget()
6701
6712
  self.rsb.grid_forget()
6702
- self.row_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6713
+ self.row_thresh_gtlt.grid(row=2, column=1, sticky=tk.N+tk.E, padx=(3,0), pady=(3,3))
6714
+ self.row_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6715
+ self.row_thresh_gtlt["state"] = "readonly"
6703
6716
  self.row_thresh_entry["state"] = tk.NORMAL
6704
6717
  self.q_recalc()
6705
6718
 
@@ -6709,6 +6722,7 @@ class ContTableDialog(object):
6709
6722
  if colvar in self.categ_columns:
6710
6723
  self.col_thresh_lbl["text"] = "Select categories for\npositive response"
6711
6724
  self.col_thresh_entry.grid_forget()
6725
+ self.col_thresh_gtlt.grid_forget()
6712
6726
  self.col_thresh_list.grid(row=3, column=0, sticky=tk.N+tk.EW, padx=(3,0), pady=(3,3))
6713
6727
  self.csb.grid(row=3, column=1, sticky=tk.NS, pady=(3,3))
6714
6728
  # Populate the list box
@@ -6721,7 +6735,9 @@ class ContTableDialog(object):
6721
6735
  self.col_thresh_lbl["text"] = "Threshold for\npositive response"
6722
6736
  self.col_thresh_list.grid_forget()
6723
6737
  self.csb.grid_forget()
6724
- self.col_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6738
+ self.row_thresh_gtlt.grid(row=2, column=1, sticky=tk.N+tk.E, padx=(3,0), pady=(3,3))
6739
+ self.col_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6740
+ self.col_thresh_gtlt["state"] = "readonly"
6725
6741
  self.col_thresh_entry["state"] = tk.NORMAL
6726
6742
  self.q_recalc()
6727
6743
 
@@ -6737,7 +6753,7 @@ class ContTableDialog(object):
6737
6753
  def ck_row_thresh_list(self, event=None):
6738
6754
  self.q_recalc()
6739
6755
 
6740
- def q_recalc(self):
6756
+ def q_recalc(self, event=None):
6741
6757
  # Recalculation can be done if both row and column variables are specifiied and have
6742
6758
  # thresholds selected.
6743
6759
  can_recalc = 0
@@ -6778,7 +6794,13 @@ class ContTableDialog(object):
6778
6794
  rowvals = ",".join(squotelist(rowthreshvals))
6779
6795
  row_sql = f"{rv} in ({rowvals})"
6780
6796
  else:
6781
- row_sql = f"{rv} > {self.row_thresh_var.get()}"
6797
+ rtv = self.row_thresh_var.get()
6798
+ if type(rtv) not in (int, float):
6799
+ rtv = 0
6800
+ if self.row_thresh_gtlt_var.get() == '>':
6801
+ row_sql = f"{rv} > {rtv}"
6802
+ else:
6803
+ row_sql = f"{rv} < {rtv}"
6782
6804
  if cv in self.categ_columns:
6783
6805
  list_items = self.col_thresh_listvar.get()
6784
6806
  curr_selections = self.col_thresh_list.curselection()
@@ -6786,7 +6808,13 @@ class ContTableDialog(object):
6786
6808
  colvals = ",".join(squotelist(colthreshvals))
6787
6809
  col_sql = f"{cv} in ({colvals})"
6788
6810
  else:
6789
- col_sql = f"{cv} > {self.col_thresh_var.get()}"
6811
+ ctv = self.col_thresh_var.get()
6812
+ if type(ctv) not in (int, float):
6813
+ ctv = 0
6814
+ if self.col_thresh_gtlt_var.get() == '>':
6815
+ col_sql = f"{cv} > {ctv}"
6816
+ else:
6817
+ col_sql = f"{cv} < {ctv}"
6790
6818
  if self.sel_only_var.get() == '1':
6791
6819
  tv_ids = ",".join(self.parent.tbl.selection())
6792
6820
  sel_sql = f"and treeviewid in ({tv_ids})"
@@ -6851,6 +6879,25 @@ class ContTableDialog(object):
6851
6879
  be = spstats.boschloo_exact(dt)
6852
6880
  self.statdata.append(["Boschloo exact test statistic", fp_display(be.statistic)])
6853
6881
  self.statdata.append(["Boschloo exact test p value", fp_display(be.pvalue)])
6882
+ if ct_data[0][1] != 0 and not (ct_data[0][0] == 0 and ct_data[1][0] == 0):
6883
+ self.statdata.append(["Risk ratio", fp_display((ct_data[0][0] * (ct_data[0][1] + ct_data[1][1])) / \
6884
+ (ct_data[0][1] * (ct_data[0][0] + ct_data[1][0])))])
6885
+ if ct_data[0][1] != 0 and ct_data[1][0] != 0:
6886
+ oddsr = ((ct_data[0][0] * ct_data[1][1]) / (ct_data[0][1]) * ct_data[1][0])
6887
+ self.statdata.append(["Odds ratio", fp_display(oddsr)])
6888
+ if oddsr != 0.0:
6889
+ log_or = math.log(oddsr)
6890
+ self.statdata.append(["Log odds ratio", fp_display(log_or)])
6891
+ se_logor = math.sqrt(1/ct_data[0][0] + 1/ct_data[0][1] + 1/ct_data[1][0] + 1/ct_data[1][1])
6892
+ self.statdata.append(["SE of log odds ratio", fp_display(se_logor)])
6893
+ halfint = 1.96 * se_logor
6894
+ self.statdata.append(["95% CI for log odds ratio", fp_display(log_or - halfint) + " - " + fp_display(log_or + halfint)])
6895
+ self.statdata.append(["Yule's association (Q)", fp_display((oddsr - 1)/(oddsr + 1))])
6896
+ self.statdata.append(["Yule's colligation (Y)", fp_display((math.sqrt(oddsr) - 1)/(math.sqrt(oddsr) + 1))])
6897
+ n = ct_data[2][2]
6898
+ phi = (((ct_data[0][0]/n) * (ct_data[1][1]/n)) - ((ct_data[0][1]/n) * (ct_data[1][0]/n))) / \
6899
+ math.sqrt((ct_data[0][2]/n) * (ct_data[1][2]/n) * (ct_data[2][0]/n) * (ct_data[2][1]/n))
6900
+ self.statdata.append(["Yule's phi", fp_display(phi)])
6854
6901
  if ct_data[2][2] != 0:
6855
6902
  self.statdata.append(["P(R)", fp_display(ct_data[0][2]/ct_data[2][2])])
6856
6903
  if ct_data[2][0] != 0:
@@ -6954,7 +7001,7 @@ class ROCCurveDialog(object):
6954
7001
  ttk.Label(condition_frame, text="Condition variable").grid(row=0, column=0, sticky=tk.W, padx=(6,3), pady=(3,1))
6955
7002
  self.cond_var = tk.StringVar(condition_frame)
6956
7003
  self.cond_sel = ttk.Combobox(condition_frame, state="readonly", textvariable=self.cond_var, values=self.condition_columns, width=24)
6957
- self.cond_sel.grid(row=1, column=0, columnspan=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
7004
+ self.cond_sel.grid(row=1, column=0, columnspan=3, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6958
7005
  self.cond_sel.bind("<<ComboboxSelected>>", self.ck_condvar)
6959
7006
 
6960
7007
  self.cond_thresh_lbl = ttk.Label(condition_frame, text="Threshold for\npositive response")
@@ -6964,11 +7011,17 @@ class ROCCurveDialog(object):
6964
7011
  # or a selected list of categorical values specified in a Listbox widget. The Entry widget is
6965
7012
  # initially displayed, but disabled. The 'ck_rowvar' and 'ck_colvar' methods hide and re-grid
6966
7013
  # these widgets as necessary.
7014
+ gt_lt_list = ['>', '<']
7015
+ num_validator = self.dlg.register(self.validate_num_entry)
6967
7016
  self.cond_thresh_var = tk.DoubleVar(condition_frame, 0.0)
6968
7017
  self.cond_thresh_listvar = tk.Variable(condition_frame)
6969
- self.cond_thresh_entry = ttk.Entry(condition_frame, width=6, textvariable=self.cond_thresh_var)
7018
+ self.cond_thresh_gtlt_var = tk.StringVar(condition_frame, '>')
7019
+ self.cond_thresh_gtlt = ttk.Combobox(condition_frame, width=2, state="disabled", textvariable=self.cond_thresh_gtlt_var, values=gt_lt_list)
7020
+ self.cond_thresh_gtlt.bind("<<ComboboxSelected>>", self.q_recalc)
7021
+ self.cond_thresh_gtlt.grid(row=2, column=1, sticky=tk.N+tk.E, padx=(3,0), pady=(3,3))
7022
+ self.cond_thresh_entry = ttk.Entry(condition_frame, width=6, textvariable=self.cond_thresh_var, validate='key', validatecommand=(num_validator, '%P'))
6970
7023
  self.cond_thresh_entry.bind("<KeyRelease>", self.ck_cond_thresh_num)
6971
- self.cond_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
7024
+ self.cond_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
6972
7025
  self.cond_thresh_entry["state"] = tk.DISABLED
6973
7026
  self.cond_thresh_list = tk.Listbox(condition_frame, listvariable=self.cond_thresh_listvar, selectmode=tk.MULTIPLE, width=24, height=15)
6974
7027
  self.cond_thresh_list.configure(exportselection=False)
@@ -7015,7 +7068,7 @@ class ROCCurveDialog(object):
7015
7068
  # Populate stat_frame
7016
7069
  ttk.Label(stat_frame, text="Prediction threshold").grid(row=0, column=0, sticky=tk.W, padx=(3,3), pady=(3,3))
7017
7070
  self.pred_thresh_var = tk.DoubleVar(stat_frame, 0.0)
7018
- self.pred_thresh_entry = ttk.Entry(stat_frame, width=6, textvariable=self.pred_thresh_var)
7071
+ self.pred_thresh_entry = ttk.Entry(stat_frame, width=6, textvariable=self.pred_thresh_var, validate='key', validatecommand=(num_validator, '%P'))
7019
7072
  self.pred_thresh_entry.bind("<KeyRelease>", self.ck_pred_thresh_num)
7020
7073
  self.pred_thresh_entry.grid(row=1, column=0, sticky=tk.N+tk.W, padx=(3,3), pady=(3,3))
7021
7074
 
@@ -7050,6 +7103,9 @@ class ROCCurveDialog(object):
7050
7103
  def do_help(self, *args):
7051
7104
  webbrowser.open("https://mapdata.readthedocs.io/en/latest/dialogs.html#receiver-operating-characteristics-dialog", new=2, autoraise=True)
7052
7105
 
7106
+ def validate_num_entry(self, potential_new_value):
7107
+ return not (potential_new_value is None or len(str(potential_new_value)) == 0)
7108
+
7053
7109
  def clear_output(self):
7054
7110
  for ctl in self.out_tbl_frm.winfo_children():
7055
7111
  ctl.destroy()
@@ -7070,6 +7126,7 @@ class ROCCurveDialog(object):
7070
7126
  if condvar in self.categ_columns:
7071
7127
  self.cond_thresh_lbl["text"] = "Select categories for\npositive response"
7072
7128
  self.cond_thresh_entry.grid_forget()
7129
+ self.cond_thresh_gtlt.grid_forget()
7073
7130
  self.cond_thresh_list.grid(row=3, column=0, sticky=tk.N+tk.EW, padx=(3,0), pady=(3,3))
7074
7131
  self.condsb.grid(row=3, column=1, sticky=tk.NS, pady=(3,3))
7075
7132
  # Populate the list box
@@ -7082,7 +7139,9 @@ class ROCCurveDialog(object):
7082
7139
  self.cond_thresh_lbl["text"] = "Threshold for\npositive response"
7083
7140
  self.cond_thresh_list.grid_forget()
7084
7141
  self.condsb.grid_forget()
7085
- self.cond_thresh_entry.grid(row=2, column=1, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
7142
+ self.cond_thresh_gtlt.grid(row=2, column=1, sticky=tk.NE, padx=(3,0), pady=(3,3))
7143
+ self.cond_thresh_entry.grid(row=2, column=2, sticky=tk.N+tk.EW, padx=(3,3), pady=(3,3))
7144
+ self.cond_thresh_gtlt["state"] = "readonly"
7086
7145
  self.cond_thresh_entry["state"] = tk.NORMAL
7087
7146
  self.q_recalc()
7088
7147
 
@@ -7099,7 +7158,7 @@ class ROCCurveDialog(object):
7099
7158
  def ck_cond_thresh_list(self, event=None):
7100
7159
  self.q_recalc()
7101
7160
 
7102
- def q_recalc(self):
7161
+ def q_recalc(self, event=None):
7103
7162
  # Recalculation can be done if the condition variable and positive values have been
7104
7163
  # specified, and a prediction variable specified. The prediction threshold is always
7105
7164
  # specified, defaulting to zero, so does not affect whether recalculation can be done.
@@ -7153,7 +7212,10 @@ class ROCCurveDialog(object):
7153
7212
  positives = [clean_data[0][i] in condthreshvals for i in range(len(clean_data[0]))]
7154
7213
  else:
7155
7214
  threshval = self.cond_thresh_var.get()
7156
- positives = [clean_data[0][i] > threshval for i in range(len(clean_data[0]))]
7215
+ if self.cond_thresh_gtlt_var.get() == '>':
7216
+ positives = [clean_data[0][i] > threshval for i in range(len(clean_data[0]))]
7217
+ else:
7218
+ positives = [clean_data[0][i] < threshval for i in range(len(clean_data[0]))]
7157
7219
  clean_data.append(positives)
7158
7220
  self.dataset = sort_columns(clean_data)
7159
7221
  self.data_labels = [self.cond_var.get(), self.pred_var.get(), "Positive"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mapdata
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database
5
5
  Home-page: https://osdn.net/project/mapdata/
6
6
  Author: Dreas Nielsen
@@ -9,7 +9,7 @@ symbol_files = glob.glob("mapdata/symbols/16x16/*.xbm") + glob.glob("mapdata/sym
9
9
  glob.glob("mapdata/symbols/24x24/*.xbm") + glob.glob("mapdata/symbols/28x28/*.xbm")
10
10
 
11
11
  setuptools.setup(name='mapdata',
12
- version='3.0.0',
12
+ version='3.1.0',
13
13
  description="An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database",
14
14
  author='Dreas Nielsen',
15
15
  author_email='cortice@tutanota.com',
File without changes
File without changes
File without changes
File without changes