sapor 0.3.4

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 (332) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/pl/2015-gl-lis-okr.csv +42 -0
  25. data/data/pl/poland_2015_to_psv.rb +79 -0
  26. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  27. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  28. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  29. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  30. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  31. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  32. data/data/uk/united_kingdom_2015.txt +651 -0
  33. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  34. data/data/uk/united_kingdom_2017.txt +651 -0
  35. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  36. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  37. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  38. data/lib/sapor.rb +150 -0
  39. data/lib/sapor/binomials_cache.rb +45 -0
  40. data/lib/sapor/combinations_distribution.rb +222 -0
  41. data/lib/sapor/denominators.rb +67 -0
  42. data/lib/sapor/dichotomies.rb +138 -0
  43. data/lib/sapor/dichotomy.rb +164 -0
  44. data/lib/sapor/first_past_the_post.rb +82 -0
  45. data/lib/sapor/largest_remainder.rb +118 -0
  46. data/lib/sapor/log4r_logger.rb +49 -0
  47. data/lib/sapor/log_facade.rb +40 -0
  48. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  49. data/lib/sapor/multi_district_proportional.rb +123 -0
  50. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  51. data/lib/sapor/number_formatter.rb +45 -0
  52. data/lib/sapor/options.rb +73 -0
  53. data/lib/sapor/poll.rb +286 -0
  54. data/lib/sapor/polychotomy.rb +200 -0
  55. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  56. data/lib/sapor/referendum_polychotomy.rb +165 -0
  57. data/lib/sapor/regional_data/area.rb +82 -0
  58. data/lib/sapor/regional_data/austria.rb +84 -0
  59. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  60. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  61. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  62. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  63. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  64. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  65. data/lib/sapor/regional_data/belgium.rb +97 -0
  66. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  67. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  68. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  69. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  70. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  71. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  72. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  73. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  74. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  75. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  76. data/lib/sapor/regional_data/catalonia.rb +96 -0
  77. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  78. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  79. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  80. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  81. data/lib/sapor/regional_data/denmark.rb +128 -0
  82. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  83. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  84. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  85. data/lib/sapor/regional_data/estonia.rb +88 -0
  86. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  87. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  88. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  89. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  90. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  91. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  92. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  93. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  94. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  95. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  96. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  97. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  98. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  99. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  100. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  101. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  102. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  103. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  104. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  106. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  107. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  108. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  109. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  110. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  111. data/lib/sapor/regional_data/european_union_bulgaria.rb +82 -0
  112. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  113. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  114. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  116. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  117. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  118. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  119. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  120. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  121. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  122. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  123. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  124. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  125. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  126. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  127. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  128. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  129. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  130. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  131. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  132. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  133. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  134. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  135. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  136. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  138. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  140. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  141. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  142. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  143. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  144. data/lib/sapor/regional_data/finland.rb +107 -0
  145. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  146. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  147. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  148. data/lib/sapor/regional_data/flanders.rb +115 -0
  149. data/lib/sapor/regional_data/france.rb +38 -0
  150. data/lib/sapor/regional_data/greece.rb +92 -0
  151. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  152. data/lib/sapor/regional_data/hungary.rb +116 -0
  153. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  154. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  155. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  156. data/lib/sapor/regional_data/iceland.rb +133 -0
  157. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  158. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  159. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  160. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  161. data/lib/sapor/regional_data/latvia.rb +112 -0
  162. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  163. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  164. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  165. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  166. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  167. data/lib/sapor/regional_data/netherlands.rb +108 -0
  168. data/lib/sapor/regional_data/norway.rb +425 -0
  169. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  170. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  171. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  172. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  173. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  174. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  175. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  176. data/lib/sapor/regional_data/poland.rb +125 -0
  177. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  178. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  179. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  180. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  181. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  182. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  183. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  184. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  185. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  186. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  187. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  188. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  189. data/lib/sapor/regional_data/portugal.rb +101 -0
  190. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  191. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  192. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  193. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  194. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  195. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  196. data/lib/sapor/regional_data/slovakia.rb +81 -0
  197. data/lib/sapor/regional_data/slovenia.rb +114 -0
  198. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  199. data/lib/sapor/regional_data/spain.rb +136 -0
  200. data/lib/sapor/regional_data/sweden.rb +92 -0
  201. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  202. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  203. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  204. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  205. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  206. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  207. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  208. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  209. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  210. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  211. data/lib/sapor/regional_data/utopia.rb +66 -0
  212. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  213. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  214. data/lib/sapor/regional_data/wallonia.rb +112 -0
  215. data/lib/sapor/representatives_polychotomy.rb +338 -0
  216. data/lib/sapor/single_district_proportional.rb +75 -0
  217. data/sapor.gemspec +35 -0
  218. data/spec/integration/area_spec.rb +28 -0
  219. data/spec/integration/poll_spec.rb +112 -0
  220. data/spec/integration/sample.poll +8 -0
  221. data/spec/spec_helper.rb +31 -0
  222. data/spec/unit/area_spec.rb +115 -0
  223. data/spec/unit/austria_spec.rb +76 -0
  224. data/spec/unit/belgium_brussels_spec.rb +58 -0
  225. data/spec/unit/belgium_flanders_spec.rb +62 -0
  226. data/spec/unit/belgium_spec.rb +26 -0
  227. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  228. data/spec/unit/binomials_cache_spec.rb +34 -0
  229. data/spec/unit/catalonia_spec.rb +74 -0
  230. data/spec/unit/combinations_distribution_spec.rb +241 -0
  231. data/spec/unit/denmark_spec.rb +56 -0
  232. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  233. data/spec/unit/denmark_with_e_spec.rb +57 -0
  234. data/spec/unit/denmark_with_p_spec.rb +57 -0
  235. data/spec/unit/denominators_spec.rb +40 -0
  236. data/spec/unit/dichotomies_spec.rb +154 -0
  237. data/spec/unit/dichotomy_spec.rb +320 -0
  238. data/spec/unit/estonia_spec.rb +65 -0
  239. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  240. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  241. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  242. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  243. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  244. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  245. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  246. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  247. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  248. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  249. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  250. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  251. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  252. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  253. data/spec/unit/european_union_austria_spec.rb +61 -0
  254. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  255. data/spec/unit/european_union_croatia_spec.rb +59 -0
  256. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  257. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  258. data/spec/unit/european_union_denmark_spec.rb +61 -0
  259. data/spec/unit/european_union_estonia_spec.rb +93 -0
  260. data/spec/unit/european_union_finland_spec.rb +75 -0
  261. data/spec/unit/european_union_flanders_spec.rb +56 -0
  262. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  263. data/spec/unit/european_union_france_spec.rb +73 -0
  264. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  265. data/spec/unit/european_union_germany_spec.rb +90 -0
  266. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  267. data/spec/unit/european_union_greece_spec.rb +148 -0
  268. data/spec/unit/european_union_hungary_spec.rb +57 -0
  269. data/spec/unit/european_union_ireland_spec.rb +72 -0
  270. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  271. data/spec/unit/european_union_italy_spec.rb +69 -0
  272. data/spec/unit/european_union_latvia_spec.rb +76 -0
  273. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  274. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  275. data/spec/unit/european_union_malta_spec.rb +60 -0
  276. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  277. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  278. data/spec/unit/european_union_poland_spec.rb +69 -0
  279. data/spec/unit/european_union_portugal_spec.rb +77 -0
  280. data/spec/unit/european_union_romania_spec.rb +67 -0
  281. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  282. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  283. data/spec/unit/european_union_spain_spec.rb +129 -0
  284. data/spec/unit/european_union_sweden_spec.rb +89 -0
  285. data/spec/unit/finland_spec.rb +65 -0
  286. data/spec/unit/finland_with_sin_spec.rb +67 -0
  287. data/spec/unit/first_past_the_post_spec.rb +54 -0
  288. data/spec/unit/flanders_spec.rb +70 -0
  289. data/spec/unit/france_spec.rb +32 -0
  290. data/spec/unit/greece_spec.rb +118 -0
  291. data/spec/unit/hungary_spec.rb +132 -0
  292. data/spec/unit/iceland_spec.rb +57 -0
  293. data/spec/unit/largest_remainder_spec.rb +79 -0
  294. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  295. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  296. data/spec/unit/latvia_kpv_spec.rb +38 -0
  297. data/spec/unit/latvia_spec.rb +60 -0
  298. data/spec/unit/luxembourg_spec.rb +54 -0
  299. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  300. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  301. data/spec/unit/netherlands_spec.rb +107 -0
  302. data/spec/unit/norway_spec.rb +64 -0
  303. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  304. data/spec/unit/number_formatter_spec.rb +173 -0
  305. data/spec/unit/poland_spec.rb +62 -0
  306. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  307. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  308. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  309. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  310. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  311. data/spec/unit/poll_spec.rb +110 -0
  312. data/spec/unit/portugal_spec.rb +66 -0
  313. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  314. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  315. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  316. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  317. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  318. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  319. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  320. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  321. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  322. data/spec/unit/slovakia_spec.rb +99 -0
  323. data/spec/unit/slovenia_spec.rb +80 -0
  324. data/spec/unit/spain_spec.rb +101 -0
  325. data/spec/unit/sweden_20140914_spec.rb +112 -0
  326. data/spec/unit/sweden_spec.rb +113 -0
  327. data/spec/unit/united_kingdom_spec.rb +65 -0
  328. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  329. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  330. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  331. data/spec/unit/wallonia_spec.rb +70 -0
  332. metadata +490 -0
