mapFolding 0.17.1__tar.gz → 0.18.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 (323) hide show
  1. {mapfolding-0.17.1/mapFolding.egg-info → mapfolding-0.18.0}/PKG-INFO +11 -8
  2. {mapfolding-0.17.1 → mapfolding-0.18.0}/README.md +2 -2
  3. {mapfolding-0.17.1 → mapfolding-0.18.0}/easyRun/NOTcountingFolds.py +7 -11
  4. {mapfolding-0.17.1 → mapfolding-0.18.0}/easyRun/countFolds.py +11 -10
  5. {mapfolding-0.17.1 → mapfolding-0.18.0}/easyRun/meanders.py +6 -8
  6. mapfolding-0.18.0/mapFolding/__init__.py +38 -0
  7. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_hypothesis.py +189 -0
  8. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_p2d6.py +143 -0
  9. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/__init__.py +4 -0
  10. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200.py +369 -0
  11. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2001.py +694 -0
  12. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/211.py +514 -0
  13. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/2111.py +480 -0
  14. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214.py +511 -0
  15. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/2141.py +515 -0
  16. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/211.py +485 -0
  17. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/2111.py +442 -0
  18. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/211.py +313 -0
  19. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2111.py +343 -0
  20. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214.py +400 -0
  21. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/2141.py +497 -0
  22. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/211.py +463 -0
  23. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/2111.py +441 -0
  24. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266.py +35 -0
  25. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/2661.py +35 -0
  26. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200.py +382 -0
  27. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2001.py +630 -0
  28. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/211.py +488 -0
  29. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/2111.py +475 -0
  30. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214.py +473 -0
  31. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/2141.py +500 -0
  32. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +465 -0
  33. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +439 -0
  34. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/211.py +599 -0
  35. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2111.py +536 -0
  36. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214.py +506 -0
  37. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/2141.py +533 -0
  38. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/211.py +489 -0
  39. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/2111.py +474 -0
  40. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200.py +1186 -0
  41. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001.py +2158 -0
  42. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001Negative.py +2158 -0
  43. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200Negative.py +1186 -0
  44. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211.py +1397 -0
  45. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111.py +1291 -0
  46. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111Negative.py +1291 -0
  47. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211Negative.py +1397 -0
  48. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214.py +1240 -0
  49. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141.py +1420 -0
  50. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141Negative.py +1420 -0
  51. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214Negative.py +1240 -0
  52. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211.py +1366 -0
  53. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111.py +1274 -0
  54. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +1274 -0
  55. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +1366 -0
  56. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211.py +1186 -0
  57. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111.py +1186 -0
  58. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111Negative.py +1186 -0
  59. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211Negative.py +1186 -0
  60. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214.py +1102 -0
  61. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141.py +1422 -0
  62. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141Negative.py +1422 -0
  63. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214Negative.py +1102 -0
  64. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211.py +1240 -0
  65. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111.py +1228 -0
  66. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111Negative.py +1228 -0
  67. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211Negative.py +1240 -0
  68. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266.py +32 -0
  69. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661.py +1162 -0
  70. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661Negative.py +1162 -0
  71. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266Negative.py +32 -0
  72. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200.py +1186 -0
  73. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001.py +1926 -0
  74. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001Negative.py +1926 -0
  75. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200Negative.py +1186 -0
  76. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211.py +1291 -0
  77. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111.py +1176 -0
  78. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +1176 -0
  79. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +1291 -0
  80. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214.py +1228 -0
  81. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141.py +1324 -0
  82. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +1324 -0
  83. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +1228 -0
  84. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +1274 -0
  85. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +1038 -0
  86. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +1038 -0
  87. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +1274 -0
  88. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211.py +2158 -0
  89. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111.py +1926 -0
  90. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111Negative.py +1926 -0
  91. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211Negative.py +2158 -0
  92. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214.py +1422 -0
  93. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141.py +1364 -0
  94. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141Negative.py +1364 -0
  95. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214Negative.py +1422 -0
  96. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211.py +1420 -0
  97. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111.py +1324 -0
  98. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +1324 -0
  99. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +1420 -0
  100. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200.py +3133 -0
  101. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001.py +6039 -0
  102. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001Negative.py +6039 -0
  103. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200Negative.py +3133 -0
  104. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211.py +3527 -0
  105. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111.py +2300 -0
  106. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111Negative.py +2300 -0
  107. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211Negative.py +3527 -0
  108. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214.py +3597 -0
  109. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141.py +3317 -0
  110. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141Negative.py +3317 -0
  111. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214Negative.py +3597 -0
  112. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211.py +3161 -0
  113. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111.py +2877 -0
  114. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +2877 -0
  115. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +3161 -0
  116. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211.py +2981 -0
  117. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111.py +3055 -0
  118. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111Negative.py +3055 -0
  119. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211Negative.py +2981 -0
  120. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214.py +3221 -0
  121. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141.py +3988 -0
  122. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141Negative.py +3988 -0
  123. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214Negative.py +3221 -0
  124. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211.py +3652 -0
  125. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111.py +2863 -0
  126. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111Negative.py +2863 -0
  127. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211Negative.py +3652 -0
  128. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200.py +2485 -0
  129. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001.py +4566 -0
  130. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001Negative.py +4566 -0
  131. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200Negative.py +2485 -0
  132. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211.py +3006 -0
  133. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111.py +2485 -0
  134. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +2485 -0
  135. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +3006 -0
  136. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214.py +3304 -0
  137. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141.py +3015 -0
  138. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +3015 -0
  139. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +3304 -0
  140. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +2939 -0
  141. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +2589 -0
  142. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +2589 -0
  143. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +2939 -0
  144. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211.py +3899 -0
  145. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111.py +2996 -0
  146. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111Negative.py +2996 -0
  147. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211Negative.py +3899 -0
  148. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214.py +3223 -0
  149. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141.py +3020 -0
  150. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141Negative.py +3020 -0
  151. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214Negative.py +3223 -0
  152. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211.py +3250 -0
  153. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111.py +2667 -0
  154. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +2667 -0
  155. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +3250 -0
  156. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/measure.py +162 -0
  157. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/positionAnalysis.py +403 -0
  158. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/positionAnalysisPileRanges2d6.py +110 -0
  159. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/theExcluderBeast.py +640 -0
  160. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/toolkit.py +166 -0
  161. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/toolkitCSVsequences.py +188 -0
  162. mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/workBenchPatternFinder.py +284 -0
  163. mapfolding-0.18.0/mapFolding/_e/Z0Z_notes/knowledgeDump.py +214 -0
  164. mapfolding-0.18.0/mapFolding/_e/__init__.py +45 -0
  165. mapfolding-0.18.0/mapFolding/_e/_beDRY.py +547 -0
  166. mapfolding-0.18.0/mapFolding/_e/_dataDynamic.py +1164 -0
  167. mapfolding-0.18.0/mapFolding/_e/_measure.py +579 -0
  168. mapfolding-0.18.0/mapFolding/_e/_semiotics.py +363 -0
  169. mapfolding-0.18.0/mapFolding/_e/_theTypes.py +31 -0
  170. mapfolding-0.18.0/mapFolding/_e/algorithms/constraintPropagation.py +158 -0
  171. mapfolding-0.18.0/mapFolding/_e/algorithms/elimination.py +118 -0
  172. mapfolding-0.18.0/mapFolding/_e/algorithms/eliminationCrease.py +66 -0
  173. mapfolding-0.18.0/mapFolding/_e/algorithms/iff.py +584 -0
  174. mapfolding-0.18.0/mapFolding/_e/basecamp.py +89 -0
  175. mapfolding-0.18.0/mapFolding/_e/dataBaskets.py +123 -0
  176. mapfolding-0.18.0/mapFolding/_e/easyRun/eliminateFolds.py +72 -0
  177. mapfolding-0.18.0/mapFolding/_e/easyRun/pinning.py +62 -0
  178. mapfolding-0.18.0/mapFolding/_e/filters.py +384 -0
  179. mapfolding-0.18.0/mapFolding/_e/pin2/344/270/212nDimensions.py +882 -0
  180. mapfolding-0.18.0/mapFolding/_e/pin2/344/270/212nDimensionsAnnex.py +551 -0
  181. mapfolding-0.18.0/mapFolding/_e/pin2/344/270/212nDimensionsByCrease.py +190 -0
  182. mapfolding-0.18.0/mapFolding/_e/pin2/344/270/212nDimensionsByDomain.py +459 -0
  183. mapfolding-0.18.0/mapFolding/_e/pinIt.py +436 -0
  184. mapfolding-0.18.0/mapFolding/_semiotics.py +42 -0
  185. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/_theSSOT.py +11 -56
  186. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/_theTypes.py +52 -67
  187. mapfolding-0.18.0/mapFolding/algorithms/__init__.py +1 -0
  188. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/matrixMeandersNumPyndas.py +18 -18
  189. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/oeisIDbyFormula.py +4 -4
  190. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py +3 -3
  191. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/basecamp.py +11 -80
  192. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/beDRY.py +107 -111
  193. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/dataBaskets.py +0 -56
  194. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/filesystemToolkit.py +15 -11
  195. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/oeis.py +17 -16
  196. mapfolding-0.18.0/mapFolding/py.typed +0 -0
  197. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py +2 -2
  198. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py +0 -1
  199. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py +8 -10
  200. mapfolding-0.18.0/mapFolding/someAssemblyRequired/A007822/__init__.py +0 -0
  201. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/RecipeJob.py +5 -5
  202. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +5 -2
  203. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +9 -11
  204. mapfolding-0.18.0/mapFolding/someAssemblyRequired/mapFoldingModules/__init__.py +0 -0
  205. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py +2 -1
  206. mapfolding-0.18.0/mapFolding/someAssemblyRequired/meanders/__init__.py +0 -0
  207. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/transformationTools.py +1 -1
  208. mapfolding-0.18.0/mapFolding/tests/Z0Z_test_e_excluder.py +155 -0
  209. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/tests/conftest.py +193 -314
  210. mapfolding-0.18.0/mapFolding/tests/dataSamples/A001417.py +455 -0
  211. mapfolding-0.18.0/mapFolding/tests/dataSamples/__init__.py +1 -0
  212. mapfolding-0.18.0/mapFolding/tests/dataSamples/measurementData.py +1818 -0
  213. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain3_2_/351/246/226/344/270/200_/351/246/226/351/233/266/344/270/200.py +17 -0
  214. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain3_/351/246/226/344/270/200.py +17 -0
  215. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain5_4.py +17 -0
  216. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain6_5.py +17 -0
  217. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain6_7_5_4.py +17 -0
  218. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain7_6.py +17 -0
  219. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain/351/246/226/344/272/214_/351/246/226/351/233/266/344/270/200/344/272/214.py +17 -0
  220. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain/351/246/226/344/272/214_/351/246/226/351/233/266/344/272/214_/351/246/226/351/233/266/344/270/200/344/272/214_/351/246/226/344/270/200/344/272/214.py +17 -0
  221. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/270/200/344/272/214_/351/246/226/344/270/200/344/272/214.py +15 -0
  222. mapfolding-0.18.0/mapFolding/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/272/214_/351/246/226/344/272/214.py +15 -0
  223. mapfolding-0.18.0/mapFolding/tests/dataSamples/semioticsData.py +135 -0
  224. mapfolding-0.18.0/mapFolding/tests/test_computations.py +271 -0
  225. mapfolding-0.18.0/mapFolding/tests/test_e_computations.py +42 -0
  226. mapfolding-0.18.0/mapFolding/tests/test_e_dataDynamic.py +189 -0
  227. mapfolding-0.18.0/mapFolding/tests/test_e_measurements.py +257 -0
  228. mapfolding-0.18.0/mapFolding/tests/test_e_pinning.py +61 -0
  229. mapfolding-0.18.0/mapFolding/tests/test_e_semiotics.py +128 -0
  230. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/tests/test_filesystem.py +39 -17
  231. mapfolding-0.17.1/mapFolding/tests/test_other.py → mapfolding-0.18.0/mapFolding/tests/test_parameterValidation.py +3 -3
  232. mapfolding-0.17.1/mapFolding/tests/test_tasks.py → mapfolding-0.18.0/mapFolding/tests/test_taskDivisions.py +42 -23
  233. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/zCuzDocStoopid/makeDocstrings.py +3 -2
  234. {mapfolding-0.17.1 → mapfolding-0.18.0/mapFolding.egg-info}/PKG-INFO +11 -8
  235. mapfolding-0.18.0/mapFolding.egg-info/SOURCES.txt +308 -0
  236. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding.egg-info/requires.txt +6 -2
  237. {mapfolding-0.17.1 → mapfolding-0.18.0}/pyproject.toml +20 -102
  238. mapfolding-0.17.1/easyRun/eliminateFolds.py +0 -60
  239. mapfolding-0.17.1/mapFolding/__init__.py +0 -50
  240. mapfolding-0.17.1/mapFolding/algorithms/constraintPropagation.py +0 -184
  241. mapfolding-0.17.1/mapFolding/algorithms/elimination.py +0 -131
  242. mapfolding-0.17.1/mapFolding/algorithms/eliminationCount.py +0 -26
  243. mapfolding-0.17.1/mapFolding/algorithms/eliminationPinned.py +0 -35
  244. mapfolding-0.17.1/mapFolding/algorithms/iff.py +0 -206
  245. mapfolding-0.17.1/mapFolding/algorithms/patternFinder.py +0 -280
  246. mapfolding-0.17.1/mapFolding/algorithms/pinning2Dn.py +0 -345
  247. mapfolding-0.17.1/mapFolding/algorithms/pinning2DnAnnex.py +0 -43
  248. mapfolding-0.17.1/mapFolding/tests/test_computations.py +0 -217
  249. mapfolding-0.17.1/mapFolding/tests/verify.py +0 -323
  250. mapfolding-0.17.1/mapFolding.egg-info/SOURCES.txt +0 -115
  251. {mapfolding-0.17.1 → mapfolding-0.18.0}/LICENSE +0 -0
  252. {mapfolding-0.17.1 → mapfolding-0.18.0}/easyRun/__init__.py +0 -0
  253. {mapfolding-0.17.1 → mapfolding-0.18.0}/easyRun/generateAllModules.py +0 -0
  254. {mapfolding-0.17.1/mapFolding/someAssemblyRequired/A007822 → mapfolding-0.18.0/mapFolding/_e/Z0Z_analysisPython/exclusionData}/__init__.py +0 -0
  255. {mapfolding-0.17.1/mapFolding/someAssemblyRequired/mapFoldingModules → mapfolding-0.18.0/mapFolding/_e/Z0Z_notes}/__init__.py +0 -0
  256. {mapfolding-0.17.1/mapFolding → mapfolding-0.18.0/mapFolding/_e}/algorithms/__init__.py +0 -0
  257. {mapfolding-0.17.1/mapFolding/someAssemblyRequired/meanders → mapfolding-0.18.0/mapFolding/_e/dataRaw}/__init__.py +0 -0
  258. /mapfolding-0.17.1/mapFolding/py.typed → /mapfolding-0.18.0/mapFolding/_e/easyRun/__init__.py +0 -0
  259. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/A086345.py +0 -0
  260. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/daoOfMapFolding.py +0 -0
  261. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/matrixMeanders.py +0 -0
  262. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/algorithms/symmetricFolds.py +0 -0
  263. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/A000682facts.py +0 -0
  264. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/A005316facts.py +0 -0
  265. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/A086345Wu.py +0 -0
  266. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/__init__.py +0 -0
  267. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/flattened.py +0 -0
  268. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/hunterNumba.py +0 -0
  269. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/irvineJavaPort.py +0 -0
  270. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/jaxCount.py +0 -0
  271. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/jobsCompleted/[2x19]/p2x19.py +0 -0
  272. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/jobsCompleted/__init__.py +0 -0
  273. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/jobsCompleted/p2x19/p2x19.py +0 -0
  274. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/lunnonNumpy.py +0 -0
  275. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/lunnonWhile.py +0 -0
  276. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/matrixMeandersAnalysis/__init__.py +0 -0
  277. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/matrixMeandersAnalysis/signatures.py +0 -0
  278. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/A005316JavaPort.py +0 -0
  279. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/A005316imperative.py +0 -0
  280. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/A005316primitiveOptimized.py +0 -0
  281. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/A005316redis.py +0 -0
  282. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/A005316write2disk.py +0 -0
  283. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/matrixMeanders64retired.py +0 -0
  284. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/meandersDumpingGround/matrixMeandersSlicePop.py +0 -0
  285. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/rotatedEntryPoint.py +0 -0
  286. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/reference/total_countPlus1vsPlusN.py +0 -0
  287. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py +0 -0
  288. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/A007822/_asynchronousAnnex.py +0 -0
  289. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py +0 -0
  290. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py +0 -0
  291. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/__init__.py +0 -0
  292. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/_toolIfThis.py +0 -0
  293. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/_toolkitContainers.py +0 -0
  294. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/getLLVMforNoReason.py +0 -0
  295. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/infoBooth.py +0 -0
  296. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/makingModules_count.py +0 -0
  297. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py +0 -0
  298. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py +0 -0
  299. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/toolkitMakeModules.py +0 -0
  300. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/someAssemblyRequired/toolkitNumba.py +0 -0
  301. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/__init__.py +0 -0
  302. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/algorithm.py +0 -0
  303. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/asynchronous.py +0 -0
  304. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/initializeState.py +0 -0
  305. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/theorem2.py +0 -0
  306. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/theorem2Numba.py +0 -0
  307. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/A007822/theorem2Trimmed.py +0 -0
  308. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/__init__.py +0 -0
  309. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/countParallelNumba.py +0 -0
  310. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/daoOfMapFoldingNumba.py +0 -0
  311. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/initializeState.py +0 -0
  312. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/meanders/__init__.py +0 -0
  313. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/meanders/bigInt.py +0 -0
  314. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/theorem2.py +0 -0
  315. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/theorem2Numba.py +0 -0
  316. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/syntheticModules/theorem2Trimmed.py +0 -0
  317. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/tests/__init__.py +0 -0
  318. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/tests/test_oeis.py +0 -0
  319. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding/zCuzDocStoopid/__init__.py +0 -0
  320. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding.egg-info/dependency_links.txt +0 -0
  321. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding.egg-info/entry_points.txt +0 -0
  322. {mapfolding-0.17.1 → mapfolding-0.18.0}/mapFolding.egg-info/top_level.txt +0 -0
  323. {mapfolding-0.17.1 → mapfolding-0.18.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapFolding
3
- Version: 0.17.1
3
+ Version: 0.18.0
4
4
  Summary: Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations, and analyze computational states.
5
5
  Author-email: Hunter Hogan <HunterHogan@pm.me>
6
6
  License: CC-BY-NC-4.0
@@ -8,14 +8,13 @@ Project-URL: Donate, https://www.patreon.com/integrated
8
8
  Project-URL: Homepage, https://github.com/hunterhogan/mapFolding
9
9
  Project-URL: Issues, https://github.com/hunterhogan/mapFolding/issues
10
10
  Project-URL: Repository, https://github.com/hunterhogan/mapFolding.git
11
- Keywords: A000136,A000560,A000682,A001010,A001011,A001415,A001416,A001417,A001418,A005315,A005316,A007822,A178961,A195646,A223094,A259702,A301620,AST manipulation,JIT compilation,Numba optimization,OEIS,Python optimization,abstract syntax tree,algorithmic combinatorics,algorithmic optimization,arch configurations,automated code generation,bit-packed arrays,bitwise state machines,cache-efficient algorithms,closed meandric numbers,code generation,code optimization,code synthesis,code transformation,codon optimization,combinatorial computing,combinatorial enumeration,combinatorial geometry,combinatorial mathematics,combinatorial problem solver,combinatorics,computational combinatorics,computational geometry,crossing patterns,curve crossings,dataclass transformation,discrete mathematics,dynamic compilation,enumerative combinatorics,folding pattern enumeration,folding problems,high-performance computing,integer sequences,just-in-time compilation,kernel optimization,labeled stamp folding,low-level computation,map folding,mapFolding,mathematical algorithms,mathematical modeling,mathematical optimization,mathematical patterns,mathematical software,mathematical tool,mathematical visualization,meander enumeration,meanders,meandric systems,memory-efficient enumeration,metaprogramming,numerical algorithms,numerical computation,open meandric systems,paper folding mathematics,parallel computing,pattern recognition,performance optimization,permutation patterns,permutations,post-setup optimization,pyproject,scientific computing,semi-meanders,sequence analysis,sequence calculator,sequence enumeration,sequence explorer,sequence generation,source code analysis,stamp folding,symbolic computation,symmetric foldings,topological combinatorics,topological patterns,typed Python
11
+ Keywords: A001415,A001417,Abstract Syntax Tree,AST,combinatorial geometry,combinatorics,computational combinatorics,computational geometry,map folding,meanders,OEIS,stamp folding
12
12
  Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Environment :: Console
14
14
  Classifier: Intended Audience :: Developers
15
15
  Classifier: Intended Audience :: Education
16
16
  Classifier: Intended Audience :: Science/Research
17
17
  Classifier: Natural Language :: English
18
- Classifier: Operating System :: MacOS
19
18
  Classifier: Operating System :: OS Independent
20
19
  Classifier: Operating System :: POSIX :: Linux
21
20
  Classifier: Programming Language :: Python
@@ -23,6 +22,7 @@ Classifier: Programming Language :: Python :: 3
23
22
  Classifier: Programming Language :: Python :: 3 :: Only
24
23
  Classifier: Programming Language :: Python :: 3.12
25
24
  Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Programming Language :: Python :: 3.14
26
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
27
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
28
28
  Classifier: Topic :: Scientific/Engineering :: Mathematics
@@ -31,17 +31,19 @@ Classifier: Topic :: Software Development :: Compilers
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
32
32
  Classifier: Topic :: Software Development :: Pre-processors
33
33
  Classifier: Typing :: Typed
34
- Requires-Python: <3.14,>=3.12
34
+ Requires-Python: >=3.12
35
35
  Description-Content-Type: text/markdown
36
36
  License-File: LICENSE
37
37
  Requires-Dist: astToolkit>=0.9.0
38
38
  Requires-Dist: cytoolz
39
39
  Requires-Dist: gmpy2
40
- Requires-Dist: hunterMakesPy>=0.3.0
40
+ Requires-Dist: hunterMakesPy>=0.3.2
41
41
  Requires-Dist: more_itertools
42
42
  Requires-Dist: numpy
43
43
  Requires-Dist: platformdirs
44
+ Requires-Dist: tqdm
44
45
  Provides-Extra: development
46
+ Requires-Dist: gmpy2-stubs; extra == "development"
45
47
  Requires-Dist: ipykernel; extra == "development"
46
48
  Requires-Dist: ipywidgets; extra == "development"
47
49
  Requires-Dist: memray; sys_platform == "linux" and extra == "development"
@@ -51,8 +53,9 @@ Requires-Dist: setuptools-scm; extra == "development"
51
53
  Provides-Extra: numba
52
54
  Requires-Dist: numba; extra == "numba"
53
55
  Requires-Dist: numba_progress; extra == "numba"
56
+ Provides-Extra: ortools
57
+ Requires-Dist: ortools; extra == "ortools"
54
58
  Provides-Extra: pandas
55
- Requires-Dist: ortools; extra == "pandas"
56
59
  Requires-Dist: pandas; extra == "pandas"
57
60
  Requires-Dist: pyarrow; extra == "pandas"
58
61
  Provides-Extra: sympy
@@ -91,7 +94,7 @@ There are cool and powerful tools in here, but as of 2025 September 17, I am dis
91
94
  3. The directory "mapFolding/syntheticModules" has code that is generated by the transformation tools.
92
95
  4. Transformation functions are in "mapFolding/someAssemblyRequired."
93
96
  5. The directory "mapFolding/reference" has "reference" materials.
94
- 6. "mapFolding/tests" has the tests, and I have tried to make it easy for you to add _your_ versions of the algorithms to the tests. Is it actually easy? I'll say it this way: if you were to create your own subclass of `ast.AST` it would be impossible for you to add your subclass to all of the `ast` module tests with just a few lines of code. In contrast, it is possible to fully test your algorithm with in my tests by adding between three and 25 lines of code. So, yeah, it's easy.
97
+ 6. "mapFolding/tests" has the tests, and I have tried to make it easy for you to add _your_ versions of the algorithms to the tests. Is it actually easy? I'll say it this way: if you were to create your own subclass of `ast.AST` it would be impossible for you to add your subclass to all of the `ast` module tests with just a few lines of code. In contrast, it is possible to fully test your algorithm with my tests by adding between 3 and 25 lines of code. So, yeah, it's easy.
95
98
 
96
99
  ## Math and programming
97
100
 
@@ -102,4 +105,4 @@ I'm not a mathematician. I don't have training in or professional experience as
102
105
  [![Static Badge](https://img.shields.io/badge/2011_August-Homeless_since-blue?style=flat)](https://HunterThinks.com/support)
103
106
  [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC3Gx7kz61009NbhpRtPP7tw)](https://www.youtube.com/@HunterHogan)
104
107
 
105
- [![CC-BY-NC-4.0](https://raw.githubusercontent.com/hunterhogan/mapFolding/refs/heads/main/CC-BY-NC-4.0.png)](https://creativecommons.org/licenses/by-nc/4.0/)
108
+ [![CC-BY-NC-4.0](https://raw.githubusercontent.com/hunterhogan/mapFolding/refs/heads/main/.github/CC-BY-NC-4.0.png)](https://creativecommons.org/licenses/by-nc/4.0/)
@@ -20,7 +20,7 @@ There are cool and powerful tools in here, but as of 2025 September 17, I am dis
20
20
  3. The directory "mapFolding/syntheticModules" has code that is generated by the transformation tools.
21
21
  4. Transformation functions are in "mapFolding/someAssemblyRequired."
22
22
  5. The directory "mapFolding/reference" has "reference" materials.
23
- 6. "mapFolding/tests" has the tests, and I have tried to make it easy for you to add _your_ versions of the algorithms to the tests. Is it actually easy? I'll say it this way: if you were to create your own subclass of `ast.AST` it would be impossible for you to add your subclass to all of the `ast` module tests with just a few lines of code. In contrast, it is possible to fully test your algorithm with in my tests by adding between three and 25 lines of code. So, yeah, it's easy.
23
+ 6. "mapFolding/tests" has the tests, and I have tried to make it easy for you to add _your_ versions of the algorithms to the tests. Is it actually easy? I'll say it this way: if you were to create your own subclass of `ast.AST` it would be impossible for you to add your subclass to all of the `ast` module tests with just a few lines of code. In contrast, it is possible to fully test your algorithm with my tests by adding between 3 and 25 lines of code. So, yeah, it's easy.
24
24
 
25
25
  ## Math and programming
26
26
 
@@ -31,4 +31,4 @@ I'm not a mathematician. I don't have training in or professional experience as
31
31
  [![Static Badge](https://img.shields.io/badge/2011_August-Homeless_since-blue?style=flat)](https://HunterThinks.com/support)
32
32
  [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC3Gx7kz61009NbhpRtPP7tw)](https://www.youtube.com/@HunterHogan)
33
33
 
34
- [![CC-BY-NC-4.0](https://raw.githubusercontent.com/hunterhogan/mapFolding/refs/heads/main/CC-BY-NC-4.0.png)](https://creativecommons.org/licenses/by-nc/4.0/)
34
+ [![CC-BY-NC-4.0](https://raw.githubusercontent.com/hunterhogan/mapFolding/refs/heads/main/.github/CC-BY-NC-4.0.png)](https://creativecommons.org/licenses/by-nc/4.0/)
@@ -1,6 +1,6 @@
1
1
  # ruff: noqa
2
2
  from collections import ChainMap
3
- from mapFolding import dictionaryOEIS, dictionaryOEISMapFolding
3
+ from mapFolding import ansiColorReset, ansiColors, dictionaryOEIS, dictionaryOEISMapFolding
4
4
  from mapFolding.basecamp import NOTcountingFolds
5
5
  import sys
6
6
  import time
@@ -11,11 +11,11 @@ if __name__ == '__main__':
11
11
  def _write() -> None:
12
12
  sys.stdout.write(
13
13
  f"{(match:=countTotal == dictionaryONE[oeisID]['valuesKnown'][n])}\t"
14
- f"\033[{(not match)*91}m"
14
+ f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
15
15
  f"{n}\t"
16
16
  f"{countTotal}\t"
17
17
  f"{time.perf_counter() - timeStart:.2f}\t"
18
- "\033[0m\n"
18
+ f"{ansiColorReset}\n"
19
19
  )
20
20
 
21
21
  CPUlimit: bool | float | int | None = -2
@@ -26,14 +26,10 @@ if __name__ == '__main__':
26
26
 
27
27
  flow = 'algorithm'
28
28
  flow = 'theorem2'
29
- flow = 'eliminationParallel'
30
- flow = 'elimination_combi'
31
- flow = 'constraintPropagation'
32
- flow = 'elimination'
33
29
 
34
- sys.stdout.write(f"\033[{30+int(oeisID,11)%8};{40+int(oeisID,12)%8}m{oeisID} ")
35
- sys.stdout.write(f"\033[{31+int(flow,35)%7};{41+int(flow,36)%7}m{flow}")
36
- sys.stdout.write("\033[0m\n")
30
+ sys.stdout.write(f"{ansiColors[int(oeisID,36)%len(ansiColors)]}{oeisID} ")
31
+ sys.stdout.write(f"{ansiColors[int(flow,36)%len(ansiColors)]}{flow}")
32
+ sys.stdout.write(ansiColorReset + '\n')
37
33
 
38
34
  nList: list[int] = []
39
35
  nList.extend(range(7, 11))
@@ -49,6 +45,6 @@ if __name__ == '__main__':
49
45
  _write()
50
46
 
51
47
  r"""
52
- deactivate && C:\apps\mapFolding\.vtail\Scripts\activate.bat && title good && cls
48
+
53
49
  title running && start "working" /B /HIGH /wait py -X faulthandler=0 -X tracemalloc=0 -X frozen_modules=on easyRun\NOTcountingFolds.py & title I'm done
54
50
  """
@@ -1,7 +1,8 @@
1
1
  # ruff: noqa
2
2
  # pyright: basic
3
3
  from collections.abc import Sequence
4
- from mapFolding import countFolds, dictionaryOEISMapFolding
4
+ from mapFolding import ansiColorReset, ansiColors, dictionaryOEISMapFolding
5
+ from mapFolding.basecamp import countFolds
5
6
  from os import PathLike
6
7
  from pathlib import PurePath
7
8
  import sys
@@ -11,12 +12,12 @@ if __name__ == '__main__':
11
12
  def _write() -> None:
12
13
  sys.stdout.write(
13
14
  f"{(match:=foldsTotal == dictionaryOEISMapFolding[oeisID]['valuesKnown'][n])}\t"
14
- f"\033[{(not match)*91}m"
15
+ f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
15
16
  f"{n}\t"
16
17
  f"{foldsTotal}\t"
17
18
  f"{dictionaryOEISMapFolding[oeisID]['valuesKnown'][n]}\t"
18
19
  f"{time.perf_counter() - timeStart:.2f}\t"
19
- "\033[0m\n"
20
+ f"{ansiColorReset}\n"
20
21
  )
21
22
 
22
23
  listDimensions: Sequence[int] | None = None
@@ -24,23 +25,23 @@ if __name__ == '__main__':
24
25
  computationDivisions: int | str | None = None
25
26
  CPUlimit: bool | float | int | None = None
26
27
  # mapShape: tuple[int, ...] | None = None
27
- flow = 'daoOfMapFolding'
28
28
  flow = 'numba'
29
29
  flow = 'theorem2'
30
30
  flow = 'theorem2Numba'
31
+ flow = 'daoOfMapFolding'
31
32
 
32
33
  oeisID: str = 'A195646'
34
+ oeisID: str = 'A001416'
33
35
  oeisID: str = 'A001418'
36
+ oeisID: str = 'A001417'
34
37
  oeisID: str = 'A000136'
35
- oeisID: str = 'A001416'
36
38
  oeisID: str = 'A001415'
37
- oeisID: str = 'A001417'
38
39
 
39
- sys.stdout.write(f"\033[{30+int(oeisID,11)%8};{40+int(oeisID,12)%8}m{oeisID} ")
40
- sys.stdout.write(f"\033[{31+int(flow,35)%7};{41+int(flow,36)%7}m{flow}")
41
- sys.stdout.write("\033[0m\n")
40
+ sys.stdout.write(f"{ansiColors[int(oeisID,36)%len(ansiColors)]}{oeisID} ")
41
+ sys.stdout.write(f"{ansiColors[int(flow,36)%len(ansiColors)]}{flow}")
42
+ sys.stdout.write(ansiColorReset + '\n')
42
43
 
43
- for n in range(6,7):
44
+ for n in range(2):
44
45
 
45
46
  mapShape: tuple[int, ...] = dictionaryOEISMapFolding[oeisID]['getMapShape'](n)
46
47
 
@@ -1,26 +1,24 @@
1
1
  # ruff: noqa
2
2
  # pyright: basic
3
- from mapFolding import dictionaryOEIS
3
+ from mapFolding import ansiColorReset, ansiColors, dictionaryOEIS
4
4
  from mapFolding.basecamp import NOTcountingFolds
5
5
  import gc
6
- import multiprocessing
7
6
  import sys
8
7
  import time
9
8
  import warnings
10
9
 
11
10
  def write() -> None:
12
11
  sys.stdout.write(
13
- f"{(booleanColor:=(countTotal == dictionaryOEIS[oeisID]['valuesKnown'][n]))}\t"
14
- f"\033[{(not booleanColor)*91}m"
12
+ f"{(match:=(countTotal == dictionaryOEIS[oeisID]['valuesKnown'][n]))}\t"
13
+ f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
15
14
  f"{n}\t"
16
15
  # f"{countTotal}\t"
17
16
  # f"{dictionaryOEISMeanders[oeisID]['valuesKnown'][n]}\t"
18
17
  f"{time.perf_counter() - timeStart:.2f}\t"
19
- "\033[0m\n"
18
+ f"{ansiColorReset}\n"
20
19
  )
21
20
 
22
21
  if __name__ == '__main__':
23
- multiprocessing.set_start_method('spawn')
24
22
  if sys.version_info >= (3, 14):
25
23
  warnings.filterwarnings("ignore", category=FutureWarning)
26
24
 
@@ -34,7 +32,7 @@ if __name__ == '__main__':
34
32
  ]:
35
33
  sys.stdout.write(f"\n{oeisID}\n")
36
34
 
37
- """TODO Identifiers. improve
35
+ """# TODO Identifiers. improve
38
36
  "generate up to four targets."
39
37
  1. Adding a new loop.
40
38
  2. Dragging up a loop end.
@@ -63,7 +61,7 @@ if __name__ == '__main__':
63
61
  sys.stdout.write(f"{n} {countTotal} {time.perf_counter() - timeStart:.2f}\n")
64
62
 
65
63
  r"""
66
- deactivate && C:\apps\mapFolding\.vtail\Scripts\activate.bat && title good && cls
64
+
67
65
  title running && start "meanders" /B /HIGH /wait py -X faulthandler=0 -X tracemalloc=0 -X frozen_modules=on easyRun\meanders.py && title I'm done || title Error
68
66
 
69
67
  """
@@ -0,0 +1,38 @@
1
+ """Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations, and analyze computational states."""
2
+
3
+ # isort: split
4
+ from mapFolding._semiotics import (
5
+ ansiColorReset as ansiColorReset, ansiColors as ansiColors, decreasing as decreasing, inclusive as inclusive,
6
+ zeroIndexed as zeroIndexed)
7
+
8
+ # isort: split
9
+ from mapFolding._theTypes import (
10
+ Array1DElephino as Array1DElephino, Array1DFoldsTotal as Array1DFoldsTotal, Array1DLeavesTotal as Array1DLeavesTotal,
11
+ Array2DLeavesTotal as Array2DLeavesTotal, Array3DLeavesTotal as Array3DLeavesTotal, axisOfLength as axisOfLength,
12
+ DatatypeElephino as DatatypeElephino, DatatypeFoldsTotal as DatatypeFoldsTotal,
13
+ DatatypeLeavesTotal as DatatypeLeavesTotal, MetadataOEISid as MetadataOEISid,
14
+ MetadataOEISidManuallySet as MetadataOEISidManuallySet, MetadataOEISidMapFolding as MetadataOEISidMapFolding,
15
+ MetadataOEISidMapFoldingManuallySet as MetadataOEISidMapFoldingManuallySet, NumPyElephino as NumPyElephino,
16
+ NumPyFoldsTotal as NumPyFoldsTotal, NumPyIntegerType as NumPyIntegerType, NumPyLeavesTotal as NumPyLeavesTotal,
17
+ ShapeArray as ShapeArray, ShapeSlicer as ShapeSlicer)
18
+
19
+ # isort: split
20
+ from mapFolding._theSSOT import packageSettings as packageSettings
21
+
22
+ # isort: split
23
+ from mapFolding.beDRY import (
24
+ defineProcessorLimit as defineProcessorLimit, getConnectionGraph as getConnectionGraph,
25
+ getLeavesTotal as getLeavesTotal, getTaskDivisions as getTaskDivisions, makeDataContainer as makeDataContainer,
26
+ validateListDimensions as validateListDimensions)
27
+
28
+ # isort: split
29
+ from mapFolding.filesystemToolkit import (
30
+ getFilenameFoldsTotal as getFilenameFoldsTotal, getPathFilenameFoldsTotal as getPathFilenameFoldsTotal,
31
+ getPathRootJobDEFAULT as getPathRootJobDEFAULT, saveFoldsTotal as saveFoldsTotal,
32
+ saveFoldsTotalFAILearly as saveFoldsTotalFAILearly)
33
+
34
+ # isort: split
35
+ from mapFolding.oeis import (
36
+ dictionaryOEIS as dictionaryOEIS, dictionaryOEISMapFolding as dictionaryOEISMapFolding,
37
+ getFoldsTotalKnown as getFoldsTotalKnown, getOEISids as getOEISids, OEIS_for_n as OEIS_for_n,
38
+ oeisIDfor_n as oeisIDfor_n)
@@ -0,0 +1,189 @@
1
+ # ruff: noqa
2
+ from cytoolz.dicttoolz import valfilter
3
+ from functools import cache
4
+ from gmpy2 import bit_flip, bit_mask, bit_test, is_even
5
+ from hunterMakesPy import raiseIfNone
6
+ from mapFolding import decreasing
7
+ from mapFolding._e import dimensionNearestTail, dimensionNearest首, howManyDimensionsHaveOddParity, leafOrigin, 零
8
+ from mapFolding._e.algorithms.iff import getCreasePost, ImaOddLeaf
9
+ from mapFolding._e.dataBaskets import EliminationState
10
+ from math import log2, prod
11
+ from pprint import pprint
12
+
13
+ def getDictionaryAddends4Next(state: EliminationState) -> dict[int, list[int]]:
14
+ @cache
15
+ def workhorse(mapShape: tuple[int, ...], dimensionsTotal: int, leavesTotal: int) -> dict[int, list[int]]:
16
+ dictionaryAddends: dict[int, list[int]] = {leafOrigin: [1]}
17
+
18
+ productsOfDimensions: list[int] = [prod(mapShape[0:dimension], start=1) for dimension in range(dimensionsTotal)]
19
+
20
+ for leaf in range(零, leavesTotal):
21
+ products下_leaf: list[int] = productsOfDimensions.copy()
22
+
23
+ theMaskOfDirectionality = bit_mask(leavesTotal - 零) & leaf
24
+ for index in range(dimensionsTotal):
25
+ if bit_test(theMaskOfDirectionality, index):
26
+ products下_leaf[index] *= -1
27
+
28
+ slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1 ^ 1
29
+ slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
30
+
31
+ if (slicingIndexStart == 1) and is_even(leaf):
32
+ slicingIndexStart += dimensionNearestTail(leaf)
33
+
34
+ products下_leaf = products下_leaf[slicingIndexStart:None]
35
+ products下_leaf = products下_leaf[0:slicingIndexEnd]
36
+ dictionaryAddends[leaf] = products下_leaf
37
+
38
+ return dictionaryAddends
39
+ return workhorse(state.mapShape, state.dimensionsTotal, state.leavesTotal)
40
+
41
+ def getDictionaryAddends4Prior(state: EliminationState) -> dict[int, list[int]]:
42
+ @cache
43
+ def workhorse(mapShape: tuple[int, ...], dimensionsTotal: int, leavesTotal: int) -> dict[int, list[int]]:
44
+ dictionaryAddends: dict[int, list[int]] = {leafOrigin: [], 零: [-1]}
45
+
46
+ productsOfDimensions: list[int] = [prod(mapShape[0:dimension], start=1) for dimension in range(dimensionsTotal)]
47
+
48
+ for leaf in range(leavesTotal + decreasing, 1, decreasing):
49
+ products下_leaf: list[int] = productsOfDimensions.copy()
50
+
51
+ theMaskOfDirectionality = bit_mask(leavesTotal - 零) & leaf
52
+ for index in range(dimensionsTotal):
53
+ if bit_test(theMaskOfDirectionality, index):
54
+ products下_leaf[index] *= -1
55
+
56
+ slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1
57
+ slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
58
+
59
+ if (slicingIndexStart == 1) and is_even(leaf):
60
+ slicingIndexStart += dimensionNearestTail(leaf)
61
+
62
+ products下_leaf = products下_leaf[slicingIndexStart:None]
63
+ products下_leaf = products下_leaf[0:slicingIndexEnd]
64
+ dictionaryAddends[leaf] = products下_leaf
65
+
66
+ return dictionaryAddends
67
+ return workhorse(state.mapShape, state.dimensionsTotal, state.leavesTotal)
68
+
69
+ if __name__ == '__main__':
70
+ state = EliminationState((2,) * 5)
71
+
72
+ dictionaryAddends4Next: dict[int, list[int]] = getDictionaryAddends4Next(state)
73
+ dictionaryAddends4Prior: dict[int, list[int]] = getDictionaryAddends4Prior(state)
74
+
75
+ printThis = False
76
+
77
+ for leaf in range(state.leavesTotal):
78
+ dictionaryNextCreaseLeafV0: dict[int, int | None] = {dimension: getCreasePost(state.mapShape, leaf, dimension) for dimension in range(state.dimensionsTotal)}
79
+ listAddendLeaves = sorted([leaf + addend for addend in dictionaryAddends4Next[leaf]])
80
+ if printThis:
81
+ print(leaf, end='\t')
82
+ print(leaf)
83
+ for indexAddend, leafW in enumerate(listAddendLeaves):
84
+ if leafW > leaf:
85
+ # NOTE parity of leaf is ALWAYS even on this branch
86
+ # continue
87
+ dimension = next(dim for dim, creaseLeaf in dictionaryNextCreaseLeafV0.items() if creaseLeaf == leafW)
88
+ if printThis:
89
+ print(ImaOddLeaf(state.mapShape, leaf, dimension), end='\t')
90
+ print(leafW in dictionaryNextCreaseLeafV0.values(), end='\t')
91
+ print('\t', indexAddend, leafW, dictionaryNextCreaseLeafV0, len(listAddendLeaves), listAddendLeaves, leafW==dictionaryNextCreaseLeafV0[indexAddend+1 + (state.dimensionsTotal - 1 - len(listAddendLeaves))])
92
+ else:
93
+ # NOTE parity of leaf is ALWAYS odd on this branch
94
+ # holy fuck, I've had all of this data for weeks but didn't realize it was huge.
95
+ # continue
96
+ dictionaryNextCreaseLeafW: dict[int, int | None] = {dimension: getCreasePost(state.mapShape, leafW, dimension) for dimension in range(state.dimensionsTotal)}
97
+ dimension = next(dim for dim, creaseLeaf in dictionaryNextCreaseLeafW.items() if creaseLeaf == leaf)
98
+ if printThis:
99
+ print(ImaOddLeaf(state.mapShape, leaf, dimension), end='\t')
100
+ print(leaf in dictionaryNextCreaseLeafW.values(), end='\t')
101
+
102
+ if printThis:
103
+ print()
104
+
105
+ printThis = False
106
+
107
+ dictionaryListNextCreaseLeaf: dict[int, list[int | None]] = {leaf: [] for leaf in range(state.leavesTotal)}
108
+ dictionaryNextCreaseLeaf: dict[int, dict[int, int | None]] = {leaf: {} for leaf in range(state.leavesTotal)}
109
+ for leaf in range(state.leavesTotal):
110
+ dictionaryListNextCreaseLeaf[leaf] = list(dictionaryNextCreaseLeaf[leaf].values())
111
+ dictionaryNextCreaseLeaf[leaf] = {dimension: getCreasePost(state.mapShape, leaf, dimension) for dimension in range(state.dimensionsTotal)}
112
+ dictionaryNextCreaseLeaf[leaf] = valfilter(bool, dictionaryNextCreaseLeaf[leaf])
113
+ listLeavesNextAndPriorInSequence = valfilter(lambda flipped: flipped > leaf, {dimension: bit_flip(leaf, dimension) for dimension in range(state.dimensionsTotal)})
114
+ if printThis:
115
+ print(leaf, len(dictionaryNextCreaseLeaf[leaf]), dictionaryNextCreaseLeaf[leaf], dictionaryNextCreaseLeaf[leaf] == listLeavesNextAndPriorInSequence, sep='\t')
116
+
117
+ printThis = False
118
+
119
+ for leaf in range(state.leavesTotal):
120
+ listAddendLeaves = [leaf + addend for addend in dictionaryAddends4Next[leaf]]
121
+ listAddendPriorLeaves = [leaf + addend for addend in dictionaryAddends4Prior[leaf]]
122
+ list1 = list(dict.fromkeys([*listAddendLeaves, *listAddendPriorLeaves]))
123
+ if len(list1) < state.dimensionsTotal and 0 < leaf:
124
+ index = int(log2(leaf))
125
+ list1.insert(index, 0)
126
+
127
+ listLeavesNextAndPriorInSequence = [int(bit_flip(leaf, dimension)) for dimension in range(state.dimensionsTotal)]
128
+
129
+ if leaf == leafOrigin:
130
+ listLeavesNext = [1]
131
+ listLeavesPrior = []
132
+ else:
133
+ slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1 ^ 1
134
+ slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
135
+
136
+ if (slicingIndexStart == 1) and is_even(leaf):
137
+ slicingIndexStart += dimensionNearestTail(leaf)
138
+ listLeavesNext = listLeavesNextAndPriorInSequence[slicingIndexStart: slicingIndexEnd]
139
+
140
+ slicingIndexStart = howManyDimensionsHaveOddParity(leaf) & 1
141
+ slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
142
+
143
+ if (slicingIndexStart == 1) and is_even(leaf):
144
+ slicingIndexStart += dimensionNearestTail(leaf)
145
+ listLeavesPrior = listLeavesNextAndPriorInSequence[slicingIndexStart: slicingIndexEnd]
146
+
147
+ if leaf == 1:
148
+ listLeavesPrior = [0]
149
+
150
+ if printThis:
151
+ print(leaf, listAddendLeaves==listLeavesNext, listAddendPriorLeaves==listLeavesPrior, listLeavesNextAndPriorInSequence, sep='\t', end='\n')
152
+ else:
153
+ if printThis:
154
+ print(leaf, leaf.bit_count() - 1 & 1, dimensionNearestTail(leaf), sep='\t', end='\n')
155
+ print(leaf, listAddendLeaves, listAddendPriorLeaves, listLeavesNextAndPriorInSequence, sep='\n', end='\n\n')
156
+ print(leaf, listLeavesNextAndPriorInSequence, sorted(list1) == sorted(listLeavesNextAndPriorInSequence), sep='\t', end='\n')
157
+ print(leaf, list1, listLeavesNextAndPriorInSequence, sorted(list1), sorted(listLeavesNextAndPriorInSequence), sep='\n', end='\n\n')
158
+
159
+ printThis = False
160
+
161
+ creasesByDimension: dict[int, list[tuple[int, int]]] = {dimension: [] for dimension in range(state.dimensionsTotal)}
162
+ for dimension in range(state.dimensionsTotal):
163
+ for leaf in range(state.leavesTotal):
164
+ leafW = dictionaryNextCreaseLeaf[leaf].get(dimension)
165
+ if leafW is not None:
166
+ creasesByDimension[dimension].append((leaf, leafW))
167
+ if printThis:
168
+ pprint(creasesByDimension, width=140, compact=True)
169
+
170
+ printThis = False
171
+
172
+ for qq, ww in dictionaryListNextCreaseLeaf.items():
173
+ if printThis:
174
+ print(qq, *ww, sep='\t')
175
+
176
+ printThis = True
177
+
178
+ for leaf, dd in dictionaryNextCreaseLeaf.items():
179
+ tt = True
180
+ if printThis:
181
+ print(leaf, len(dd), sep='\t', end='\t')
182
+ for nn in dd.values():
183
+ qq = dictionaryNextCreaseLeaf[raiseIfNone(nn)]
184
+ tt &= len(dd) == 1+ len(qq)
185
+ if printThis:
186
+ print(len(qq), end='\t')
187
+ if printThis:
188
+ print(bool(tt))
189
+
@@ -0,0 +1,143 @@
1
+ # pyright: basic
2
+ # ruff: noqa
3
+ from functools import partial
4
+ from itertools import pairwise, permutations, product as CartesianProduct
5
+ from pathlib import Path
6
+ from pprint import pprint
7
+ from toolz import compose
8
+ import numpy
9
+ import pickle
10
+
11
+ fileStem = "p2d4"
12
+ pathFilename: Path = Path(f"/apps/mapFolding/Z0Z_notes/{fileStem}.csv")
13
+
14
+ headerLength = 182
15
+ headerLength = 86
16
+ headerLength = 38
17
+ data2Dn: str = pathFilename.read_text(encoding="utf-8")[headerLength:None]
18
+
19
+ def parseLineToIntegers(textLine: str) -> list[int]:
20
+ return [int(numberText) for numberText in textLine.strip().split(",")]
21
+
22
+ listFoldings2Dn: list[list[int]] = []
23
+
24
+ for textLine in data2Dn.splitlines():
25
+ sequenceIntegers = parseLineToIntegers(textLine)
26
+ listFoldings2Dn.append(sequenceIntegers)
27
+
28
+ arrayFoldings2Dn = numpy.array(listFoldings2Dn, dtype=numpy.uint8)
29
+
30
+ pathFilename.with_name(f'listFoldings{fileStem}.pkl').write_bytes(pickle.dumps(listFoldings2Dn))
31
+ pathFilename.with_name(f'arrayFoldings{fileStem}.pkl').write_bytes(pickle.dumps(arrayFoldings2Dn))
32
+
33
+ dictionaryDifferencesReverse: dict[int, list[int]] = {}
34
+
35
+ for rowIndex in range(arrayFoldings2Dn.shape[0]):
36
+ for columnIndex in range(1, arrayFoldings2Dn.shape[1]):
37
+ valueOriginal = int(arrayFoldings2Dn[rowIndex, columnIndex])
38
+ valueLeft = int(arrayFoldings2Dn[rowIndex, columnIndex - 1])
39
+ differenceToLeft = valueLeft - valueOriginal
40
+
41
+ if valueOriginal not in dictionaryDifferencesReverse:
42
+ dictionaryDifferencesReverse[valueOriginal] = []
43
+
44
+ if differenceToLeft not in dictionaryDifferencesReverse[valueOriginal]:
45
+ dictionaryDifferencesReverse[valueOriginal].append(differenceToLeft)
46
+
47
+ for valueOriginal in dictionaryDifferencesReverse:
48
+ dictionaryDifferencesReverse[valueOriginal].sort(key=abs)
49
+
50
+
51
+ pprint(dictionaryDifferencesReverse)
52
+
53
+ l5 = listLeft = [8] + [8, 16] + [2]
54
+ r4 = listRight = [8] + [8, 16]
55
+
56
+ l6 = listLeft = [8] + [8, 16] # 2,6 is on the list of 3,2.
57
+ # However, to concatenate leafLeft,3,2,6 with 2,6,7,leafRight, leafLeft+4 == leafRight ,1,3,2,6,7,5, ,11,3,2,6,7,15, ,19,3,2,6,7,23, ,35,3,2,6,7,39,
58
+ r7 = listRight = [8] + [8, 16] + [-2]
59
+ # 7: [-2, -4, 8, 16, 32],
60
+ l=6; r=7
61
+
62
+ l8 = listLeft = [1] + [1, 2]
63
+ r40 = listRight = [1] + [1, 2] + [16]
64
+
65
+ l16 = listLeft = [1] + [1, 2, 4]
66
+ r48 = listRight = [1] + [1, 2, 4] + [-16] # 48 > 16
67
+
68
+ l56 = listLeft = [1] + [1, 2] + [-16]
69
+ r24 = listRight = [1] + [1, 2] #24,16 is on the list of 8,40.
70
+
71
+ l9 = listLeft = [16] + [16] + [2]
72
+ r8 = listRight = [16] + [16]
73
+ l=9; r=8
74
+
75
+ l52 = listLeft = [1] + [1] + [-16]
76
+ r20 = listRight = [1] + [1]
77
+ # NOTE appends, below.
78
+ l=52; r=20
79
+ # 16, 21, 22, 28
80
+ # 36, 53, 54, 60
81
+
82
+ l4 = listLeft = [1] + [1]
83
+ r36 = listRight = [1] + [1] + [16]
84
+ l=4; r=36
85
+ # 37, 38, 32, 44, 52
86
+ # +1, +2, -4, +8, +16
87
+
88
+ l10 = listLeft = [16] + [16]
89
+ r11 = listRight = [16] + [16] + [-2]
90
+ # NOTE appends, below.
91
+ l=10; r=11
92
+ # 9, 15, 3, 27, 43
93
+ # -2, +4, -8, +16, +32
94
+
95
+ l3 = listLeft = [4] + [4, 8, 16] + [-2] # 3 > 2
96
+ r2 = listRight = [4] + [4, 8, 16]
97
+ l=3; r=2
98
+
99
+ ll = []
100
+ for index in range(1, len(listLeft)):
101
+ ll.append(l + sum(listLeft[0:index]))
102
+ rr = []
103
+ for index in range(1, len(listRight)):
104
+ rr.append(r + sum(listRight[0:index]))
105
+
106
+ if l > r:
107
+ ll.append(l + listLeft[-1])
108
+ rr.append(r + sum(listRight[0:None]))
109
+ else:
110
+ ll.append(l + sum(listLeft[0:None]))
111
+ rr.append(r + listRight[-1])
112
+
113
+ if (l == 4) and (r == 36): # NOTE idk.
114
+ rr.append(44)
115
+
116
+ if (l == 6) and (r == 7): # 2,6 is on the list of 3,2.
117
+ ll.append(2)
118
+
119
+ if (l == 9) and (r == 8): # NOTE I can't explain 13. 9+4=13.
120
+ ll.append(13)
121
+
122
+ if (l == 10) and (r == 11): # NOTE similar to 9,8.
123
+ rr.append(15) # An additional, stand-alone +4. 11+4=15.
124
+ ll.append(14) # An additional, stand-alone +4. 10+4=14.
125
+ ll.append(2) # 2,10 is on the list of 3,2.
126
+
127
+ if (l == 52) and (r == 20): # 20,16 is on the list of 16,48.
128
+ rr.append(16)
129
+ rr.append(28)
130
+ ll.append(60)
131
+
132
+ if (l == 56) and (r == 24): # 24,16 is on the list of 16,48.
133
+ rr.append(16)
134
+
135
+ # infix: str = f",{l},{r}"
136
+ # total = 0
137
+ # for left, right in CartesianProduct(ll, rr):
138
+ # this: str = f",{left}{infix},{right},"
139
+ # count = data2Dn.count(this)
140
+ # total += count
141
+ # print(f"{count}\t{this}")
142
+
143
+ # print(total)
@@ -0,0 +1,4 @@
1
+ """Analysis tools written in Python to help develop the "elimination" algorithms.
2
+
3
+ These are not intended for long-term use. If a function evolves into something I want to keep, I should find a better home for it.
4
+ """