mapFolding 0.17.0__py3-none-any.whl → 0.18.0__py3-none-any.whl

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 (245) hide show
  1. easyRun/NOTcountingFolds.py +16 -10
  2. easyRun/__init__.py +1 -0
  3. easyRun/countFolds.py +17 -9
  4. easyRun/meanders.py +6 -8
  5. mapFolding/__init__.py +24 -35
  6. mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_hypothesis.py +189 -0
  7. mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_p2d6.py +143 -0
  8. mapFolding/_e/Z0Z_analysisPython/__init__.py +4 -0
  9. mapFolding/_e/Z0Z_analysisPython/exclusionData/__init__.py +0 -0
  10. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200.py +369 -0
  11. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2001.py +694 -0
  12. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/211.py +514 -0
  13. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/2111.py +480 -0
  14. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214.py +511 -0
  15. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/2141.py +515 -0
  16. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/211.py +485 -0
  17. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/2111.py +442 -0
  18. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/211.py +313 -0
  19. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2111.py +343 -0
  20. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214.py +400 -0
  21. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/2141.py +497 -0
  22. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/211.py +463 -0
  23. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/2111.py +441 -0
  24. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266.py +35 -0
  25. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/2661.py +35 -0
  26. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200.py +382 -0
  27. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2001.py +630 -0
  28. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/211.py +488 -0
  29. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/2111.py +475 -0
  30. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214.py +473 -0
  31. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/2141.py +500 -0
  32. 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/_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/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/211.py +599 -0
  35. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2111.py +536 -0
  36. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214.py +506 -0
  37. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/2141.py +533 -0
  38. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/211.py +489 -0
  39. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/2111.py +474 -0
  40. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200.py +1186 -0
  41. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001.py +2158 -0
  42. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001Negative.py +2158 -0
  43. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200Negative.py +1186 -0
  44. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211.py +1397 -0
  45. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111.py +1291 -0
  46. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111Negative.py +1291 -0
  47. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211Negative.py +1397 -0
  48. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214.py +1240 -0
  49. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141.py +1420 -0
  50. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141Negative.py +1420 -0
  51. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214Negative.py +1240 -0
  52. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211.py +1366 -0
  53. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111.py +1274 -0
  54. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +1274 -0
  55. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +1366 -0
  56. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211.py +1186 -0
  57. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111.py +1186 -0
  58. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111Negative.py +1186 -0
  59. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211Negative.py +1186 -0
  60. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214.py +1102 -0
  61. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141.py +1422 -0
  62. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141Negative.py +1422 -0
  63. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214Negative.py +1102 -0
  64. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211.py +1240 -0
  65. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111.py +1228 -0
  66. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111Negative.py +1228 -0
  67. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211Negative.py +1240 -0
  68. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266.py +32 -0
  69. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661.py +1162 -0
  70. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661Negative.py +1162 -0
  71. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266Negative.py +32 -0
  72. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200.py +1186 -0
  73. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001.py +1926 -0
  74. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001Negative.py +1926 -0
  75. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200Negative.py +1186 -0
  76. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211.py +1291 -0
  77. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111.py +1176 -0
  78. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +1176 -0
  79. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +1291 -0
  80. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214.py +1228 -0
  81. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141.py +1324 -0
  82. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +1324 -0
  83. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +1228 -0
  84. 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/_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/_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/_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/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211.py +2158 -0
  89. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111.py +1926 -0
  90. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111Negative.py +1926 -0
  91. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211Negative.py +2158 -0
  92. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214.py +1422 -0
  93. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141.py +1364 -0
  94. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141Negative.py +1364 -0
  95. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214Negative.py +1422 -0
  96. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211.py +1420 -0
  97. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111.py +1324 -0
  98. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +1324 -0
  99. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +1420 -0
  100. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200.py +3133 -0
  101. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001.py +6039 -0
  102. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001Negative.py +6039 -0
  103. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200Negative.py +3133 -0
  104. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211.py +3527 -0
  105. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111.py +2300 -0
  106. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111Negative.py +2300 -0
  107. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211Negative.py +3527 -0
  108. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214.py +3597 -0
  109. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141.py +3317 -0
  110. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141Negative.py +3317 -0
  111. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214Negative.py +3597 -0
  112. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211.py +3161 -0
  113. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111.py +2877 -0
  114. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +2877 -0
  115. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +3161 -0
  116. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211.py +2981 -0
  117. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111.py +3055 -0
  118. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111Negative.py +3055 -0
  119. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211Negative.py +2981 -0
  120. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214.py +3221 -0
  121. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141.py +3988 -0
  122. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141Negative.py +3988 -0
  123. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214Negative.py +3221 -0
  124. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211.py +3652 -0
  125. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111.py +2863 -0
  126. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111Negative.py +2863 -0
  127. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211Negative.py +3652 -0
  128. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200.py +2485 -0
  129. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001.py +4566 -0
  130. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001Negative.py +4566 -0
  131. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200Negative.py +2485 -0
  132. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211.py +3006 -0
  133. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111.py +2485 -0
  134. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +2485 -0
  135. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +3006 -0
  136. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214.py +3304 -0
  137. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141.py +3015 -0
  138. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +3015 -0
  139. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +3304 -0
  140. 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/_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/_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/_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/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211.py +3899 -0
  145. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111.py +2996 -0
  146. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111Negative.py +2996 -0
  147. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211Negative.py +3899 -0
  148. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214.py +3223 -0
  149. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141.py +3020 -0
  150. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141Negative.py +3020 -0
  151. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214Negative.py +3223 -0
  152. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211.py +3250 -0
  153. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111.py +2667 -0
  154. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +2667 -0
  155. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +3250 -0
  156. mapFolding/_e/Z0Z_analysisPython/measure.py +162 -0
  157. mapFolding/_e/Z0Z_analysisPython/positionAnalysis.py +403 -0
  158. mapFolding/_e/Z0Z_analysisPython/positionAnalysisPileRanges2d6.py +110 -0
  159. mapFolding/_e/Z0Z_analysisPython/theExcluderBeast.py +640 -0
  160. mapFolding/_e/Z0Z_analysisPython/toolkit.py +166 -0
  161. mapFolding/_e/Z0Z_analysisPython/toolkitCSVsequences.py +188 -0
  162. mapFolding/_e/Z0Z_analysisPython/workBenchPatternFinder.py +284 -0
  163. mapFolding/_e/Z0Z_notes/__init__.py +0 -0
  164. mapFolding/_e/Z0Z_notes/knowledgeDump.py +214 -0
  165. mapFolding/_e/__init__.py +45 -0
  166. mapFolding/_e/_beDRY.py +547 -0
  167. mapFolding/_e/_dataDynamic.py +1164 -0
  168. mapFolding/_e/_measure.py +579 -0
  169. mapFolding/_e/_semiotics.py +363 -0
  170. mapFolding/_e/_theTypes.py +31 -0
  171. mapFolding/_e/algorithms/__init__.py +1 -0
  172. mapFolding/_e/algorithms/constraintPropagation.py +158 -0
  173. mapFolding/_e/algorithms/elimination.py +118 -0
  174. mapFolding/_e/algorithms/eliminationCrease.py +66 -0
  175. mapFolding/_e/algorithms/iff.py +584 -0
  176. mapFolding/_e/basecamp.py +89 -0
  177. mapFolding/_e/dataBaskets.py +123 -0
  178. mapFolding/_e/dataRaw/__init__.py +0 -0
  179. mapFolding/_e/easyRun/__init__.py +0 -0
  180. mapFolding/_e/easyRun/eliminateFolds.py +72 -0
  181. mapFolding/_e/easyRun/pinning.py +62 -0
  182. mapFolding/_e/filters.py +384 -0
  183. mapFolding/_e/pin2/344/270/212nDimensions.py +882 -0
  184. mapFolding/_e/pin2/344/270/212nDimensionsAnnex.py +551 -0
  185. mapFolding/_e/pin2/344/270/212nDimensionsByCrease.py +190 -0
  186. mapFolding/_e/pin2/344/270/212nDimensionsByDomain.py +459 -0
  187. mapFolding/_e/pinIt.py +436 -0
  188. mapFolding/_semiotics.py +42 -0
  189. mapFolding/_theSSOT.py +11 -56
  190. mapFolding/_theTypes.py +52 -68
  191. mapFolding/algorithms/A086345.py +8 -3
  192. mapFolding/algorithms/__init__.py +1 -1
  193. mapFolding/algorithms/matrixMeandersNumPyndas.py +18 -18
  194. mapFolding/algorithms/oeisIDbyFormula.py +4 -4
  195. mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py +3 -3
  196. mapFolding/basecamp.py +13 -28
  197. mapFolding/beDRY.py +108 -99
  198. mapFolding/filesystemToolkit.py +15 -11
  199. mapFolding/oeis.py +17 -16
  200. mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py +2 -2
  201. mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py +0 -1
  202. mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py +8 -10
  203. mapFolding/someAssemblyRequired/RecipeJob.py +5 -5
  204. mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +5 -2
  205. mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +9 -11
  206. mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py +2 -1
  207. mapFolding/someAssemblyRequired/transformationTools.py +2 -2
  208. mapFolding/tests/Z0Z_test_e_excluder.py +155 -0
  209. mapFolding/tests/conftest.py +193 -314
  210. mapFolding/tests/dataSamples/A001417.py +455 -0
  211. mapFolding/tests/dataSamples/__init__.py +1 -0
  212. mapFolding/tests/dataSamples/measurementData.py +1818 -0
  213. 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/tests/dataSamples/p2DnDomain3_/351/246/226/344/270/200.py +17 -0
  215. mapFolding/tests/dataSamples/p2DnDomain5_4.py +17 -0
  216. mapFolding/tests/dataSamples/p2DnDomain6_5.py +17 -0
  217. mapFolding/tests/dataSamples/p2DnDomain6_7_5_4.py +17 -0
  218. mapFolding/tests/dataSamples/p2DnDomain7_6.py +17 -0
  219. 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/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/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/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/272/214_/351/246/226/344/272/214.py +15 -0
  223. mapFolding/tests/dataSamples/semioticsData.py +135 -0
  224. mapFolding/tests/test_computations.py +133 -88
  225. mapFolding/tests/test_e_computations.py +42 -0
  226. mapFolding/tests/test_e_dataDynamic.py +189 -0
  227. mapFolding/tests/test_e_measurements.py +257 -0
  228. mapFolding/tests/test_e_pinning.py +61 -0
  229. mapFolding/tests/test_e_semiotics.py +128 -0
  230. mapFolding/tests/test_filesystem.py +39 -17
  231. mapFolding/tests/{test_other.py → test_parameterValidation.py} +3 -3
  232. mapFolding/tests/{test_tasks.py → test_taskDivisions.py} +42 -23
  233. mapFolding/zCuzDocStoopid/makeDocstrings.py +3 -2
  234. {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/METADATA +15 -9
  235. mapfolding-0.18.0.dist-info/RECORD +305 -0
  236. {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/WHEEL +1 -1
  237. easyRun/A000682.py +0 -25
  238. easyRun/A005316.py +0 -20
  239. mapFolding/algorithms/A000136constraintPropagation.py +0 -95
  240. mapFolding/algorithms/A000136elimination.py +0 -163
  241. mapFolding/algorithms/A000136eliminationParallel.py +0 -77
  242. mapfolding-0.17.0.dist-info/RECORD +0 -107
  243. {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/entry_points.txt +0 -0
  244. {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/licenses/LICENSE +0 -0
  245. {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,579 @@
1
+ """You can use this module to measure bit-level coordinate features of `leaf` and `pile` integers.
2
+
3
+ (AI generated docstring)
4
+
5
+ This module treats an `int` value as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
6
+ For $2^n$-dimensional maps, the proxy uses base $2$ digits, where each digit position corresponds to a dimension index.
7
+ The conventions for dimension-index ideographs and related constants live in `mapFolding._e._semiotics` [2].
8
+
9
+ Contents
10
+ --------
11
+ dimensionFourthNearest首
12
+ You can locate the fourth most-significant non-zero digit index.
13
+ dimensionNearestTail
14
+ You can locate the least-significant non-zero digit index.
15
+ dimensionNearest首
16
+ You can locate the most-significant non-zero digit index.
17
+ dimensionSecondNearest首
18
+ You can locate the second most-significant non-zero digit index.
19
+ dimensionThirdNearest首
20
+ You can locate the third most-significant non-zero digit index.
21
+ dimensionsConsecutiveAtTail
22
+ You can count consecutive tail digits with value `1` in a masked width.
23
+ howManyDimensionsHaveOddParity
24
+ You can count non-head digits with value `1`.
25
+ invertLeafIn2上nDimensions
26
+ You can invert base-2 digits within a fixed dimension count.
27
+ leafInSubHyperplane
28
+ You can project a non-origin `leaf` to a sub-hyperplane by dropping the head digit.
29
+ ptount
30
+ You can compute a bit-count-derived measurement after subtracting `一+零`.
31
+
32
+ References
33
+ ----------
34
+ [1] Positional notation - Wikipedia
35
+ https://en.wikipedia.org/wiki/Positional_notation
36
+ [2] mapFolding._e._semiotics
37
+ Internal package reference
38
+
39
+ """
40
+
41
+ from functools import cache
42
+ from gmpy2 import bit_flip, bit_mask, bit_scan1, f_mod_2exp
43
+ from hunterMakesPy import raiseIfNone
44
+ from hunterMakesPy.parseParameters import intInnit
45
+ from mapFolding._e import 一, 零
46
+ from mapFolding._e.dataBaskets import EliminationState
47
+ from operator import getitem
48
+
49
+ def dimensionsConsecutiveAtTail(state: EliminationState, integerNonnegative: int) -> int:
50
+ """You can count consecutive tail radix-2 digits with value `1` in `integerNonnegative`.
51
+
52
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
53
+ This function uses the dimension-count `state.dimensionsTotal` to invert digits within a fixed width, using the conventions
54
+ in `mapFolding._e._semiotics` [2].
55
+ This function uses `gmpy2.bit_scan1` [3] on the inverted value.
56
+
57
+ Parameters
58
+ ----------
59
+ state : EliminationState
60
+ State container that provides `state.dimensionsTotal`.
61
+ integerNonnegative : int
62
+ Input value interpreted as a base-2 positional coordinate encoding.
63
+
64
+ Returns
65
+ -------
66
+ digitsTrailingOnes : int
67
+ The count of consecutive least-significant base-2 digits equal to `1`, bounded by `state.dimensionsTotal`.
68
+
69
+ Raises
70
+ ------
71
+ ValueError
72
+ Raised when `integerNonnegative` is less than `0`.
73
+
74
+ Examples
75
+ --------
76
+ This function is used when selecting leaf exclusions.
77
+
78
+ >>> if (is_even(leafAt二Ante首)
79
+ ... or (is_odd(leafAt二Ante首) and (dimensionIndex(dimension) < dimensionsConsecutiveAtTail(state, leafAt二Ante首)))):
80
+ ... listRemoveLeaves.extend([dimension])
81
+
82
+ References
83
+ ----------
84
+ [1] Positional notation - Wikipedia
85
+ https://en.wikipedia.org/wiki/Positional_notation
86
+ [2] mapFolding._e._semiotics
87
+ Internal package reference
88
+ [3] gmpy2 documentation
89
+ https://gmpy2.readthedocs.io/en/latest/
90
+ """
91
+ # NOTE HEY! `invertLeafIn2上nDimensions` is pulling double duty: it sanitizes `integerNonnegative` and inverts it. So if you figure out how to
92
+ # achieve this functionality without calling `invertLeafIn2上nDimensions`, you need to add defensive code here.
93
+ anInteger: int = invertLeafIn2上nDimensions(state.dimensionsTotal, integerNonnegative)
94
+ return bit_scan1(anInteger) or 0
95
+
96
+ @cache
97
+ def dimensionNearest首(integerNonnegative: int, /) -> int:
98
+ """You can locate the most-significant non-zero radix-2 digit index in `integerNonnegative`.
99
+
100
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
101
+ The most-significant non-zero digit index corresponds to the dimension index nearest the head ideograph `首`, following
102
+ `mapFolding._e._semiotics` [2].
103
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [3].
104
+
105
+ Parameters
106
+ ----------
107
+ integerNonnegative : int
108
+ Input value interpreted as a base-2 positional coordinate encoding.
109
+
110
+ Returns
111
+ -------
112
+ dimensionIndexNearest首 : int
113
+ The 0-indexed position of the most-significant base-2 digit with value `1`.
114
+
115
+ Raises
116
+ ------
117
+ ValueError
118
+ Raised when `integerNonnegative` is less than `0`.
119
+
120
+ Examples
121
+ --------
122
+ This function is used to compute a head-dimension index.
123
+
124
+ >>> dimensionHead: int = dimensionNearest首(leafAt二)
125
+
126
+ References
127
+ ----------
128
+ [1] Positional notation - Wikipedia
129
+ https://en.wikipedia.org/wiki/Positional_notation
130
+ [2] mapFolding._e._semiotics
131
+ Internal package reference
132
+ [3] hunterMakesPy
133
+ https://context7.com/hunterhogan/huntermakespy
134
+ """
135
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
136
+ if anInteger < 0:
137
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
138
+ raise ValueError(message)
139
+ return max(0, anInteger.bit_length() - 1)
140
+
141
+ @cache
142
+ def dimensionSecondNearest首(integerNonnegative: int, /) -> int | None:
143
+ """You can locate the second most-significant non-zero radix-2 digit index in `integerNonnegative`.
144
+
145
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
146
+ The digit order is interpreted relative to the head ideograph `首`, following `mapFolding._e._semiotics` [2].
147
+ This function uses `gmpy2.bit_flip` [3] to clear the most-significant digit.
148
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [4].
149
+
150
+ Parameters
151
+ ----------
152
+ integerNonnegative : int
153
+ Input value interpreted as a base-2 positional coordinate encoding.
154
+
155
+ Returns
156
+ -------
157
+ dimensionIndexSecondNearest首 : int | None
158
+ The 0-indexed position of the second most-significant base-2 digit with value `1`.
159
+ The return value is `None` when `integerNonnegative` has fewer than two non-zero digits.
160
+
161
+ Raises
162
+ ------
163
+ ValueError
164
+ Raised when `integerNonnegative` is less than `0`.
165
+
166
+ Examples
167
+ --------
168
+ This function is used as part of exclusion rules.
169
+
170
+ >>> if (howManyDimensionsHaveOddParity(pileOfLeaf二一) == 1
171
+ ... and (dimensionNearest首(pileOfLeaf二一) - raiseIfNone(dimensionSecondNearest首(pileOfLeaf二一)) < 2)
172
+ ... ):
173
+ ... addend: int = productsOfDimensions[dimensionsTotal-2] + 4
174
+
175
+ References
176
+ ----------
177
+ [1] Positional notation - Wikipedia
178
+ https://en.wikipedia.org/wiki/Positional_notation
179
+ [2] mapFolding._e._semiotics
180
+ Internal package reference
181
+ [3] gmpy2 documentation
182
+ https://gmpy2.readthedocs.io/en/latest/
183
+ [4] hunterMakesPy
184
+ https://context7.com/hunterhogan/huntermakespy
185
+ """
186
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
187
+ if anInteger < 0:
188
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
189
+ raise ValueError(message)
190
+ dimensionSecondNearest: int | None = None
191
+ anotherInteger: int = int(bit_flip(anInteger, dimensionNearest首(anInteger)))
192
+ if anotherInteger == 0:
193
+ dimensionSecondNearest = None
194
+ else:
195
+ dimensionSecondNearest = dimensionNearest首(anotherInteger)
196
+ return dimensionSecondNearest
197
+
198
+ @cache
199
+ def dimensionThirdNearest首(integerNonnegative: int, /) -> int | None:
200
+ """You can locate the third most-significant non-zero radix-2 digit index in `integerNonnegative`.
201
+
202
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
203
+ The digit order is interpreted relative to the head ideograph `首`, following `mapFolding._e._semiotics` [2].
204
+ This function uses `gmpy2.bit_flip` [3] to clear digits.
205
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [4].
206
+
207
+ Parameters
208
+ ----------
209
+ integerNonnegative : int
210
+ Input value interpreted as a base-2 positional coordinate encoding.
211
+
212
+ Returns
213
+ -------
214
+ dimensionIndexThirdNearest首 : int | None
215
+ The 0-indexed position of the third most-significant base-2 digit with value `1`.
216
+ The return value is `None` when `integerNonnegative` has fewer than three non-zero digits.
217
+
218
+ Raises
219
+ ------
220
+ ValueError
221
+ Raised when `integerNonnegative` is less than `0`.
222
+
223
+ Examples
224
+ --------
225
+ This function is used in domain index elimination.
226
+
227
+ >>> if (dimensionThirdNearest首(pileOfLeaf零) == 一) and (二+零 <= dimensionNearest首(pileOfLeaf零)):
228
+ ... indexDomain0: int = (pilesTotal // 2) + 1
229
+ ... listIndicesPilesExcluded.extend([indexDomain0])
230
+
231
+ References
232
+ ----------
233
+ [1] Positional notation - Wikipedia
234
+ https://en.wikipedia.org/wiki/Positional_notation
235
+ [2] mapFolding._e._semiotics
236
+ Internal package reference
237
+ [3] gmpy2 documentation
238
+ https://gmpy2.readthedocs.io/en/latest/
239
+ [4] hunterMakesPy
240
+ https://context7.com/hunterhogan/huntermakespy
241
+ """
242
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
243
+ if anInteger < 0:
244
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
245
+ raise ValueError(message)
246
+
247
+ dimensionNearest: int = dimensionNearest首(anInteger)
248
+ dimensionSecondNearest: int | None = dimensionSecondNearest首(anInteger)
249
+ dimensionThirdNearest: int | None = None
250
+
251
+ if dimensionSecondNearest in [0, None]:
252
+ dimensionThirdNearest = None
253
+ else:
254
+ anotherInteger: int = int(bit_flip(anInteger, dimensionNearest).bit_flip(raiseIfNone(dimensionSecondNearest)))
255
+ if anotherInteger == 0:
256
+ dimensionThirdNearest = None
257
+ else:
258
+ dimensionThirdNearest = dimensionNearest首(anotherInteger)
259
+ return dimensionThirdNearest
260
+
261
+ @cache
262
+ def dimensionFourthNearest首(integerNonnegative: int, /) -> int | None:
263
+ """You can locate the fourth most-significant non-zero radix-2 digit index in `integerNonnegative`.
264
+
265
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
266
+ The digit order is interpreted relative to the head ideograph `首`, following `mapFolding._e._semiotics` [2].
267
+ This function uses `gmpy2.bit_flip` [3] to clear digits.
268
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [4].
269
+
270
+ Parameters
271
+ ----------
272
+ integerNonnegative : int
273
+ Input value interpreted as a base-2 positional coordinate encoding.
274
+
275
+ Returns
276
+ -------
277
+ dimensionIndexFourthNearest首 : int | None
278
+ The 0-indexed position of the fourth most-significant base-2 digit with value `1`.
279
+ The return value is `None` when `integerNonnegative` has fewer than four non-zero digits.
280
+
281
+ Raises
282
+ ------
283
+ ValueError
284
+ Raised when `integerNonnegative` is less than `0`.
285
+
286
+ Examples
287
+ --------
288
+ This function is used as a refinement when a third-nearest digit matches a specific pattern.
289
+
290
+ >>> if dimensionThirdNearest首(pileOfLeaf零) == 一+零:
291
+ ... indexDomain0 = pilesTotal // 4
292
+ ... if dimensionFourthNearest首(pileOfLeaf零) == 一:
293
+ ... indicesDomain0ToExclude.extend([indexDomain0])
294
+
295
+ References
296
+ ----------
297
+ [1] Positional notation - Wikipedia
298
+ https://en.wikipedia.org/wiki/Positional_notation
299
+ [2] mapFolding._e._semiotics
300
+ Internal package reference
301
+ [3] gmpy2 documentation
302
+ https://gmpy2.readthedocs.io/en/latest/
303
+ [4] hunterMakesPy
304
+ https://context7.com/hunterhogan/huntermakespy
305
+ """
306
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
307
+ if anInteger < 0:
308
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
309
+ raise ValueError(message)
310
+
311
+ dimensionNearest: int = dimensionNearest首(anInteger)
312
+ dimensionSecondNearest: int | None = dimensionSecondNearest首(anInteger)
313
+ dimensionThirdNearest: int | None = dimensionThirdNearest首(anInteger)
314
+ dimensionFourthNearest: int | None = None
315
+
316
+ if dimensionThirdNearest in [0, None]:
317
+ dimensionFourthNearest = None
318
+ else:
319
+ anotherInteger: int = int(bit_flip(anInteger, dimensionNearest).bit_flip(raiseIfNone(dimensionSecondNearest)).bit_flip(raiseIfNone(dimensionThirdNearest)))
320
+ if anotherInteger == 0:
321
+ dimensionFourthNearest = None
322
+ else:
323
+ dimensionFourthNearest = dimensionNearest首(anotherInteger)
324
+ return dimensionFourthNearest
325
+
326
+ @cache
327
+ def leafInSubHyperplane(notLeafOrigin: int, /) -> int:
328
+ """You can project `notLeafOrigin` to a sub-hyperplane by dropping the head radix-2 digit.
329
+
330
+ (AI generated docstring, which may or may not have been accurate; edited by me, Hunter Hogan, which may or may not have improved it.)
331
+
332
+ This function treats `notLeafOrigin` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
333
+ For $2^n$-dimensional maps, the base $2$ most-significant digit marks the dimension index nearest the head ideograph `首`, following
334
+ `mapFolding._e._semiotics` [2].
335
+
336
+ This function returns the value formed by removing the most-significant non-zero digit and preserving the remaining digits.
337
+ This function is implemented as a modulus operation on a power of two using `gmpy2.f_mod_2exp` [3].
338
+ This function validates `notLeafOrigin` using `hunterMakesPy.parseParameters.intInnit` [4].
339
+
340
+ Parameters
341
+ ----------
342
+ notLeafOrigin : int
343
+ A `leaf` value that is not equal to `leafOrigin`.
344
+
345
+ Returns
346
+ -------
347
+ leafSubHyperplane : int
348
+ The `leaf` value in the sub-hyperplane implied by `notLeafOrigin`.
349
+
350
+ Raises
351
+ ------
352
+ ValueError
353
+ Raised when `notLeafOrigin` is less than `1`.
354
+
355
+ Examples
356
+ --------
357
+ This function is used when a `leaf` has a specific parity pattern.
358
+
359
+ >>> if howManyDimensionsHaveOddParity(leafAt二Ante首) == 1:
360
+ ... listRemoveLeaves.extend([leafInSubHyperplane(leafAt二Ante首)])
361
+
362
+ References
363
+ ----------
364
+ [1] Positional notation - Wikipedia
365
+ https://en.wikipedia.org/wiki/Positional_notation
366
+ [2] mapFolding._e._semiotics
367
+ Internal package reference
368
+ [3] gmpy2 documentation
369
+ https://gmpy2.readthedocs.io/en/latest/
370
+ [4] hunterMakesPy
371
+ https://context7.com/hunterhogan/huntermakespy
372
+ """
373
+ anInteger: int = getitem(intInnit([notLeafOrigin], 'notLeafOrigin', int), 0)
374
+ if anInteger < 1:
375
+ message: str = f"I received `{notLeafOrigin = }`, but I need a value greater than 0."
376
+ raise ValueError(message)
377
+ return int(f_mod_2exp(anInteger, dimensionNearest首(anInteger)))
378
+
379
+ @cache
380
+ def dimensionNearestTail(integerNonnegative: int, /) -> int:
381
+ """You can locate the least-significant non-zero radix-2 digit index in `integerNonnegative`.
382
+
383
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
384
+ The least-significant non-zero digit index is the count of trailing zeros in the base $2$ representation.
385
+ This function follows the dimension-index conventions in `mapFolding._e._semiotics` [2].
386
+ This function uses `gmpy2.bit_scan1` [3].
387
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [4].
388
+
389
+ Parameters
390
+ ----------
391
+ integerNonnegative : int
392
+ Input value interpreted as a base-2 positional coordinate encoding.
393
+
394
+ Returns
395
+ -------
396
+ dimensionIndexNearestTail : int
397
+ The 0-indexed position of the least-significant base-2 digit with value `1`.
398
+
399
+ Raises
400
+ ------
401
+ ValueError
402
+ Raised when `integerNonnegative` is less than `0`.
403
+
404
+ Examples
405
+ --------
406
+ This function is used when building domain tuples.
407
+
408
+ >>> dimensionTail: int = dimensionNearestTail(pileOfLeaf二一)
409
+
410
+ References
411
+ ----------
412
+ [1] Positional notation - Wikipedia
413
+ https://en.wikipedia.org/wiki/Positional_notation
414
+ [2] mapFolding._e._semiotics
415
+ Internal package reference
416
+ [3] gmpy2 documentation
417
+ https://gmpy2.readthedocs.io/en/latest/
418
+ [4] hunterMakesPy
419
+ https://context7.com/hunterhogan/huntermakespy
420
+ """
421
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
422
+ if anInteger < 0:
423
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
424
+ raise ValueError(message)
425
+ return bit_scan1(anInteger) or 0
426
+
427
+ @cache
428
+ def howManyDimensionsHaveOddParity(integerNonnegative: int, /) -> int:
429
+ """You can count non-head radix-2 digits with value `1` in `integerNonnegative`.
430
+
431
+ (AI generated docstring)
432
+
433
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
434
+ For a non-zero value, the most-significant digit is treated as the head digit nearest the ideograph `首`, following
435
+ `mapFolding._e._semiotics` [2].
436
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [3].
437
+
438
+ Parameters
439
+ ----------
440
+ integerNonnegative : int
441
+ Input value interpreted as a base-2 positional coordinate encoding.
442
+
443
+ Returns
444
+ -------
445
+ countOnesExcludingHead : int
446
+ The count of digits equal to `1`, excluding the most-significant digit.
447
+ The return value is `0` when `integerNonnegative` is `0`.
448
+
449
+ Raises
450
+ ------
451
+ ValueError
452
+ Raised when `integerNonnegative` is less than `0`.
453
+
454
+ Examples
455
+ --------
456
+ This function is used to select the crease slicing index.
457
+
458
+ >>> slicingIndices: int = is_odd(howManyDimensionsHaveOddParity(leaf))
459
+
460
+ References
461
+ ----------
462
+ [1] Positional notation - Wikipedia
463
+ https://en.wikipedia.org/wiki/Positional_notation
464
+ [2] mapFolding._e._semiotics
465
+ Internal package reference
466
+ [3] hunterMakesPy
467
+ https://context7.com/hunterhogan/huntermakespy
468
+ """
469
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
470
+ if anInteger < 0:
471
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
472
+ raise ValueError(message)
473
+ return max(0, anInteger.bit_count() - 1)
474
+
475
+ @cache
476
+ def invertLeafIn2上nDimensions(dimensionsTotal: int, integerNonnegative: int) -> int:
477
+ """You can invert base-2 digits in `integerNonnegative` within a dimension count `dimensionsTotal`.
478
+
479
+ (AI generated docstring)
480
+
481
+ This function treats `integerNonnegative` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
482
+ The fixed-width inversion uses `dimensionsTotal` as the digit width, which aligns with the dimension indexing conventions in
483
+ `mapFolding._e._semiotics` [2].
484
+ This function uses `gmpy2.bit_mask` [3] to build an inversion mask.
485
+ This function validates `integerNonnegative` using `hunterMakesPy.parseParameters.intInnit` [4].
486
+
487
+ Parameters
488
+ ----------
489
+ dimensionsTotal : int
490
+ The number of base-2 digit positions that define the inversion mask.
491
+ integerNonnegative : int
492
+ Input value interpreted as a base-2 positional coordinate encoding.
493
+
494
+ Returns
495
+ -------
496
+ integerInverted : int
497
+ The value produced by XOR with `bit_mask(dimensionsTotal)`.
498
+
499
+ Raises
500
+ ------
501
+ ValueError
502
+ Raised when `integerNonnegative` is less than `0`.
503
+
504
+ Examples
505
+ --------
506
+ This function is used to compute a tail measurement by inverting within `state.dimensionsTotal`.
507
+
508
+ >>> anInteger: int = invertLeafIn2上nDimensions(state.dimensionsTotal, integerNonnegative)
509
+ >>> return bit_scan1(anInteger) or 0
510
+
511
+ References
512
+ ----------
513
+ [1] Positional notation - Wikipedia
514
+ https://en.wikipedia.org/wiki/Positional_notation
515
+ [2] mapFolding._e._semiotics
516
+ Internal package reference
517
+ [3] gmpy2 documentation
518
+ https://gmpy2.readthedocs.io/en/latest/
519
+ [4] hunterMakesPy
520
+ https://context7.com/hunterhogan/huntermakespy
521
+ """
522
+ anInteger: int = getitem(intInnit([integerNonnegative], 'integerNonnegative', int), 0)
523
+ if anInteger < 0:
524
+ message: str = f"I received `{integerNonnegative = }`, but I need a value greater than or equal to 0."
525
+ raise ValueError(message)
526
+ return int(anInteger ^ bit_mask(dimensionsTotal))
527
+
528
+ @cache
529
+ def ptount(integerAbove3: int, /) -> int:
530
+ """You can compute a bit-count-derived measurement after subtracting `一+零` from `integerAbove3`.
531
+
532
+ This function treats `integerAbove3` as a single-base positional-numeral system as a proxy for Cartesian coordinates [1].
533
+ This function follows the dimension-index conventions in `mapFolding._e._semiotics` [2].
534
+
535
+ This function delegates to `leafInSubHyperplane` [3].
536
+ This function validates `integerAbove3` using `hunterMakesPy.parseParameters.intInnit` [4].
537
+ This function computes `leafInSubHyperplane(integerAbove3 - (一+零)).bit_count()`.
538
+
539
+ Parameters
540
+ ----------
541
+ integerAbove3 : int
542
+ Input value interpreted as a base-2 positional coordinate encoding.
543
+ The value must be at least `3`.
544
+
545
+ Returns
546
+ -------
547
+ measurement : int
548
+ The `int.bit_count` value of the projected sub-hyperplane value.
549
+
550
+ Raises
551
+ ------
552
+ ValueError
553
+ Raised when `integerAbove3` is less than `3`.
554
+
555
+ Examples
556
+ --------
557
+ This function is used to choose crease indices.
558
+
559
+ >>> if isOdd吗(leafAt一零):
560
+ ... listCreaseIndicesExcluded.extend([*range(dimensionNearest首(leafAt一零), 5), ptount(leafAt一零)])
561
+
562
+ References
563
+ ----------
564
+ [1] Positional notation - Wikipedia
565
+ https://en.wikipedia.org/wiki/Positional_notation
566
+ [2] mapFolding._e._semiotics
567
+ Internal package reference
568
+ [3] mapFolding._e._measure.leafInSubHyperplane
569
+ Internal package reference
570
+ [4] hunterMakesPy
571
+ https://context7.com/hunterhogan/huntermakespy
572
+ """
573
+ anInteger: int = getitem(intInnit([integerAbove3], 'integerAbove3', int), 0)
574
+ if anInteger < 3:
575
+ message: str = f"I received `{integerAbove3 = }`, but I need a value greater than 3."
576
+ raise ValueError(message)
577
+
578
+ return leafInSubHyperplane(anInteger - (一+零)).bit_count()
579
+