@@ -0,0 +1,128 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ module Sapor
19
+ #
20
+ # The regional data for Denmark, extended with P.
21
+ #
22
+ class DenmarkWithP < Area
23
+ include Singleton
24
+
25
+ def area_code
26
+ 'DK∪{P}'
27
+ end
28
+
29
+ def coalitions
30
+ COALITIONS
31
+ end
32
+
33
+ def no_of_seats
34
+ NO_OF_SEATS
35
+ end
36
+
37
+ def overall_election_results_of_2015
38
+ if @overall_election_results_of_2015.nil?
39
+ @overall_election_results_of_2015 = \
40
+ summarize_election_results(election_results_of_2015)
41
+ end
42
+ @overall_election_results_of_2015
43
+ end
44
+
45
+ def population_size
46
+ POPULATION_SIZE
47
+ end
48
+
49
+ def seats(simulation)
50
+ electoral_system.project(simulation)
51
+ end
52
+
53
+ private
54
+
55
+ A_PARTY = 'Socialdemokraterne'.freeze
56
+ B_PARTY = 'Radikale Venstre'.freeze
57
+ C_PARTY = 'Det Konservative Folkeparti'.freeze
58
+ D_PARTY = 'Nye Borgerlige'.freeze
59
+ E_PARTY = 'Klaus Riskær Pedersen'.freeze
60
+ F_PARTY = 'Socialistisk Folkeparti'.freeze
61
+ I_PARTY = 'Liberal Alliance'.freeze
62
+ K_PARTY = 'Kristendemokraterne'.freeze
63
+ O_PARTY = 'Dansk Folkeparti'.freeze
64
+ P_PARTY = 'Stram Kurs'.freeze
65
+ V_PARTY = 'Venstre'.freeze
66
+ OE_PARTY = 'Enhedslisten–De Rød-Grønne'.freeze
67
+ AA_PARTY = 'Alternativet'.freeze
68
+
69
+ COALITIONS = [[A_PARTY, B_PARTY],
70
+ [A_PARTY, B_PARTY, F_PARTY],
71
+ [A_PARTY, B_PARTY, F_PARTY, OE_PARTY],
72
+ [A_PARTY, B_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
73
+ [A_PARTY, F_PARTY, OE_PARTY],
74
+ [A_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
75
+ [C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
76
+ P_PARTY, V_PARTY],
77
+ [C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
78
+ V_PARTY],
79
+ [C_PARTY, D_PARTY, E_PARTY, I_PARTY, O_PARTY, V_PARTY],
80
+ [C_PARTY, D_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
81
+ [C_PARTY, D_PARTY, I_PARTY, O_PARTY, V_PARTY],
82
+ [C_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
83
+ [C_PARTY, I_PARTY, O_PARTY, V_PARTY],
84
+ [C_PARTY, I_PARTY, V_PARTY],
85
+ [C_PARTY, V_PARTY],
86
+ [V_PARTY]].freeze
87
+
88
+ # Voter turnout on 18 June 2015
89
+ # http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
90
+ POPULATION_SIZE = 3_518_987
91
+
92
+ DIRECT_SEAT_DISTRIBUTION = { 'Københavns Storkreds' => 16,
93
+ 'Københavns Omegns Storkreds' => 11,
94
+ 'Nordsjællands Storkreds' => 10,
95
+ 'Bornholms Storkreds' => 2,
96
+ 'Sjællands Storkreds' => 20,
97
+ 'Fyns Storkreds' => 12,
98
+ 'Sydjyllands Storkreds' => 18,
99
+ 'Østjyllands Storkreds' => 18,
100
+ 'Vestjyllands Storkreds' => 13,
101
+ 'Nordjyllands Storkreds' => 15 }.freeze
102
+
103
+ LEVELING_THRESHOLD = 0.02
104
+
105
+ NO_OF_LEVELING_SEATS = 40
106
+
107
+ NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
108
+ DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
109
+
110
+ def election_results_of_2015
111
+ if @election_results_of_2015.nil?
112
+ @election_results_of_2015 = load_election_results(
113
+ 'denmark-20150618-with-p.psv'
114
+ )
115
+ end
116
+ @election_results_of_2015
117
+ end
118
+
119
+ def electoral_system
120
+ if @electoral_system.nil?
121
+ @electoral_system = LargestRemainder.new(NO_OF_SEATS, HareQuota,
122
+ LEVELING_THRESHOLD)
123
+
124
+ end
125
+ @electoral_system
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,88 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ #
5
+ # This file is part of SAPoR.
6
+ #
7
+ # SAPoR is free software: you can redistribute it and/or modify it under the
8
+ # terms of the GNU General Public License as published by the Free Software
9
+ # Foundation, either version 3 of the License, or (at your option) any later
10
+ # version.
11
+ #
12
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
+ #
16
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
17
+ #
18
+
19
+ module Sapor
20
+ #
21
+ # The regional data for Estonia.
22
+ #
23
+ class Estonia < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'EE'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def no_of_seats
35
+ NO_OF_SEATS
36
+ end
37
+
38
+ def population_size
39
+ POPULATION_SIZE
40
+ end
41
+
42
+ def seats(simulation)
43
+ electoral_system.project(simulation)
44
+ end
45
+
46
+ private
47
+
48
+ EKRE_PARTY = 'Eesti Konservatiivne Rahvaerakond'.freeze
49
+ EVA_PARTY = 'Eesti Vabaerakond'.freeze
50
+ I_PARTY = 'Erakond Isamaa'.freeze
51
+ KESK_PARTY = 'Eesti Keskerakond'.freeze
52
+ REF_PARTY = 'Eesti Reformierakond'.freeze
53
+ SDE_PARTY = 'Sotsiaaldemokraatlik Erakond'.freeze
54
+
55
+ COALITIONS = [[EKRE_PARTY, I_PARTY, KESK_PARTY],
56
+ [EKRE_PARTY, I_PARTY, REF_PARTY],
57
+ [EKRE_PARTY, KESK_PARTY],
58
+ [EKRE_PARTY, KESK_PARTY, REF_PARTY],
59
+ [EKRE_PARTY, REF_PARTY],
60
+ [EKRE_PARTY, SDE_PARTY],
61
+ [EVA_PARTY, I_PARTY, REF_PARTY, SDE_PARTY],
62
+ [I_PARTY, KESK_PARTY, SDE_PARTY],
63
+ [I_PARTY, REF_PARTY],
64
+ [I_PARTY, REF_PARTY, SDE_PARTY],
65
+ [KESK_PARTY, REF_PARTY],
66
+ [KESK_PARTY, SDE_PARTY],
67
+ [REF_PARTY, SDE_PARTY]].freeze
68
+
69
+ NO_OF_SEATS = 101
70
+
71
+ # Voter turnout on 1 March 2015
72
+ # https://en.wikipedia.org/wiki/Estonian_parliamentary_election,_2015
73
+ POPULATION_SIZE = 577_910
74
+
75
+ THRESHOLD = 0.05
76
+
77
+ def electoral_system
78
+ if @electoral_system.nil?
79
+ @electoral_system = SingleDistrictProportional.new(
80
+ NO_OF_SEATS,
81
+ Dhondt09Denominators,
82
+ THRESHOLD
83
+ )
84
+ end
85
+ @electoral_system
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,172 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+ # Changes:
18
+ # Added Brexit Party as a copy of UK Independence Party
19
+ # Added Change UK as a combination of Conservative Party (3/318) and Labour Party (8/262)
20
+ #
21
+
22
+ East Midlands | UK Independence Party (EAPN) | 368,734
23
+ East Midlands | Brexit Party (BREXIT) | 368,734
24
+ East Midlands | Conservative Party (ECR) | 291,270
25
+ East Midlands | Labour Party (S&D) | 279,363
26
+ East Midlands | Green Party (Greens/EFA) | 67,066
27
+ East Midlands | Liberal Democrats (ALDE) | 60,773
28
+ East Midlands | Independence from Europe (*) | 21,384
29
+ East Midlands | British National Party (*) | 18,326
30
+ East Midlands | English Democrats (*) | 11,612
31
+ East Midlands | Change UK (ALDE) | 11,278
32
+ East Midlands | Harmony Party (*) | 2,194
33
+
34
+ East of England | UK Independence Party (EAPN) | 542,812
35
+ East of England | Brexit Party (BREXIT) | 542,812
36
+ East of England | Conservative Party (ECR) | 446,569
37
+ East of England | Labour Party (S&D) | 271,601
38
+ East of England | Green Party (Greens/EFA) | 133,331
39
+ East of England | Liberal Democrats (ALDE) | 108,010
40
+ East of England | Independence from Europe (*) | 26,564
41
+ East of England | English Democrats (*) | 16,497
42
+ East of England | Change UK (ALDE) | 12,506
43
+ East of England | British National Party (*) | 12,465
44
+ East of England | Christian Peoples Alliance (ECR) | 11,627
45
+ East of England | No2EU (*) | 4,870
46
+
47
+ London | Labour Party (S&D) | 806,959
48
+ London | Conservative Party (ECR) | 495,639
49
+ London | UK Independence Party (EAPN) | 371,133
50
+ London | Brexit Party (BREXIT) | 371,133
51
+ London | Green Party (Greens/EFA) | 196,419
52
+ London | Liberal Democrats (ALDE) | 148,013
53
+ London | Change UK (ALDE) | 29,316
54
+ London | Alliance EPP: European People’s Party UK (EPP) | 28,014
55
+ London | Independence from Europe (*) | 26,675
56
+ London | Christian Peoples Alliance (ECR) | 23,702
57
+ London | National Health Action Party (*) | 23,253
58
+ London | Animal Welfare Party (GUE/NGL) | 21,092
59
+ London | British National Party (*) | 19,246
60
+ London | Europeans Party (*) | 10,712
61
+ London | English Democrats (*) | 10,142
62
+ London | Communities United Party (*) | 6,951
63
+ London | National Liberal Party (*) | 6,736
64
+ London | No2EU (*) | 3,804
65
+ London | Harmony Party (*) | 1,985
66
+
67
+ North East England | Labour Party (S&D) | 221,988
68
+ North East England | UK Independence Party (EAPN) | 177,660
69
+ North East England | Brexit Party (BREXIT) | 177,660
70
+ North East England | Conservative Party (ECR) | 107,733
71
+ North East England | Liberal Democrats (ALDE) | 36,093
72
+ North East England | Green Party (Greens/EFA) | 31,605
73
+ North East England | Independence from Europe (*) | 13,934
74
+ North East England | British National Party (*) | 10,360
75
+ North East England | English Democrats (*) | 9,279
76
+ North East England | Change UK (ALDE) | 7,795
77
+
78
+ North West England | Labour Party (S&D) | 594,063
79
+ North West England | UK Independence Party (EAPN) | 481,932
80
+ North West England | Brexit Party (BREXIT) | 481,932
81
+ North West England | Conservative Party (ECR) | 351,985
82
+ North West England | Green Party (Greens/EFA) | 123,075
83
+ North West England | Liberal Democrats (ALDE) | 105,487
84
+ North West England | British National Party (*) | 32,826
85
+ North West England | Independence from Europe (*) | 26,731
86
+ North West England | Change UK (ALDE) | 21,460
87
+ North West England | English Democrats (*) | 19,522
88
+ North West England | Pirate Party UK (*) | 8,597
89
+ North West England | No2EU (*) | 5,402
90
+ North West England | Socialist Equality Party (*) | 5,067
91
+
92
+ South East England | UK Independence Party (EAPN) | 751,439
93
+ South East England | Brexit Party (BREXIT) | 751,439
94
+ South East England | Conservative Party (ECR) | 723,571
95
+ South East England | Labour Party (S&D) | 342,775
96
+ South East England | Green Party (Greens/EFA) | 211,706
97
+ South East England | Liberal Democrats (ALDE) | 187,876
98
+ South East England | Independence from Europe (*) | 45,199
99
+ South East England | English Democrats (*) | 17,771
100
+ South East England | Change UK (ALDE) | 17,293
101
+ South East England | British National Party (*) | 16,909
102
+ South East England | Christian Peoples Alliance (ECR) | 14,893
103
+ South East England | Peace Party (*) | 10,130
104
+ South East England | Socialist Party of Great Britain (*) | 5,454
105
+ South East England | Roman Party (*) | 2,997
106
+ South East England | YOURVoice (*) | 2,932
107
+ South East England | Liberty Great Britain (*) | 2,494
108
+ South East England | Harmony Party (*) | 1,904
109
+
110
+ South West England | UK Independence Party (EAPN) | 484,184
111
+ South West England | Brexit Party (BREXIT) | 484,184
112
+ South West England | Conservative Party (ECR) | 433,151
113
+ South West England | Labour Party (S&D) | 206,124
114
+ South West England | Green Party (Greens/EFA) | 166,447
115
+ South West England | Liberal Democrats (ALDE) | 160,376
116
+ South West England | Independence from Europe (*) | 23,169
117
+ South West England | English Democrats (*) | 15,081
118
+ South West England | British National Party (*) | 10,910
119
+ South West England | Change UK (ALDE) | 10,380
120
+
121
+ West Midlands | UK Independence Party (EAPN) | 428,010
122
+ West Midlands | Brexit Party (BREXIT) | 428,010
123
+ West Midlands | Labour Party (S&D) | 363,033
124
+ West Midlands | Conservative Party (ECR) | 330,470
125
+ West Midlands | Liberal Democrats (ALDE) | 75,648
126
+ West Midlands | Green Party (Greens/EFA) | 71,464
127
+ West Midlands | Independence from Europe (*) | 27,171
128
+ West Midlands | We Demand a Referendum Now (*) | 23,426
129
+ West Midlands | British National Party (*) | 20,643
130
+ West Midlands | Change UK (ALDE) | 14,203
131
+ West Midlands | English Democrats (*) | 12,832
132
+ West Midlands | No2EU (*) | 4,653
133
+ West Midlands | Harmony Party (*) | 1,857
134
+
135
+ Yorkshire and the Humber | UK Independence Party (EAPN) | 403,630
136
+ Yorkshire and the Humber | Brexit Party (BREXIT) | 403,630
137
+ Yorkshire and the Humber | Labour Party (S&D) | 380,189
138
+ Yorkshire and the Humber | Conservative Party (ECR) | 248,945
139
+ Yorkshire and the Humber | Green Party (Greens/EFA) | 102,282
140
+ Yorkshire and the Humber | Liberal Democrats (ALDE) | 81,108
141
+ Yorkshire and the Humber | Independence from Europe (*) | 24,297
142
+ Yorkshire and the Humber | British National Party (*) | 20,138
143
+ Yorkshire and the Humber | Yorkshire Party (Greens/EFA) | 19,017
144
+ Yorkshire and the Humber | Change UK (ALDE) | 13,957
145
+ Yorkshire and the Humber | English Democrats (*) | 13,288
146
+ Yorkshire and the Humber | No2EU (*) | 3,807
147
+
148
+ Scotland | Scottish National Party (Greens/EFA) | 389,503
149
+ Scotland | Labour Party (S&D) | 348,219
150
+ Scotland | Conservative Party (ECR) | 231,330
151
+ Scotland | UK Independence Party (EAPN) | 140,534
152
+ Scotland | Brexit Party (BREXIT) | 140,534
153
+ Scotland | Green Party (Greens/EFA) | 108,305
154
+ Scotland | Liberal Democrats (ALDE) | 95,319
155
+ Scotland | Britain First (*) | 13,639
156
+ Scotland | Change UK (ALDE) | 12,815
157
+ Scotland | British National Party (*) | 10,216
158
+ Scotland | No2EU (*) | 6,418
159
+
160
+ Wales | Labour Party (S&D) | 206,332
161
+ Wales | UK Independence Party (EAPN) | 201,983
162
+ Wales | Brexit Party (BREXIT) | 201,983
163
+ Wales | Conservative Party (ECR) | 127,742
164
+ Wales | Plaid Cymru (Greens/EFA) | 111,864
165
+ Wales | Green Party (Greens/EFA) | 33,275
166
+ Wales | Liberal Democrats (ALDE) | 28,930
167
+ Wales | British National Party (*) | 7,655
168
+ Wales | Change UK (*) | 7,505
169
+ Wales | Britain First (*) | 6,633
170
+ Wales | Socialist Labour Party (*) | 4,459
171
+ Wales | No2EU (*) | 2,803
172
+ Wales | Socialist Party of Great Britain (*) | 1,384
@@ -0,0 +1,146 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ East Midlands | UK Independence Party (EAPN) | 368,734
19
+ East Midlands | Conservative Party (ECR) | 291,270
20
+ East Midlands | Labour Party (S&D) | 279,363
21
+ East Midlands | Green Party (Greens/EFA) | 67,066
22
+ East Midlands | Liberal Democrats (ALDE) | 60,773
23
+ East Midlands | Independence from Europe (*) | 21,384
24
+ East Midlands | British National Party (*) | 18,326
25
+ East Midlands | English Democrats (*) | 11,612
26
+ East Midlands | Harmony Party (*) | 2,194
27
+
28
+ East of England | UK Independence Party (EAPN) | 542,812
29
+ East of England | Conservative Party (ECR) | 446,569
30
+ East of England | Labour Party (S&D) | 271,601
31
+ East of England | Green Party (Greens/EFA) | 133,331
32
+ East of England | Liberal Democrats (ALDE) | 108,010
33
+ East of England | Independence from Europe (*) | 26,564
34
+ East of England | English Democrats (*) | 16,497
35
+ East of England | British National Party (*) | 12,465
36
+ East of England | Christian Peoples Alliance (ECR) | 11,627
37
+ East of England | No2EU (*) | 4,870
38
+
39
+ London | Labour Party (S&D) | 806,959
40
+ London | Conservative Party (ECR) | 495,639
41
+ London | UK Independence Party (EAPN) | 371,133
42
+ London | Green Party (Greens/EFA) | 196,419
43
+ London | Liberal Democrats (ALDE) | 148,013
44
+ London | Alliance EPP: European People’s Party UK (EPP) | 28,014
45
+ London | Independence from Europe (*) | 26,675
46
+ London | Christian Peoples Alliance (ECR) | 23,702
47
+ London | National Health Action Party (*) | 23,253
48
+ London | Animal Welfare Party (GUE/NGL) | 21,092
49
+ London | British National Party (*) | 19,246
50
+ London | Europeans Party (*) | 10,712
51
+ London | English Democrats (*) | 10,142
52
+ London | Communities United Party (*) | 6,951
53
+ London | National Liberal Party (*) | 6,736
54
+ London | No2EU (*) | 3,804
55
+ London | Harmony Party (*) | 1,985
56
+
57
+ North East England | Labour Party (S&D) | 221,988
58
+ North East England | UK Independence Party (EAPN) | 177,660
59
+ North East England | Conservative Party (ECR) | 107,733
60
+ North East England | Liberal Democrats (ALDE) | 36,093
61
+ North East England | Green Party (Greens/EFA) | 31,605
62
+ North East England | Independence from Europe (*) | 13,934
63
+ North East England | British National Party (*) | 10,360
64
+ North East England | English Democrats (*) | 9,279
65
+
66
+ North West England | Labour Party (S&D) | 594,063
67
+ North West England | UK Independence Party (EAPN) | 481,932
68
+ North West England | Conservative Party (ECR) | 351,985
69
+ North West England | Green Party (Greens/EFA) | 123,075
70
+ North West England | Liberal Democrats (ALDE) | 105,487
71
+ North West England | British National Party (*) | 32,826
72
+ North West England | Independence from Europe (*) | 26,731
73
+ North West England | English Democrats (*) | 19,522
74
+ North West England | Pirate Party UK (*) | 8,597
75
+ North West England | No2EU (*) | 5,402
76
+ North West England | Socialist Equality Party (*) | 5,067
77
+
78
+ South East England | UK Independence Party (EAPN) | 751,439
79
+ South East England | Conservative Party (ECR) | 723,571
80
+ South East England | Labour Party (S&D) | 342,775
81
+ South East England | Green Party (Greens/EFA) | 211,706
82
+ South East England | Liberal Democrats (ALDE) | 187,876
83
+ South East England | Independence from Europe (*) | 45,199
84
+ South East England | English Democrats (*) | 17,771
85
+ South East England | British National Party (*) | 16,909
86
+ South East England | Christian Peoples Alliance (ECR) | 14,893
87
+ South East England | Peace Party (*) | 10,130
88
+ South East England | Socialist Party of Great Britain (*) | 5,454
89
+ South East England | Roman Party (*) | 2,997
90
+ South East England | YOURVoice (*) | 2,932
91
+ South East England | Liberty Great Britain (*) | 2,494
92
+ South East England | Harmony Party (*) | 1,904
93
+
94
+ South West England | UK Independence Party (EAPN) | 484,184
95
+ South West England | Conservative Party (ECR) | 433,151
96
+ South West England | Labour Party (S&D) | 206,124
97
+ South West England | Green Party (Greens/EFA) | 166,447
98
+ South West England | Liberal Democrats (ALDE) | 160,376
99
+ South West England | Independence from Europe (*) | 23,169
100
+ South West England | English Democrats (*) | 15,081
101
+ South West England | British National Party (*) | 10,910
102
+
103
+ West Midlands | UK Independence Party (EAPN) | 428,010
104
+ West Midlands | Labour Party (S&D) | 363,033
105
+ West Midlands | Conservative Party (ECR) | 330,470
106
+ West Midlands | Liberal Democrats (ALDE) | 75,648
107
+ West Midlands | Green Party (Greens/EFA) | 71,464
108
+ West Midlands | Independence from Europe (*) | 27,171
109
+ West Midlands | We Demand a Referendum Now (*) | 23,426
110
+ West Midlands | British National Party (*) | 20,643
111
+ West Midlands | English Democrats (*) | 12,832
112
+ West Midlands | No2EU (*) | 4,653
113
+ West Midlands | Harmony Party (*) | 1,857
114
+
115
+ Yorkshire and the Humber | UK Independence Party (EAPN) | 403,630
116
+ Yorkshire and the Humber | Labour Party (S&D) | 380,189
117
+ Yorkshire and the Humber | Conservative Party (ECR) | 248,945
118
+ Yorkshire and the Humber | Green Party (Greens/EFA) | 102,282
119
+ Yorkshire and the Humber | Liberal Democrats (ALDE) | 81,108
120
+ Yorkshire and the Humber | Independence from Europe (*) | 24,297
121
+ Yorkshire and the Humber | British National Party (*) | 20,138
122
+ Yorkshire and the Humber | Yorkshire Party (Greens/EFA) | 19,017
123
+ Yorkshire and the Humber | English Democrats (*) | 13,288
124
+ Yorkshire and the Humber | No2EU (*) | 3,807
125
+
126
+ Scotland | Scottish National Party (Greens/EFA) | 389,503
127
+ Scotland | Labour Party (S&D) | 348,219
128
+ Scotland | Conservative Party (ECR) | 231,330
129
+ Scotland | UK Independence Party (EAPN) | 140,534
130
+ Scotland | Green Party (Greens/EFA) | 108,305
131
+ Scotland | Liberal Democrats (ALDE) | 95,319
132
+ Scotland | Britain First (*) | 13,639
133
+ Scotland | British National Party (*) | 10,216
134
+ Scotland | No2EU (*) | 6,418
135
+
136
+ Wales | Labour Party (S&D) | 206,332
137
+ Wales | UK Independence Party (EAPN) | 201,983
138
+ Wales | Conservative Party (ECR) | 127,742
139
+ Wales | Plaid Cymru (Greens/EFA) | 111,864
140
+ Wales | Green Party (Greens/EFA) | 33,275
141
+ Wales | Liberal Democrats (ALDE) | 28,930
142
+ Wales | British National Party (*) | 7,655
143
+ Wales | Britain First (*) | 6,633
144
+ Wales | Socialist Labour Party (*) | 4,459
145
+ Wales | No2EU (*) | 2,803
146
+ Wales | Socialist Party of Great Britain (*) | 1,384