sapor 0.3.6

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 (343) 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/ie/2016-04-28_general-election-2016-candidate-details-csv_en.csv +552 -0
  25. data/data/ie/ireland_2016_to_psv.rb +138 -0
  26. data/data/no/2020-01-01_partifordeling_1_st_2017.csv +335 -0
  27. data/data/no/norway_2017_to_psv.rb +61 -0
  28. data/data/pl/2015-gl-lis-okr.csv +42 -0
  29. data/data/pl/poland_2015_to_psv.rb +79 -0
  30. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  31. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  32. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  33. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  34. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  35. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  36. data/data/uk/united_kingdom_2015.txt +651 -0
  37. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  38. data/data/uk/united_kingdom_2017.txt +651 -0
  39. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  40. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  41. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  42. data/lib/sapor.rb +147 -0
  43. data/lib/sapor/binomials_cache.rb +45 -0
  44. data/lib/sapor/combinations_distribution.rb +222 -0
  45. data/lib/sapor/denominators.rb +67 -0
  46. data/lib/sapor/dichotomies.rb +138 -0
  47. data/lib/sapor/dichotomy.rb +164 -0
  48. data/lib/sapor/first_past_the_post.rb +82 -0
  49. data/lib/sapor/largest_remainder.rb +118 -0
  50. data/lib/sapor/log4r_logger.rb +49 -0
  51. data/lib/sapor/log_facade.rb +40 -0
  52. data/lib/sapor/many_past_the_post.rb +113 -0
  53. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  54. data/lib/sapor/multi_district_proportional.rb +123 -0
  55. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  56. data/lib/sapor/number_formatter.rb +45 -0
  57. data/lib/sapor/options.rb +73 -0
  58. data/lib/sapor/poll.rb +282 -0
  59. data/lib/sapor/polychotomy.rb +200 -0
  60. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  61. data/lib/sapor/referendum_polychotomy.rb +165 -0
  62. data/lib/sapor/regional_data/area.rb +100 -0
  63. data/lib/sapor/regional_data/austria.rb +84 -0
  64. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  65. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  66. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  67. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  68. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  69. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  70. data/lib/sapor/regional_data/belgium.rb +97 -0
  71. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  72. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  73. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  74. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  75. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  76. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  77. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  78. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  79. data/lib/sapor/regional_data/catalonia-20171221-with-vox.psv +67 -0
  80. data/lib/sapor/regional_data/catalonia-20171221.psv +61 -0
  81. data/lib/sapor/regional_data/catalonia.rb +124 -0
  82. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  83. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  84. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  85. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  86. data/lib/sapor/regional_data/denmark.rb +128 -0
  87. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  88. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  89. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  90. data/lib/sapor/regional_data/estonia.rb +88 -0
  91. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  92. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  93. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  94. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  95. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  96. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  97. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  98. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  99. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  100. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  101. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  102. data/lib/sapor/regional_data/european_union_27_croatia.rb +83 -0
  103. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  104. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  105. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  106. data/lib/sapor/regional_data/european_union_27_france.rb +84 -0
  107. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  108. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  109. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  110. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  111. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  112. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  113. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  114. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  116. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  117. data/lib/sapor/regional_data/european_union_bulgaria.rb +82 -0
  118. data/lib/sapor/regional_data/european_union_croatia.rb +83 -0
  119. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  120. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  121. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  122. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  123. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  124. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  125. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  126. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  127. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  128. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  129. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  130. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  131. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  132. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  133. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  134. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  135. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  136. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  138. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  140. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  141. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  142. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  143. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  144. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  145. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  146. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  147. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  148. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  149. data/lib/sapor/regional_data/finland.rb +107 -0
  150. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  151. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  152. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  153. data/lib/sapor/regional_data/flanders.rb +115 -0
  154. data/lib/sapor/regional_data/france.rb +38 -0
  155. data/lib/sapor/regional_data/greece.rb +92 -0
  156. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  157. data/lib/sapor/regional_data/hungary.rb +116 -0
  158. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  159. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  160. data/lib/sapor/regional_data/iceland-20171028-with-j.psv +94 -0
  161. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  162. data/lib/sapor/regional_data/iceland.rb +149 -0
  163. data/lib/sapor/regional_data/ireland-20160226-2020-candidates.psv +322 -0
  164. data/lib/sapor/regional_data/ireland-20160226-2020.psv +344 -0
  165. data/lib/sapor/regional_data/ireland-20160226.psv +348 -0
  166. data/lib/sapor/regional_data/ireland.rb +165 -0
  167. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  168. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  169. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  170. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  171. data/lib/sapor/regional_data/latvia-20181006.psv +104 -0
  172. data/lib/sapor/regional_data/latvia.rb +111 -0
  173. data/lib/sapor/regional_data/luxembourg-20131020.psv +60 -0
  174. data/lib/sapor/regional_data/luxembourg-20181014.psv +59 -0
  175. data/lib/sapor/regional_data/luxembourg.rb +88 -0
  176. data/lib/sapor/regional_data/netherlands.rb +108 -0
  177. data/lib/sapor/regional_data/norway-20170911.psv +331 -0
  178. data/lib/sapor/regional_data/norway.rb +130 -0
  179. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  180. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  181. 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
  182. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  183. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  184. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  185. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  186. data/lib/sapor/regional_data/poland.rb +125 -0
  187. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  188. 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
  189. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  190. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  191. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  192. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  193. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  194. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  195. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  196. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  197. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  198. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  199. data/lib/sapor/regional_data/portugal.rb +101 -0
  200. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  201. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  202. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  203. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  204. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  205. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  206. data/lib/sapor/regional_data/slovakia.rb +81 -0
  207. data/lib/sapor/regional_data/slovenia.rb +114 -0
  208. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  209. data/lib/sapor/regional_data/spain.rb +136 -0
  210. data/lib/sapor/regional_data/sweden.rb +92 -0
  211. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  212. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  213. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  214. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  215. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  216. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  217. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  218. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  219. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  220. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  221. data/lib/sapor/regional_data/utopia.rb +66 -0
  222. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  223. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  224. data/lib/sapor/regional_data/wallonia.rb +112 -0
  225. data/lib/sapor/representatives_polychotomy.rb +338 -0
  226. data/lib/sapor/single_district_proportional.rb +75 -0
  227. data/sapor.gemspec +35 -0
  228. data/spec/integration/area_spec.rb +28 -0
  229. data/spec/integration/poll_spec.rb +112 -0
  230. data/spec/integration/sample.poll +8 -0
  231. data/spec/spec_helper.rb +31 -0
  232. data/spec/unit/area_spec.rb +115 -0
  233. data/spec/unit/austria_spec.rb +76 -0
  234. data/spec/unit/belgium_brussels_spec.rb +58 -0
  235. data/spec/unit/belgium_flanders_spec.rb +62 -0
  236. data/spec/unit/belgium_spec.rb +26 -0
  237. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  238. data/spec/unit/binomials_cache_spec.rb +34 -0
  239. data/spec/unit/catalonia_spec.rb +61 -0
  240. data/spec/unit/catalonia_with_vox_spec.rb +62 -0
  241. data/spec/unit/combinations_distribution_spec.rb +241 -0
  242. data/spec/unit/denmark_spec.rb +56 -0
  243. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  244. data/spec/unit/denmark_with_e_spec.rb +57 -0
  245. data/spec/unit/denmark_with_p_spec.rb +57 -0
  246. data/spec/unit/denominators_spec.rb +40 -0
  247. data/spec/unit/dichotomies_spec.rb +154 -0
  248. data/spec/unit/dichotomy_spec.rb +320 -0
  249. data/spec/unit/estonia_spec.rb +65 -0
  250. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  251. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  252. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  253. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  254. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  255. data/spec/unit/european_union_27_france_spec.rb +73 -0
  256. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  257. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  258. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  259. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  260. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  261. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  262. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  263. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  264. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  265. data/spec/unit/european_union_austria_spec.rb +61 -0
  266. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  267. data/spec/unit/european_union_croatia_spec.rb +59 -0
  268. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  269. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  270. data/spec/unit/european_union_denmark_spec.rb +61 -0
  271. data/spec/unit/european_union_estonia_spec.rb +93 -0
  272. data/spec/unit/european_union_finland_spec.rb +75 -0
  273. data/spec/unit/european_union_flanders_spec.rb +56 -0
  274. data/spec/unit/european_union_france_spec.rb +73 -0
  275. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  276. data/spec/unit/european_union_germany_spec.rb +90 -0
  277. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  278. data/spec/unit/european_union_greece_spec.rb +148 -0
  279. data/spec/unit/european_union_hungary_spec.rb +57 -0
  280. data/spec/unit/european_union_ireland_spec.rb +72 -0
  281. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  282. data/spec/unit/european_union_italy_spec.rb +69 -0
  283. data/spec/unit/european_union_latvia_spec.rb +76 -0
  284. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  285. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  286. data/spec/unit/european_union_malta_spec.rb +60 -0
  287. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  288. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  289. data/spec/unit/european_union_poland_spec.rb +69 -0
  290. data/spec/unit/european_union_portugal_spec.rb +77 -0
  291. data/spec/unit/european_union_romania_spec.rb +67 -0
  292. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  293. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  294. data/spec/unit/european_union_spain_spec.rb +129 -0
  295. data/spec/unit/european_union_sweden_spec.rb +89 -0
  296. data/spec/unit/finland_spec.rb +65 -0
  297. data/spec/unit/finland_with_sin_spec.rb +67 -0
  298. data/spec/unit/first_past_the_post_spec.rb +54 -0
  299. data/spec/unit/flanders_spec.rb +70 -0
  300. data/spec/unit/france_spec.rb +32 -0
  301. data/spec/unit/greece_spec.rb +118 -0
  302. data/spec/unit/hungary_spec.rb +132 -0
  303. data/spec/unit/iceland_spec.rb +57 -0
  304. data/spec/unit/iceland_with_j_spec.rb +58 -0
  305. data/spec/unit/ireland_2016_spec.rb +62 -0
  306. data/spec/unit/ireland_spec.rb +62 -0
  307. data/spec/unit/largest_remainder_spec.rb +79 -0
  308. data/spec/unit/latvia_spec.rb +62 -0
  309. data/spec/unit/luxembourg_spec.rb +55 -0
  310. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  311. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  312. data/spec/unit/netherlands_spec.rb +107 -0
  313. data/spec/unit/norway_spec.rb +69 -0
  314. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  315. data/spec/unit/number_formatter_spec.rb +173 -0
  316. data/spec/unit/poland_spec.rb +62 -0
  317. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  318. 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
  319. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  320. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  321. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  322. data/spec/unit/poll_spec.rb +110 -0
  323. data/spec/unit/portugal_spec.rb +66 -0
  324. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  325. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  326. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  327. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  328. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  329. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  330. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  331. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  332. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  333. data/spec/unit/slovakia_spec.rb +99 -0
  334. data/spec/unit/slovenia_spec.rb +80 -0
  335. data/spec/unit/spain_spec.rb +101 -0
  336. data/spec/unit/sweden_20140914_spec.rb +112 -0
  337. data/spec/unit/sweden_spec.rb +113 -0
  338. data/spec/unit/united_kingdom_spec.rb +65 -0
  339. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  340. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  341. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  342. data/spec/unit/wallonia_spec.rb +70 -0
  343. metadata +502 -0
@@ -0,0 +1,165 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2020 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 Ireland for the 2016 election.
22
+ #
23
+ class Ireland2016 < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'IE@2016'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def election_results_of_2016
35
+ if @election_results_of_2016.nil?
36
+ @election_results_of_2016, @candidates_of_2016 = load_capped_election_results(
37
+ 'ireland-20160226.psv'
38
+ )
39
+ end
40
+ @election_results_of_2016
41
+ end
42
+
43
+ def no_of_seats
44
+ seat_distribution.values.inject(:+)
45
+ end
46
+
47
+ def overall_election_results_of_2016
48
+ if @overall_election_results_of_2016.nil?
49
+ @overall_election_results_of_2016 = \
50
+ summarize_election_results(election_results_of_2016)
51
+ end
52
+ @overall_election_results_of_2016
53
+ end
54
+
55
+ def population_size
56
+ POPULATION_SIZE
57
+ end
58
+
59
+ def seat_distribution
60
+ SEAT_DISTRIBUTION_2016
61
+ end
62
+
63
+ def seats(simulation)
64
+ electoral_system.project(simulation)
65
+ end
66
+
67
+ private
68
+
69
+ FF_PARTY = 'Fianna Fáil'.freeze
70
+ FG_PARTY = 'Fine Gael'.freeze
71
+ GREEN_PARTY = 'Green Party/Comhaontas Glas'.freeze
72
+ LAB_PARTY = 'Labour Party'.freeze
73
+ SD_PARTY = 'Social Democrats'.freeze
74
+ SF_PARTY = 'Sinn Féin'.freeze
75
+
76
+ COALITIONS = [[FF_PARTY, FG_PARTY],
77
+ [FF_PARTY, GREEN_PARTY],
78
+ [FF_PARTY, GREEN_PARTY, LAB_PARTY],
79
+ [FF_PARTY, GREEN_PARTY, LAB_PARTY, SD_PARTY],
80
+ [FF_PARTY, LAB_PARTY],
81
+ [FF_PARTY, SF_PARTY],
82
+ [FG_PARTY],
83
+ [FG_PARTY, GREEN_PARTY],
84
+ [FG_PARTY, GREEN_PARTY, LAB_PARTY],
85
+ [FG_PARTY, GREEN_PARTY, LAB_PARTY, SD_PARTY],
86
+ [FG_PARTY, LAB_PARTY]].freeze
87
+
88
+ # Voter turnout on 26 February 2016
89
+ # https://en.wikipedia.org/wiki/2016_Irish_general_election
90
+ POPULATION_SIZE = 2_132_895
91
+
92
+ SEAT_DISTRIBUTION_2016 = { 'Carlow–Kilkenny' => 5, 'Cavan–Monaghan' => 4,
93
+ 'Clare' => 4, 'Cork East' => 4,
94
+ 'Cork North-Central' => 4, 'Cork North-West' => 3,
95
+ 'Cork South-Central' => 4, 'Cork South-West' => 3,
96
+ 'Donegal' => 5, 'Dublin Bay North' => 5,
97
+ 'Dublin Bay South' => 4, 'Dublin Central' => 3,
98
+ 'Dublin Fingal' => 5, 'Dublin Mid-West' => 4,
99
+ 'Dublin North-West' => 3, 'Dublin Rathdown' => 3,
100
+ 'Dublin South-Central' => 4, 'Dublin South-West' => 5,
101
+ 'Dublin West' => 4, 'Dún Laoghaire' => 4,
102
+ 'Galway East' => 3, 'Galway West' => 5, 'Kerry' => 5,
103
+ 'Kildare North' => 4, 'Kildare South' => 3,
104
+ 'Laois' => 3, 'Limerick City' => 4,
105
+ 'Limerick County' => 3, 'Longford–Westmeath' => 4,
106
+ 'Louth' => 5, 'Mayo' => 4, 'Meath East' => 3,
107
+ 'Meath West' => 3, 'Offaly' => 3, 'Roscommon–Galway' => 3,
108
+ 'Sligo–Leitrim' => 4, 'Tipperary' => 5,
109
+ 'Waterford' => 4, 'Wexford' => 5,
110
+ 'Wicklow' => 5 }.freeze
111
+
112
+ WEIGHTS = [ [1.0],
113
+ [0.646, 0.354],
114
+ [0.532, 0.316, 0.152],
115
+ [0.547, 0.303, 0.108, 0.041],
116
+ [0.532, 0.249, 0.138, 0.05, 0.032] ].freeze
117
+
118
+ def election_results_of_2016
119
+ if @election_results_of_2016.nil?
120
+ @election_results_of_2016, @candidates_of_2016 = load_capped_election_results(
121
+ 'ireland-20160226.psv'
122
+ )
123
+ end
124
+ @election_results_of_2016
125
+ end
126
+
127
+ def electoral_system
128
+ if @electoral_system.nil?
129
+ @electoral_system = ManyPastThePost.new( \
130
+ overall_election_results_of_2016, election_results_of_2016,
131
+ seat_distribution, @candidates_of_2016, WEIGHTS
132
+ )
133
+ end
134
+ @electoral_system
135
+ end
136
+ end
137
+
138
+ # Extension of Ireland with the 2020 seat distribution among the
139
+ # constituencies.
140
+ class Ireland < Ireland2016
141
+ def area_code
142
+ 'IE'
143
+ end
144
+
145
+ def election_results_of_2016
146
+ if @election_results_of_2016.nil?
147
+ @election_results_of_2016, @candidates_of_2016 = load_capped_election_results(
148
+ 'ireland-20160226-2020-candidates.psv'
149
+ )
150
+ end
151
+ @election_results_of_2016
152
+ end
153
+
154
+ def seat_distribution
155
+ SEAT_DISTRIBUTION_2020
156
+ end
157
+
158
+ private
159
+
160
+ SEAT_DISTRIBUTION_2020 = Ireland2016.instance.seat_distribution.merge(
161
+ 'Cavan–Monaghan' => 5, 'Dublin Central' => 4, 'Kildare South' => 4,
162
+ 'Laois–Offaly' => 5
163
+ ).reject { |k, _v| %w[Laois Offaly].include?(k) }.freeze
164
+ end
165
+ end
@@ -0,0 +1,109 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 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
+ # Source: "12.Saeimas vēlēšanas". Retrieved on 9 August 2018.
19
+ # URL: http://sv2014.cvk.lv/index_rez.html
20
+
21
+ # Changes:
22
+ # Added KPV LV as a copy of Latvijas Reģionu apvienība
23
+ # Added Kustība Par! as a copy of Vienotība
24
+ # Added Progresīvie as a copy of Sociāldemokrātiskā Partija “Saskaņa”
25
+
26
+ Kurzeme | Zaļo un Zemnieku savienība | 41,840
27
+ Kurzeme | Vienotība | 23,034
28
+ Kurzeme | Kustība Par! | 23,034
29
+ Kurzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 21,239
30
+ Kurzeme | Sociāldemokrātiskā Partija “Saskaņa” | 10,307
31
+ Kurzeme | Progresīvie | 10,307
32
+ Kurzeme | No sirds Latvijai | 8,369
33
+ Kurzeme | Latvijas Reģionu apvienība | 6,705
34
+ Kurzeme | KPV LV | 6,705
35
+ Kurzeme | Vienoti Latvijai | 980
36
+ Kurzeme | Latvijas attīstībai | 796
37
+ Kurzeme | Jaunā konservatīvā partija | 736
38
+ Kurzeme | Latvijas Krievu savienība | 575
39
+ Kurzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 308
40
+ Kurzeme | Politiskā partija Izaugsme | 121
41
+ Kurzeme | “Suverenitāte” | 111
42
+
43
+ Latgale | Sociāldemokrātiskā Partija “Saskaņa” | 41,884
44
+ Latgale | Progresīvie | 41,884
45
+ Latgale | Zaļo un Zemnieku savienība | 19,714
46
+ Latgale | Vienotība | 16,187
47
+ Latgale | Kustība Par! | 16,187
48
+ Latgale | No sirds Latvijai | 9,070
49
+ Latgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 5,442
50
+ Latgale | Latvijas Krievu savienība | 4,970
51
+ Latgale | Latvijas Reģionu apvienība | 4,025
52
+ Latgale | KPV LV | 4,025
53
+ Latgale | Vienoti Latvijai | 1,709
54
+ Latgale | Latvijas attīstībai | 712
55
+ Latgale | Jaunā konservatīvā partija | 650
56
+ Latgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 247
57
+ Latgale | “Suverenitāte” | 206
58
+ Latgale | Politiskā partija Izaugsme | 104
59
+
60
+ Rīga | Sociāldemokrātiskā Partija “Saskaņa” | 111,872
61
+ Rīga | Progresīvie | 111,872
62
+ Rīga | Vienotība | 65,359
63
+ Rīga | Kustība Par! | 65,359
64
+ Rīga | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 49,406
65
+ Rīga | Zaļo un Zemnieku savienība | 26,219
66
+ Rīga | Latvijas Reģionu apvienība | 24,238
67
+ Rīga | KPV LV | 24,238
68
+ Rīga | No sirds Latvijai | 17,414
69
+ Rīga | Latvijas Krievu savienība | 5,142
70
+ Rīga | Vienoti Latvijai | 3,618
71
+ Rīga | Jaunā konservatīvā partija | 2,414
72
+ Rīga | Latvijas attīstībai | 2,134
73
+ Rīga | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 406
74
+ Rīga | Politiskā partija Izaugsme | 368
75
+ Rīga | “Suverenitāte” | 287
76
+
77
+ Vidzeme | Vienotība | 65,359
78
+ Vidzeme | Kustība Par! | 65,359
79
+ Vidzeme | Zaļo un Zemnieku savienība | 54,699
80
+ Vidzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 51,261
81
+ Vidzeme | Sociāldemokrātiskā Partija “Saskaņa” | 31,413
82
+ Vidzeme | Progresīvie | 31,413
83
+ Vidzeme | Latvijas Reģionu apvienība | 19,069
84
+ Vidzeme | KPV LV | 19,069
85
+ Vidzeme | No sirds Latvijai | 18,362
86
+ Vidzeme | Latvijas attīstībai | 3,104
87
+ Vidzeme | Vienoti Latvijai | 2,962
88
+ Vidzeme | Latvijas Krievu savienība | 1,791
89
+ Vidzeme | Jaunā konservatīvā partija | 1,680
90
+ Vidzeme | Politiskā partija Izaugsme | 693
91
+ Vidzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 567
92
+ Vidzeme | “Suverenitāte” | 260
93
+
94
+ Zemgale | Zaļo un Zemnieku savienība | 35,738
95
+ Zemgale | Vienotība | 29,596
96
+ Zemgale | Kustība Par! | 29,596
97
+ Zemgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 24,219
98
+ Zemgale | Sociāldemokrātiskā Partija “Saskaņa” | 14,411
99
+ Zemgale | Progresīvie | 14,411
100
+ Zemgale | No sirds Latvijai | 9,306
101
+ Zemgale | Latvijas Reģionu apvienība | 6,775
102
+ Zemgale | KPV LV | 6,775
103
+ Zemgale | Latvijas Krievu savienība | 1,912
104
+ Zemgale | Vienoti Latvijai | 1,519
105
+ Zemgale | Latvijas attīstībai | 1,410
106
+ Zemgale | Jaunā konservatīvā partija | 909
107
+ Zemgale | Politiskā partija Izaugsme | 229
108
+ Zemgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 207
109
+ Zemgale | “Suverenitāte” | 169
@@ -0,0 +1,103 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 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
+ # Source: "12.Saeimas vēlēšanas". Retrieved on 9 August 2018.
19
+ # URL: http://sv2014.cvk.lv/index_rez.html
20
+
21
+ # Changes:
22
+ # Added KPV LV as a copy of Latvijas Reģionu apvienība
23
+ # Added Kustība Par! as a copy of Vienotība
24
+
25
+ Kurzeme | Zaļo un Zemnieku savienība | 41,840
26
+ Kurzeme | Vienotība | 23,034
27
+ Kurzeme | Kustība Par! | 23,034
28
+ Kurzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 21,239
29
+ Kurzeme | Sociāldemokrātiskā Partija “Saskaņa” | 10,307
30
+ Kurzeme | No sirds Latvijai | 8,369
31
+ Kurzeme | Latvijas Reģionu apvienība | 6,705
32
+ Kurzeme | KPV LV | 6,705
33
+ Kurzeme | Vienoti Latvijai | 980
34
+ Kurzeme | Latvijas attīstībai | 796
35
+ Kurzeme | Jaunā konservatīvā partija | 736
36
+ Kurzeme | Latvijas Krievu savienība | 575
37
+ Kurzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 308
38
+ Kurzeme | Politiskā partija Izaugsme | 121
39
+ Kurzeme | “Suverenitāte” | 111
40
+
41
+ Latgale | Sociāldemokrātiskā Partija “Saskaņa” | 41,884
42
+ Latgale | Zaļo un Zemnieku savienība | 19,714
43
+ Latgale | Vienotība | 16,187
44
+ Latgale | Kustība Par! | 16,187
45
+ Latgale | No sirds Latvijai | 9,070
46
+ Latgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 5,442
47
+ Latgale | Latvijas Krievu savienība | 4,970
48
+ Latgale | Latvijas Reģionu apvienība | 4,025
49
+ Latgale | KPV LV | 4,025
50
+ Latgale | Vienoti Latvijai | 1,709
51
+ Latgale | Latvijas attīstībai | 712
52
+ Latgale | Jaunā konservatīvā partija | 650
53
+ Latgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 247
54
+ Latgale | “Suverenitāte” | 206
55
+ Latgale | Politiskā partija Izaugsme | 104
56
+
57
+ Rīga | Sociāldemokrātiskā Partija “Saskaņa” | 111,872
58
+ Rīga | Vienotība | 65,359
59
+ Rīga | Kustība Par! | 65,359
60
+ Rīga | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 49,406
61
+ Rīga | Zaļo un Zemnieku savienība | 26,219
62
+ Rīga | Latvijas Reģionu apvienība | 24,238
63
+ Rīga | KPV LV | 24,238
64
+ Rīga | No sirds Latvijai | 17,414
65
+ Rīga | Latvijas Krievu savienība | 5,142
66
+ Rīga | Vienoti Latvijai | 3,618
67
+ Rīga | Jaunā konservatīvā partija | 2,414
68
+ Rīga | Latvijas attīstībai | 2,134
69
+ Rīga | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 406
70
+ Rīga | Politiskā partija Izaugsme | 368
71
+ Rīga | “Suverenitāte” | 287
72
+
73
+ Vidzeme | Vienotība | 65,359
74
+ Vidzeme | Kustība Par! | 65,359
75
+ Vidzeme | Zaļo un Zemnieku savienība | 54,699
76
+ Vidzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 51,261
77
+ Vidzeme | Sociāldemokrātiskā Partija “Saskaņa” | 31,413
78
+ Vidzeme | Latvijas Reģionu apvienība | 19,069
79
+ Vidzeme | KPV LV | 19,069
80
+ Vidzeme | No sirds Latvijai | 18,362
81
+ Vidzeme | Latvijas attīstībai | 3,104
82
+ Vidzeme | Vienoti Latvijai | 2,962
83
+ Vidzeme | Latvijas Krievu savienība | 1,791
84
+ Vidzeme | Jaunā konservatīvā partija | 1,680
85
+ Vidzeme | Politiskā partija Izaugsme | 693
86
+ Vidzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 567
87
+ Vidzeme | “Suverenitāte” | 260
88
+
89
+ Zemgale | Zaļo un Zemnieku savienība | 35,738
90
+ Zemgale | Vienotība | 29,596
91
+ Zemgale | Kustība Par! | 29,596
92
+ Zemgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 24,219
93
+ Zemgale | Sociāldemokrātiskā Partija “Saskaņa” | 14,411
94
+ Zemgale | No sirds Latvijai | 9,306
95
+ Zemgale | Latvijas Reģionu apvienība | 6,775
96
+ Zemgale | KPV LV | 6,775
97
+ Zemgale | Latvijas Krievu savienība | 1,912
98
+ Zemgale | Vienoti Latvijai | 1,519
99
+ Zemgale | Latvijas attīstībai | 1,410
100
+ Zemgale | Jaunā konservatīvā partija | 909
101
+ Zemgale | Politiskā partija Izaugsme | 229
102
+ Zemgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 207
103
+ Zemgale | “Suverenitāte” | 169
@@ -0,0 +1,97 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 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
+ # Source: "12.Saeimas vēlēšanas". Retrieved on 9 August 2018.
19
+ # URL: http://sv2014.cvk.lv/index_rez.html
20
+
21
+ # Changes:
22
+ # Added KPV LV as a copy of Latvijas Reģionu apvienība
23
+
24
+ Kurzeme | Zaļo un Zemnieku savienība | 41,840
25
+ Kurzeme | Vienotība | 23,034
26
+ Kurzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 21,239
27
+ Kurzeme | Sociāldemokrātiskā Partija “Saskaņa” | 10,307
28
+ Kurzeme | No sirds Latvijai | 8,369
29
+ Kurzeme | Latvijas Reģionu apvienība | 6,705
30
+ Kurzeme | KPV LV | 6,705
31
+ Kurzeme | Vienoti Latvijai | 980
32
+ Kurzeme | Latvijas attīstībai | 796
33
+ Kurzeme | Jaunā konservatīvā partija | 736
34
+ Kurzeme | Latvijas Krievu savienība | 575
35
+ Kurzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 308
36
+ Kurzeme | Politiskā partija Izaugsme | 121
37
+ Kurzeme | “Suverenitāte” | 111
38
+
39
+ Latgale | Sociāldemokrātiskā Partija “Saskaņa” | 41,884
40
+ Latgale | Zaļo un Zemnieku savienība | 19,714
41
+ Latgale | Vienotība | 16,187
42
+ Latgale | No sirds Latvijai | 9,070
43
+ Latgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 5,442
44
+ Latgale | Latvijas Krievu savienība | 4,970
45
+ Latgale | Latvijas Reģionu apvienība | 4,025
46
+ Latgale | KPV LV | 4,025
47
+ Latgale | Vienoti Latvijai | 1,709
48
+ Latgale | Latvijas attīstībai | 712
49
+ Latgale | Jaunā konservatīvā partija | 650
50
+ Latgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 247
51
+ Latgale | “Suverenitāte” | 206
52
+ Latgale | Politiskā partija Izaugsme | 104
53
+
54
+ Rīga | Sociāldemokrātiskā Partija “Saskaņa” | 111,872
55
+ Rīga | Vienotība | 65,359
56
+ Rīga | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 49,406
57
+ Rīga | Zaļo un Zemnieku savienība | 26,219
58
+ Rīga | Latvijas Reģionu apvienība | 24,238
59
+ Rīga | KPV LV | 24,238
60
+ Rīga | No sirds Latvijai | 17,414
61
+ Rīga | Latvijas Krievu savienība | 5,142
62
+ Rīga | Vienoti Latvijai | 3,618
63
+ Rīga | Jaunā konservatīvā partija | 2,414
64
+ Rīga | Latvijas attīstībai | 2,134
65
+ Rīga | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 406
66
+ Rīga | Politiskā partija Izaugsme | 368
67
+ Rīga | “Suverenitāte” | 287
68
+
69
+ Vidzeme | Vienotība | 65,359
70
+ Vidzeme | Zaļo un Zemnieku savienība | 54,699
71
+ Vidzeme | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 51,261
72
+ Vidzeme | Sociāldemokrātiskā Partija “Saskaņa” | 31,413
73
+ Vidzeme | Latvijas Reģionu apvienība | 19,069
74
+ Vidzeme | KPV LV | 19,069
75
+ Vidzeme | No sirds Latvijai | 18,362
76
+ Vidzeme | Latvijas attīstībai | 3,104
77
+ Vidzeme | Vienoti Latvijai | 2,962
78
+ Vidzeme | Latvijas Krievu savienība | 1,791
79
+ Vidzeme | Jaunā konservatīvā partija | 1,680
80
+ Vidzeme | Politiskā partija Izaugsme | 693
81
+ Vidzeme | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 567
82
+ Vidzeme | “Suverenitāte” | 260
83
+
84
+ Zemgale | Zaļo un Zemnieku savienība | 35,738
85
+ Zemgale | Vienotība | 29,596
86
+ Zemgale | Nacionālā apvienība „Visu Latvijai!”–„Tēvzemei un Brīvībai/LNNK” | 24,219
87
+ Zemgale | Sociāldemokrātiskā Partija “Saskaņa” | 14,411
88
+ Zemgale | No sirds Latvijai | 9,306
89
+ Zemgale | Latvijas Reģionu apvienība | 6,775
90
+ Zemgale | KPV LV | 6,775
91
+ Zemgale | Latvijas Krievu savienība | 1,912
92
+ Zemgale | Vienoti Latvijai | 1,519
93
+ Zemgale | Latvijas attīstībai | 1,410
94
+ Zemgale | Jaunā konservatīvā partija | 909
95
+ Zemgale | Politiskā partija Izaugsme | 229
96
+ Zemgale | Partija “Brīvība. Brīvs no bailēm, naida un dusmām” | 207
97
+ Zemgale | “Suverenitāte” | 169