mapFolding 0.16.2__py3-none-any.whl → 0.16.4__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 (66) hide show
  1. easyRun/NOTcountingFolds.py +6 -5
  2. easyRun/countFolds.py +1 -1
  3. easyRun/generateAllModules.py +14 -0
  4. easyRun/meanders.py +1 -1
  5. mapFolding/__init__.py +1 -0
  6. mapFolding/_theSSOT.py +3 -2
  7. mapFolding/_theTypes.py +3 -0
  8. mapFolding/algorithms/A086345.py +75 -0
  9. mapFolding/algorithms/oeisIDbyFormula.py +2 -2
  10. mapFolding/algorithms/symmetricFolds.py +36 -0
  11. mapFolding/basecamp.py +80 -149
  12. mapFolding/dataBaskets.py +123 -5
  13. mapFolding/filesystemToolkit.py +4 -32
  14. mapFolding/oeis.py +5 -12
  15. mapFolding/reference/A086345Wu.py +25 -0
  16. mapFolding/reference/matrixMeandersAnalysis/signatures.py +3 -0
  17. mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py +10 -45
  18. mapFolding/someAssemblyRequired/A007822/_asynchronousAnnex.py +51 -0
  19. mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py +36 -195
  20. mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py +42 -44
  21. mapFolding/someAssemblyRequired/RecipeJob.py +78 -18
  22. mapFolding/someAssemblyRequired/__init__.py +3 -8
  23. mapFolding/someAssemblyRequired/_toolkitContainers.py +32 -3
  24. mapFolding/someAssemblyRequired/infoBooth.py +40 -23
  25. mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +74 -153
  26. mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +56 -88
  27. mapFolding/someAssemblyRequired/makingModules_count.py +10 -12
  28. mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py +6 -68
  29. mapFolding/someAssemblyRequired/{mapFolding → mapFoldingModules}/makeMapFoldingModules.py +24 -30
  30. mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py +8 -6
  31. mapFolding/someAssemblyRequired/toolkitMakeModules.py +2 -2
  32. mapFolding/someAssemblyRequired/toolkitNumba.py +1 -1
  33. mapFolding/someAssemblyRequired/transformationTools.py +10 -12
  34. mapFolding/syntheticModules/A007822/algorithm.py +45 -50
  35. mapFolding/syntheticModules/A007822/asynchronous.py +91 -34
  36. mapFolding/syntheticModules/A007822/initializeState.py +15 -21
  37. mapFolding/syntheticModules/A007822/theorem2.py +16 -22
  38. mapFolding/syntheticModules/A007822/theorem2Numba.py +20 -26
  39. mapFolding/syntheticModules/A007822/theorem2Trimmed.py +17 -23
  40. mapFolding/syntheticModules/countParallelNumba.py +3 -7
  41. mapFolding/syntheticModules/daoOfMapFoldingNumba.py +1 -2
  42. mapFolding/syntheticModules/meanders/bigInt.py +9 -9
  43. mapFolding/syntheticModules/theorem2Numba.py +28 -9
  44. mapFolding/syntheticModules/theorem2Trimmed.py +1 -1
  45. mapFolding/tests/test_computations.py +1 -1
  46. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/METADATA +4 -1
  47. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/RECORD +52 -61
  48. mapFolding/_dataPacking.py +0 -68
  49. mapFolding/reference/meandersDumpingGround/A005316intOptimized.py +0 -122
  50. mapFolding/reference/meandersDumpingGround/A005316optimized128bit.py +0 -79
  51. mapFolding/reference/meandersDumpingGround/matrixMeandersBaseline.py +0 -65
  52. mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineAnnex.py +0 -84
  53. mapFolding/reference/meandersDumpingGround/matrixMeandersSimpleQueue.py +0 -90
  54. mapFolding/syntheticModules/A007822/algorithmNumba.py +0 -94
  55. mapFolding/syntheticModules/A007822/asynchronousAnnex.py +0 -66
  56. mapFolding/syntheticModules/A007822/asynchronousAnnexNumba.py +0 -70
  57. mapFolding/syntheticModules/A007822/asynchronousNumba.py +0 -79
  58. mapFolding/syntheticModules/A007822/asynchronousTheorem2.py +0 -65
  59. mapFolding/syntheticModules/A007822/asynchronousTrimmed.py +0 -56
  60. mapFolding/syntheticModules/dataPacking.py +0 -26
  61. mapFolding/syntheticModules/dataPackingA007822.py +0 -92
  62. /mapFolding/someAssemblyRequired/{mapFolding → mapFoldingModules}/__init__.py +0 -0
  63. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/WHEEL +0 -0
  64. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/entry_points.txt +0 -0
  65. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/licenses/LICENSE +0 -0
  66. {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/top_level.txt +0 -0
@@ -1,33 +1,25 @@
1
- from mapFolding.dataBaskets import (
2
- Array1DElephino, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal,
3
- MapFoldingState)
1
+ from mapFolding.dataBaskets import Array1DElephino, Array1DLeavesTotal, Array2DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal, SymmetricFoldsState
4
2
  from mapFolding.syntheticModules.A007822.initializeState import transitionOnGroupsOfFolds
5
3
  from numba import jit
4
+ import numpy
6
5
 
7
6
  @jit(cache=True, error_model='numpy', fastmath=True, forceinline=True)
8
- def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1ndexCeiling: DatatypeElephino, indexDimension: DatatypeLeavesTotal, indexLeaf: DatatypeLeavesTotal, indexMiniGap: DatatypeElephino, leaf1ndex: DatatypeLeavesTotal, leafConnectee: DatatypeLeavesTotal, dimensionsUnconstrained: DatatypeLeavesTotal, countDimensionsGapped: Array1DLeavesTotal, gapRangeStart: Array1DElephino, gapsWhere: Array1DLeavesTotal, leafAbove: Array1DLeavesTotal, leafBelow: Array1DLeavesTotal, leafComparison: Array1DLeavesTotal, connectionGraph: Array3DLeavesTotal, dimensionsTotal: DatatypeLeavesTotal, leavesTotal: DatatypeLeavesTotal) -> tuple[DatatypeFoldsTotal, DatatypeElephino, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal, Array1DLeavesTotal, Array1DElephino, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal]:
7
+ def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1ndexCeiling: DatatypeElephino, indexDimension: DatatypeLeavesTotal, indexLeaf: DatatypeLeavesTotal, indexMiniGap: DatatypeElephino, leaf1ndex: DatatypeLeavesTotal, leafConnectee: DatatypeLeavesTotal, dimensionsUnconstrained: DatatypeLeavesTotal, countDimensionsGapped: Array1DLeavesTotal, gapRangeStart: Array1DElephino, gapsWhere: Array1DLeavesTotal, leafAbove: Array1DLeavesTotal, leafBelow: Array1DLeavesTotal, leafComparison: Array1DLeavesTotal, arrayGroupOfFolds: Array2DLeavesTotal, connectionGraph: Array3DLeavesTotal, dimensionsTotal: DatatypeLeavesTotal, indicesArrayGroupOfFolds: Array2DLeavesTotal, leavesTotal: DatatypeLeavesTotal) -> tuple[DatatypeFoldsTotal, DatatypeElephino, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal, Array1DLeavesTotal, Array1DElephino, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array2DLeavesTotal, Array3DLeavesTotal, DatatypeLeavesTotal, Array2DLeavesTotal, DatatypeLeavesTotal]:
9
8
  while leaf1ndex > 4:
10
9
  if leafBelow[0] == 1:
11
10
  if leaf1ndex > leavesTotal:
12
- indexLeaf = 0
13
- leafConnectee = 0
11
+ indexLeaf = 1
12
+ leafComparison[0] = 1
13
+ leafConnectee = 1
14
14
  while leafConnectee < leavesTotal + 1:
15
- leafNumber = int(leafBelow[indexLeaf])
16
- leafComparison[leafConnectee] = (leafNumber - indexLeaf + leavesTotal) % leavesTotal
17
- indexLeaf = leafNumber
15
+ indexMiniGap = leafBelow[indexLeaf]
16
+ leafComparison[leafConnectee] = (indexMiniGap - indexLeaf + leavesTotal) % leavesTotal
17
+ indexLeaf = indexMiniGap
18
18
  leafConnectee += 1
19
- indexInMiddle = leavesTotal // 2
20
- indexMiniGap = 0
21
- while indexMiniGap < leavesTotal + 1:
22
- ImaSymmetricFold = True
23
- leafConnectee = 0
24
- while leafConnectee < indexInMiddle:
25
- if leafComparison[(indexMiniGap + leafConnectee) % (leavesTotal + 1)] != leafComparison[(indexMiniGap + leavesTotal - 1 - leafConnectee) % (leavesTotal + 1)]:
26
- ImaSymmetricFold = False
27
- break
28
- leafConnectee += 1
29
- groupsOfFolds += ImaSymmetricFold
30
- indexMiniGap += 1
19
+ arrayGroupOfFolds = numpy.take(leafComparison, indicesArrayGroupOfFolds)
20
+ compared = arrayGroupOfFolds[..., 0:leavesTotal // 2] == arrayGroupOfFolds[..., leavesTotal // 2:None]
21
+ for indexRow in range(len(compared)):
22
+ groupsOfFolds += compared[indexRow].all()
31
23
  else:
32
24
  dimensionsUnconstrained = dimensionsTotal
33
25
  gap1ndexCeiling = gapRangeStart[leaf1ndex - 1]
@@ -65,9 +57,9 @@ def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1nde
65
57
  else:
66
58
  groupsOfFolds *= 2
67
59
  groupsOfFolds = (groupsOfFolds + 1) // 2
68
- return (groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, connectionGraph, dimensionsTotal, leavesTotal)
60
+ return (groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, arrayGroupOfFolds, connectionGraph, dimensionsTotal, indicesArrayGroupOfFolds, leavesTotal)
69
61
 
70
- def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
62
+ def doTheNeedful(state: SymmetricFoldsState) -> SymmetricFoldsState:
71
63
  state = transitionOnGroupsOfFolds(state)
72
64
  mapShape: tuple[DatatypeLeavesTotal, ...] = state.mapShape
73
65
  groupsOfFolds: DatatypeFoldsTotal = state.groupsOfFolds
@@ -85,9 +77,11 @@ def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
85
77
  leafAbove: Array1DLeavesTotal = state.leafAbove
86
78
  leafBelow: Array1DLeavesTotal = state.leafBelow
87
79
  leafComparison: Array1DLeavesTotal = state.leafComparison
80
+ arrayGroupOfFolds: Array2DLeavesTotal = state.arrayGroupOfFolds
88
81
  connectionGraph: Array3DLeavesTotal = state.connectionGraph
89
82
  dimensionsTotal: DatatypeLeavesTotal = state.dimensionsTotal
83
+ indicesArrayGroupOfFolds: Array2DLeavesTotal = state.indicesArrayGroupOfFolds
90
84
  leavesTotal: DatatypeLeavesTotal = state.leavesTotal
91
- groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, connectionGraph, dimensionsTotal, leavesTotal = count(groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, connectionGraph, dimensionsTotal, leavesTotal)
92
- state = MapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow, leafComparison=leafComparison)
93
- return state
85
+ groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, arrayGroupOfFolds, connectionGraph, dimensionsTotal, indicesArrayGroupOfFolds, leavesTotal = count(groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, leafComparison, arrayGroupOfFolds, connectionGraph, dimensionsTotal, indicesArrayGroupOfFolds, leavesTotal)
86
+ state = SymmetricFoldsState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow, leafComparison=leafComparison)
87
+ return state
@@ -1,29 +1,23 @@
1
- from mapFolding.dataBaskets import MapFoldingState
1
+ from mapFolding.dataBaskets import SymmetricFoldsState
2
2
  from mapFolding.syntheticModules.A007822.initializeState import transitionOnGroupsOfFolds
3
+ import numpy
3
4
 
4
- def count(state: MapFoldingState) -> MapFoldingState:
5
+ def count(state: SymmetricFoldsState) -> SymmetricFoldsState:
5
6
  while state.leaf1ndex > 4:
6
7
  if state.leafBelow[0] == 1:
7
8
  if state.leaf1ndex > state.leavesTotal:
8
- state.indexLeaf = 0
9
- leafConnectee = 0
10
- while leafConnectee < state.leavesTotal + 1:
11
- leafNumber = int(state.leafBelow[state.indexLeaf])
12
- state.leafComparison[leafConnectee] = (leafNumber - state.indexLeaf + state.leavesTotal) % state.leavesTotal
13
- state.indexLeaf = leafNumber
14
- leafConnectee += 1
15
- indexInMiddle = state.leavesTotal // 2
16
- state.indexMiniGap = 0
17
- while state.indexMiniGap < state.leavesTotal + 1:
18
- ImaSymmetricFold = True
19
- leafConnectee = 0
20
- while leafConnectee < indexInMiddle:
21
- if state.leafComparison[(state.indexMiniGap + leafConnectee) % (state.leavesTotal + 1)] != state.leafComparison[(state.indexMiniGap + state.leavesTotal - 1 - leafConnectee) % (state.leavesTotal + 1)]:
22
- ImaSymmetricFold = False
23
- break
24
- leafConnectee += 1
25
- state.groupsOfFolds += ImaSymmetricFold
26
- state.indexMiniGap += 1
9
+ state.indexLeaf = 1
10
+ state.leafComparison[0] = 1
11
+ state.leafConnectee = 1
12
+ while state.leafConnectee < state.leavesTotal + 1:
13
+ state.indexMiniGap = state.leafBelow[state.indexLeaf]
14
+ state.leafComparison[state.leafConnectee] = (state.indexMiniGap - state.indexLeaf + state.leavesTotal) % state.leavesTotal
15
+ state.indexLeaf = state.indexMiniGap
16
+ state.leafConnectee += 1
17
+ state.arrayGroupOfFolds = numpy.take(state.leafComparison, state.indicesArrayGroupOfFolds)
18
+ compared = state.arrayGroupOfFolds[..., 0:state.leavesTotal // 2] == state.arrayGroupOfFolds[..., state.leavesTotal // 2:None]
19
+ for indexRow in range(len(compared)):
20
+ state.groupsOfFolds += compared[indexRow].all()
27
21
  else:
28
22
  state.dimensionsUnconstrained = state.dimensionsTotal
29
23
  state.gap1ndexCeiling = state.gapRangeStart[state.leaf1ndex - 1]
@@ -63,7 +57,7 @@ def count(state: MapFoldingState) -> MapFoldingState:
63
57
  state.groupsOfFolds = (state.groupsOfFolds + 1) // 2
64
58
  return state
65
59
 
66
- def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
60
+ def doTheNeedful(state: SymmetricFoldsState) -> SymmetricFoldsState:
67
61
  state = transitionOnGroupsOfFolds(state)
68
62
  state = count(state)
69
- return state
63
+ return state
@@ -1,11 +1,8 @@
1
1
  from concurrent.futures import Future as ConcurrentFuture, ProcessPoolExecutor
2
2
  from copy import deepcopy
3
- from mapFolding.dataBaskets import (
4
- Array1DElephino, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal,
5
- ParallelMapFoldingState)
3
+ from mapFolding.dataBaskets import Array1DElephino, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal, ParallelMapFoldingState
6
4
  from multiprocessing import set_start_method as multiprocessing_set_start_method
7
5
  from numba import jit
8
-
9
6
  if __name__ == '__main__':
10
7
  multiprocessing_set_start_method('spawn')
11
8
 
@@ -75,14 +72,13 @@ def unRepackParallelMapFoldingState(state: ParallelMapFoldingState) -> ParallelM
75
72
  gapsWhere: Array1DLeavesTotal = state.gapsWhere
76
73
  leafAbove: Array1DLeavesTotal = state.leafAbove
77
74
  leafBelow: Array1DLeavesTotal = state.leafBelow
78
- leafComparison: Array1DLeavesTotal = state.leafComparison
79
75
  connectionGraph: Array3DLeavesTotal = state.connectionGraph
80
76
  dimensionsTotal: DatatypeLeavesTotal = state.dimensionsTotal
81
77
  leavesTotal: DatatypeLeavesTotal = state.leavesTotal
82
78
  taskDivisions: DatatypeLeavesTotal = state.taskDivisions
83
79
  taskIndex: DatatypeLeavesTotal = state.taskIndex
84
80
  groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal, taskDivisions, taskIndex = count(groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal, taskDivisions, taskIndex)
85
- state = ParallelMapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow, leafComparison=leafComparison, taskDivisions=taskDivisions, taskIndex=taskIndex)
81
+ state = ParallelMapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow, taskDivisions=taskDivisions, taskIndex=taskIndex)
86
82
  return state
87
83
 
88
84
  def doTheNeedful(state: ParallelMapFoldingState, concurrencyLimit: int) -> tuple[int, list[ParallelMapFoldingState]]:
@@ -99,4 +95,4 @@ def doTheNeedful(state: ParallelMapFoldingState, concurrencyLimit: int) -> tuple
99
95
  listStatesParallel[indexSherpa] = dictionaryConcurrency[indexSherpa].result()
100
96
  groupsOfFoldsTotal += listStatesParallel[indexSherpa].groupsOfFolds
101
97
  foldsTotal: int = groupsOfFoldsTotal * stateParallel.leavesTotal
102
- return (foldsTotal, listStatesParallel)
98
+ return (foldsTotal, listStatesParallel)
@@ -66,10 +66,9 @@ def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
66
66
  gapsWhere: Array1DLeavesTotal = state.gapsWhere
67
67
  leafAbove: Array1DLeavesTotal = state.leafAbove
68
68
  leafBelow: Array1DLeavesTotal = state.leafBelow
69
- leafComparison: Array1DLeavesTotal = state.leafComparison
70
69
  connectionGraph: Array3DLeavesTotal = state.connectionGraph
71
70
  dimensionsTotal: DatatypeLeavesTotal = state.dimensionsTotal
72
71
  leavesTotal: DatatypeLeavesTotal = state.leavesTotal
73
72
  groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal = count(groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal)
74
- state = MapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow, leafComparison=leafComparison)
73
+ state = MapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow)
75
74
  return state
@@ -6,16 +6,16 @@ from mapFolding.dataBaskets import MatrixMeandersNumPyState
6
6
  def countBigInt(state: MatrixMeandersNumPyState) -> MatrixMeandersNumPyState:
7
7
  """Count meanders with matrix transfer algorithm using Python `int` (*int*eger) contained in a Python `dict` (*dict*ionary).
8
8
 
9
- Parameters
10
- ----------
11
- state : MatrixMeandersState
12
- The algorithm state.
9
+ Parameters
10
+ ----------
11
+ state : MatrixMeandersState
12
+ The algorithm state.
13
13
 
14
- Notes
15
- -----
16
- The matrix transfer algorithm is sophisticated, but this implementation is straightforward: compute each index one at a time,
17
- compute each `arcCode` one at a time, and compute each type of analysis one at a time.
18
- """
14
+ Notes
15
+ -----
16
+ The matrix transfer algorithm is sophisticated, but this implementation is straightforward: compute each index one at a time,
17
+ compute each `arcCode` one at a time, and compute each type of analysis one at a time.
18
+ """
19
19
  dictionaryArcCodeToCrossings: dict[int, int] = {}
20
20
  while state.boundary > 0 and areIntegersWide(state):
21
21
  state.boundary -= 1
@@ -1,8 +1,9 @@
1
- from mapFolding.dataBaskets import Array1DElephino, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal
1
+ from mapFolding.dataBaskets import Array1DElephino, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeElephino, DatatypeFoldsTotal, DatatypeLeavesTotal, MapFoldingState
2
+ from mapFolding.syntheticModules.initializeState import transitionOnGroupsOfFolds
2
3
  from numba import jit
3
4
 
4
5
  @jit(cache=True, error_model='numpy', fastmath=True, forceinline=True)
5
- def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1ndexCeiling: DatatypeElephino, indexDimension: DatatypeLeavesTotal, indexLeaf: DatatypeLeavesTotal, indexMiniGap: DatatypeElephino, leaf1ndex: DatatypeLeavesTotal, leafConnectee: DatatypeLeavesTotal, dimensionsUnconstrained: DatatypeLeavesTotal, countDimensionsGapped: Array1DLeavesTotal, gapRangeStart: Array1DElephino, gapsWhere: Array1DLeavesTotal, leafAbove: Array1DLeavesTotal, leafBelow: Array1DLeavesTotal, connectionGraph: Array3DLeavesTotal, dimensionsTotal: DatatypeLeavesTotal, leavesTotal: DatatypeLeavesTotal) -> tuple[DatatypeFoldsTotal, DatatypeElephino, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal, Array1DLeavesTotal, Array1DElephino, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal]:
6
+ def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1ndexCeiling: DatatypeElephino, indexDimension: DatatypeLeavesTotal, indexMiniGap: DatatypeElephino, leaf1ndex: DatatypeLeavesTotal, leafConnectee: DatatypeLeavesTotal, dimensionsUnconstrained: DatatypeLeavesTotal, countDimensionsGapped: Array1DLeavesTotal, gapRangeStart: Array1DElephino, gapsWhere: Array1DLeavesTotal, leafAbove: Array1DLeavesTotal, leafBelow: Array1DLeavesTotal, connectionGraph: Array3DLeavesTotal, dimensionsTotal: DatatypeLeavesTotal, leavesTotal: DatatypeLeavesTotal) -> tuple[DatatypeFoldsTotal, DatatypeElephino, DatatypeElephino, DatatypeLeavesTotal, DatatypeElephino, DatatypeLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal, Array1DLeavesTotal, Array1DElephino, Array1DLeavesTotal, Array1DLeavesTotal, Array1DLeavesTotal, Array3DLeavesTotal, DatatypeLeavesTotal, DatatypeLeavesTotal]:
6
7
  while leaf1ndex > 4:
7
8
  if leafBelow[0] == 1:
8
9
  if leaf1ndex > leavesTotal:
@@ -23,12 +24,6 @@ def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1nde
23
24
  countDimensionsGapped[leafConnectee] += 1
24
25
  leafConnectee = connectionGraph[indexDimension, leaf1ndex, leafBelow[leafConnectee]]
25
26
  indexDimension += 1
26
- if not dimensionsUnconstrained:
27
- indexLeaf = 0
28
- while indexLeaf < leaf1ndex:
29
- gapsWhere[gap1ndexCeiling] = indexLeaf
30
- gap1ndexCeiling += 1
31
- indexLeaf += 1
32
27
  indexMiniGap = gap1ndex
33
28
  while indexMiniGap < gap1ndexCeiling:
34
29
  gapsWhere[gap1ndex] = gapsWhere[indexMiniGap]
@@ -49,4 +44,28 @@ def count(groupsOfFolds: DatatypeFoldsTotal, gap1ndex: DatatypeElephino, gap1nde
49
44
  leaf1ndex += 1
50
45
  else:
51
46
  groupsOfFolds *= 2
52
- return (groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexLeaf, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal)
47
+ return (groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal)
48
+
49
+ def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
50
+ state = transitionOnGroupsOfFolds(state)
51
+ mapShape: tuple[DatatypeLeavesTotal, ...] = state.mapShape
52
+ groupsOfFolds: DatatypeFoldsTotal = state.groupsOfFolds
53
+ gap1ndex: DatatypeElephino = state.gap1ndex
54
+ gap1ndexCeiling: DatatypeElephino = state.gap1ndexCeiling
55
+ indexDimension: DatatypeLeavesTotal = state.indexDimension
56
+ indexLeaf: DatatypeLeavesTotal = state.indexLeaf
57
+ indexMiniGap: DatatypeElephino = state.indexMiniGap
58
+ leaf1ndex: DatatypeLeavesTotal = state.leaf1ndex
59
+ leafConnectee: DatatypeLeavesTotal = state.leafConnectee
60
+ dimensionsUnconstrained: DatatypeLeavesTotal = state.dimensionsUnconstrained
61
+ countDimensionsGapped: Array1DLeavesTotal = state.countDimensionsGapped
62
+ gapRangeStart: Array1DElephino = state.gapRangeStart
63
+ gapsWhere: Array1DLeavesTotal = state.gapsWhere
64
+ leafAbove: Array1DLeavesTotal = state.leafAbove
65
+ leafBelow: Array1DLeavesTotal = state.leafBelow
66
+ connectionGraph: Array3DLeavesTotal = state.connectionGraph
67
+ dimensionsTotal: DatatypeLeavesTotal = state.dimensionsTotal
68
+ leavesTotal: DatatypeLeavesTotal = state.leavesTotal
69
+ groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal = count(groupsOfFolds, gap1ndex, gap1ndexCeiling, indexDimension, indexMiniGap, leaf1ndex, leafConnectee, dimensionsUnconstrained, countDimensionsGapped, gapRangeStart, gapsWhere, leafAbove, leafBelow, connectionGraph, dimensionsTotal, leavesTotal)
70
+ state = MapFoldingState(mapShape=mapShape, groupsOfFolds=groupsOfFolds, gap1ndex=gap1ndex, gap1ndexCeiling=gap1ndexCeiling, indexDimension=indexDimension, indexLeaf=indexLeaf, indexMiniGap=indexMiniGap, leaf1ndex=leaf1ndex, leafConnectee=leafConnectee, dimensionsUnconstrained=dimensionsUnconstrained, countDimensionsGapped=countDimensionsGapped, gapRangeStart=gapRangeStart, gapsWhere=gapsWhere, leafAbove=leafAbove, leafBelow=leafBelow)
71
+ return state
@@ -44,7 +44,7 @@ def count(state: MapFoldingState) -> MapFoldingState:
44
44
  state.groupsOfFolds *= 2
45
45
  return state
46
46
 
47
- def doTheNeedful(state: MapFoldingState, /) -> MapFoldingState:
47
+ def doTheNeedful(state: MapFoldingState) -> MapFoldingState:
48
48
  state = transitionOnGroupsOfFolds(state)
49
49
  state = count(state)
50
50
  return state
@@ -40,7 +40,7 @@ import pytest
40
40
  if __name__ == '__main__':
41
41
  multiprocessing.set_start_method('spawn')
42
42
 
43
- @pytest.mark.parametrize('flow', ['algorithm', 'asynchronous', 'asynchronousTheorem2', 'asynchronousTrimmed', 'numba', 'theorem2', 'theorem2Numba', 'theorem2Trimmed'])
43
+ @pytest.mark.parametrize('flow', ['algorithm', 'asynchronous', 'theorem2', 'theorem2Numba', 'theorem2Trimmed'])
44
44
  def test_A007822(flow: str) -> None:
45
45
  """Test A007822 flow options.
46
46
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapFolding
3
- Version: 0.16.2
3
+ Version: 0.16.4
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
@@ -40,7 +40,10 @@ Requires-Dist: hunterMakesPy
40
40
  Requires-Dist: isort
41
41
  Requires-Dist: numpy
42
42
  Requires-Dist: platformdirs
43
+ Requires-Dist: sympy
43
44
  Provides-Extra: development
45
+ Requires-Dist: ipykernel; extra == "development"
46
+ Requires-Dist: ipywidgets; extra == "development"
44
47
  Requires-Dist: memray; sys_platform == "linux" and extra == "development"
45
48
  Requires-Dist: mypy; extra == "development"
46
49
  Requires-Dist: pyupgrade; extra == "development"
@@ -1,29 +1,32 @@
1
1
  easyRun/A000682.py,sha256=nJJrmVycQUe1H7ms11QGz1ZyYUVdZsjEGtuJk97yxQ0,713
2
2
  easyRun/A005316.py,sha256=WCIqsNSevjgUSnTe24d6zWKLZnJSoy14piSt6G26WuE,434
3
- easyRun/NOTcountingFolds.py,sha256=k9nApcEWdMRSp8P25-bgQ78X4u6tmVR7Rc-22pyG7no,795
3
+ easyRun/NOTcountingFolds.py,sha256=3wlVLr_KVZwniu-F4KCsBUhsErpu9BZCBGuvlz6-668,807
4
4
  easyRun/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- easyRun/countFolds.py,sha256=piPyd7Z_D9ulvQv7iP2JwS7uam2CbVTIZyF_1a3ZELw,1181
6
- easyRun/meanders.py,sha256=mka_tZvhQaJeY_nlOe8a0AE86_iI3tkwc7EeZ9uZ0Lg,1826
7
- mapFolding/__init__.py,sha256=OxFw-BmIomKuRv_YWHAekLJasfFo3LfBxQpS3gHi6K0,1867
8
- mapFolding/_dataPacking.py,sha256=zNRzXxAeg1a0DjlAB9IWeG82Rq7ALLEUzNfQDgoj2oA,3440
9
- mapFolding/_theSSOT.py,sha256=n3Y_cEFS385N8MaS5fMYgYSGmDyngOrmWcY8pK58OYo,5244
10
- mapFolding/_theTypes.py,sha256=_5yMvUDhEOe1bZSYB3IDipOnUNbFg6xENpoKd1h372c,7075
11
- mapFolding/basecamp.py,sha256=g_33al4s3-wZLq5tdgG5M6HBoN8B5P_9ZAc0z7EM0gg,16749
5
+ easyRun/countFolds.py,sha256=_7bdg31cN-Dtq4CATECRI1_dxhcrLwoTU9z8d9RWBjk,1181
6
+ easyRun/generateAllModules.py,sha256=xsXFs0BwQ_O5m5rqMjhgMOZ3lj9ssmc3Qdxazp7_uAI,622
7
+ easyRun/meanders.py,sha256=PeilOcWDZwTH60NHgkkMGeqIIAAfRMgL4f7qrVUN4gs,1824
8
+ mapFolding/__init__.py,sha256=ZVkNS11uN04EWDBazqkY4AeVZC9UOXV_W-1V9QZgnl0,1913
9
+ mapFolding/_theSSOT.py,sha256=QuyDsMCbqv3Au4RUgdYPcyR89JrT9WkzcauzybpgKzU,5384
10
+ mapFolding/_theTypes.py,sha256=0uf4x31ilFxIO6sbiSd39H5_7VWBKxColVmfy3oIafk,7376
11
+ mapFolding/basecamp.py,sha256=WXrtT5SeYdHovlTdTjkMh6ua_EU7yApBcMyPVMJfpvs,15088
12
12
  mapFolding/beDRY.py,sha256=0vJwnsvz6_jR8gfuU38vW9KoMTnRqyaYaAwbJcKLhFI,12674
13
- mapFolding/dataBaskets.py,sha256=wgtBYqMjgr9O2tnui59pFiinNqZy5ZtF_WhpbURJpmQ,20154
14
- mapFolding/filesystemToolkit.py,sha256=Ex5tyugRQurXIgUNVtkQYfWMq8fM4e-izX01MBXU5_8,11006
15
- mapFolding/oeis.py,sha256=wRKRvDG2mChrwQOMMLuL5xvU0zUYA0PhHbpJynwOKpY,17661
13
+ mapFolding/dataBaskets.py,sha256=2_auINZy4O3FreQIAK3DX0QafWoPO-WGop8QWOzKxIg,29058
14
+ mapFolding/filesystemToolkit.py,sha256=ic69Y043xrdoFjKqiB0YJ6Zp8oosBWwdXi_hmg79PVs,10134
15
+ mapFolding/oeis.py,sha256=2sqdFgYguB4sDpcYGYB_mJL57k9sHs7FUXF05pvIEak,17300
16
16
  mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ mapFolding/algorithms/A086345.py,sha256=te3Zy76eJLE3dSFsK7hXTHJapewM1u43GBUV78fL2z8,2492
17
18
  mapFolding/algorithms/__init__.py,sha256=gARPqfySaeSWMfApQ5wSxzy7ZdgLdKYsLqsRSEYWwWI,28
18
19
  mapFolding/algorithms/daoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
19
20
  mapFolding/algorithms/matrixMeanders.py,sha256=swU6xSo0QhhmA_FxmZhmqvGLJ0h_rS_75jO-SHETWLA,3489
20
21
  mapFolding/algorithms/matrixMeandersBeDry.py,sha256=92qk8dSXn2YxtUYhzSFpJpKDRUx6vbfMaRCbJt9baw0,7539
21
22
  mapFolding/algorithms/matrixMeandersNumPy.py,sha256=DsMUnB-tsttBm4ib385BaYS2Dnr-KCokKWfK7RjQ780,17147
22
23
  mapFolding/algorithms/matrixMeandersPandas.py,sha256=9Pm49HdK0g2MJ15CuZoXOFbdn8JcE0GHzz2p9NB3xvA,13167
23
- mapFolding/algorithms/oeisIDbyFormula.py,sha256=LLwCxmMY6minSuOWZHu1I9hKKNZP1ihe3ubGeH2uPDk,11762
24
+ mapFolding/algorithms/oeisIDbyFormula.py,sha256=jinaLXJb3annODlyidtNZkKIKUuFKp_yzjEZMHSMhQ0,11782
25
+ mapFolding/algorithms/symmetricFolds.py,sha256=ji6GitOuVqd_g0X3_mcKuXB6RhjVS0EpOQanlAc5fPI,1457
24
26
  mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py,sha256=eGf_gvHUuHAPFFQZd3NIaozY2sQUGse_njtZ8_AyZ-U,2438
25
27
  mapFolding/reference/A000682facts.py,sha256=wRg5uy72M-o-cYEF3waCa7NjTUZ3XOoD9dmkTaUiH0o,23510
26
28
  mapFolding/reference/A005316facts.py,sha256=Cg2Pqtv3Dnk8IZOqer8Wu3Ie2uwJV_M0Kmr6_QXjKuQ,11768
29
+ mapFolding/reference/A086345Wu.py,sha256=3FJlvcVkrQL2hz4IN2NdzmdMW0weWfYh9l1pnXBTQnc,1110
27
30
  mapFolding/reference/__init__.py,sha256=GKcSgYE49NcTISx-JZbELXyq-eRkMeTL5g4DXInWFw0,2206
28
31
  mapFolding/reference/flattened.py,sha256=0eHgLFIeIeVUsI5zF5oSy5iWYrjOMzxr7KjDxiTe01k,16078
29
32
  mapFolding/reference/hunterNumba.py,sha256=iLfyqwGdAh6c5GbapnKsWhAsNsR3O-fyGGHAdohluLw,7258
@@ -38,78 +41,66 @@ mapFolding/reference/jobsCompleted/[2x19]/p2x19.py,sha256=_tvYtfzMWVo2VtUbIAieos
38
41
  mapFolding/reference/jobsCompleted/p2x19/p2x19.py,sha256=eZEw4Me4ocTt6VXoK2-Sbd5SowZtxRIbN9dZmc7OCVg,6395
39
42
  mapFolding/reference/matrixMeandersAnalysis/__init__.py,sha256=FQbR63_z3_zd3HMrpUxx3_YIcn9znzA0RIggcMntSC8,35
40
43
  mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py,sha256=R9MUdS0vLEyaVdCio2AAfxEpBz6FDp7cZotEE47nFdU,1001
41
- mapFolding/reference/matrixMeandersAnalysis/signatures.py,sha256=nmZ88_MW-DirFlwpsbGvC1y7OxVlSKvDX4J0Hecd6zk,20472
44
+ mapFolding/reference/matrixMeandersAnalysis/signatures.py,sha256=6yHwW22032ysBgoG9LXxUyvWlKjQgxpB-f8lI213YZ0,20677
42
45
  mapFolding/reference/meandersDumpingGround/A005316JavaPort.py,sha256=syMHicfioP-0GrOq7GnEpuAFSNvRwnbGim0mqV862sA,4885
43
46
  mapFolding/reference/meandersDumpingGround/A005316imperative.py,sha256=UEbXPkORngVo0UrwS81SY2gwz1XWAaMZ0rgA7HMiVYk,3793
44
- mapFolding/reference/meandersDumpingGround/A005316intOptimized.py,sha256=oO9ktdYeFwtosVp5KliwH8JmCSxfjapjBM1iMECuDAc,4121
45
- mapFolding/reference/meandersDumpingGround/A005316optimized128bit.py,sha256=6JxmVBIQnN0rH0MQIZtu_wgY1Wbms8hZCWarMe5NLLU,3416
46
47
  mapFolding/reference/meandersDumpingGround/A005316primitiveOptimized.py,sha256=iFig6Edv1E774xrlVUFLyscC40DqDhV-oh4hOnG2DLI,4116
47
48
  mapFolding/reference/meandersDumpingGround/A005316redis.py,sha256=MPeiobrs3VsNZOOKYBg52oVp0OjVDzLEdsRKfrZ9LrU,4328
48
49
  mapFolding/reference/meandersDumpingGround/A005316write2disk.py,sha256=NMVrdhe5KhnXQfaQ5Xr7Pwl5oXYEOM1DrMISDDOCVVw,5633
49
50
  mapFolding/reference/meandersDumpingGround/matrixMeanders64retired.py,sha256=oRVgf6zkWRjk7dWR-Px41M_5spdvKy_Pich0qd7oxVA,9270
50
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaseline.py,sha256=8Z98MMfhTCdoa75HWZz4DO166EiHZCu5eHeFzhgK42s,3003
51
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineAnnex.py,sha256=d2Oh4JZxz53ox_ArhIxpMTOuA7rtE9wnEPojpFcnlfc,5817
52
51
  mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py,sha256=VpRiIGhnk-DbxwsHwCeCwXqcKLSNyHl-iRGLDH9ZGMY,7674
53
52
  mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py,sha256=G4358jHFr7hdOa709c8nYdR3eMMZjUqcxbS-L2aAOqw,24428
54
- mapFolding/reference/meandersDumpingGround/matrixMeandersSimpleQueue.py,sha256=pOfaS315OKIBG9GSqSJwUDcEhfnV2XduM9IPqHrBvJg,4083
55
53
  mapFolding/reference/meandersDumpingGround/matrixMeandersSlicePop.py,sha256=XyiesSQAH1dRplYx_CdR1FzcXvgmmxzj27V4aIqPp7o,5353
56
- mapFolding/someAssemblyRequired/RecipeJob.py,sha256=9gLalEg3HeJb-HOUy38Uwm7oO-DdRX6q1Q2S58e4FKI,9899
57
- mapFolding/someAssemblyRequired/__init__.py,sha256=3IF8HFIgFisJBQ1i4sx7Nz2iOqVoAG78jwjNJ9q531U,6272
54
+ mapFolding/someAssemblyRequired/RecipeJob.py,sha256=Dpu33Wu6OziJ8Sqx6TCHA10TBmNQT8yiCl2FtaM3jl0,13723
55
+ mapFolding/someAssemblyRequired/__init__.py,sha256=PIdLYHFSfYsQSP55PoQSusi1dsOGhiY986kgosGO3vI,5811
58
56
  mapFolding/someAssemblyRequired/_toolIfThis.py,sha256=QC2cmCea18BZ_WpoWoErYCWhROvmd40_i_nBO7YFRaE,6378
59
- mapFolding/someAssemblyRequired/_toolkitContainers.py,sha256=RJThCzIBWSk-dUO75QhRJgaJk6xz5Pf4-LBN1wv7hxo,13545
57
+ mapFolding/someAssemblyRequired/_toolkitContainers.py,sha256=rp1w-y5wXctcwSPkHG1JQSCY3ro5lc0AoAF_PkBJfQQ,14798
60
58
  mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=tY0-2K0BFkwLAAjSrFJLPoG8CevDHOFc3OH3TxXANzg,2806
61
- mapFolding/someAssemblyRequired/infoBooth.py,sha256=ZWFH37S2jMGRbNlmjhNvoaezIk8abS3DvHhy7qVOaQM,2139
62
- mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py,sha256=Zj0oCfx-puGcmSmilrVXC2rMKLfWx85yfsm3qTpqNSw,17274
63
- mapFolding/someAssemblyRequired/makeJobTheorem2codon.py,sha256=J8QJXijA39wu87YsB-WaPj0eYTRkE17SnWVd_FrUgf8,11542
64
- mapFolding/someAssemblyRequired/makingModules_count.py,sha256=AZpKfkXVXd2uk59OuxZWXNiy5NGeDwTJRHK0bvEuv-g,15158
65
- mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py,sha256=ppv94hTqUoJbHKT3TRXr5LI8lBV5EJSylzz9_9OD3fw,6452
66
- mapFolding/someAssemblyRequired/toolkitMakeModules.py,sha256=jxoDetQXL9zXXcAuTzdiYgvoB95ksSx7ZdsgKqsKMnM,7967
67
- mapFolding/someAssemblyRequired/toolkitNumba.py,sha256=3ujtBaA27CX8yVApnfNRzFpZd3GvsHv1H1vyTiiJIZk,14905
68
- mapFolding/someAssemblyRequired/transformationTools.py,sha256=ElTZFcobLvT-dplODTGt7NX8oLke2xvEVg3hTCNoHgs,11561
69
- mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py,sha256=lg-h91FgAZ3v4LfgpP5RyPByW17eiorJt4fC435b_B0,2989
59
+ mapFolding/someAssemblyRequired/infoBooth.py,sha256=lwz8Zp8FRlTrBFqBHnch6JC_AukQ3o9O4lbBJ-wQVrY,2417
60
+ mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py,sha256=C29oQyDFE0St85opv37hqvIncpZ5IzCHavprex4HNIU,14221
61
+ mapFolding/someAssemblyRequired/makeJobTheorem2codon.py,sha256=2wNA3iztFDN3jzxIneckgiR5UyRfApdjHbdXA4CRCWY,10118
62
+ mapFolding/someAssemblyRequired/makingModules_count.py,sha256=E1WwaM_w1xiBusX7ah61e2AdMiWIBqNM5v0r5pjsd_k,15053
63
+ mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py,sha256=1lo_30R7__bkrOlA7t-iwb1vnw6kCN5eZbCsiZg29cw,3119
64
+ mapFolding/someAssemblyRequired/toolkitMakeModules.py,sha256=wROp5yTJWts-_adcOwLKXr1e2P5vElKk4NCYkscXMZo,7915
65
+ mapFolding/someAssemblyRequired/toolkitNumba.py,sha256=Zi3JeJDio177T4P3om5XK_2wZzplZvkNy4PzY0NFiyM,14914
66
+ mapFolding/someAssemblyRequired/transformationTools.py,sha256=FzAraqdgxB7XOcxfKxeUI_zUNYiRKRn8eVAt6LcO4Ck,11553
67
+ mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py,sha256=HbnYk4th5p_jCJI-WzIED8a35JZSLVpecZyTaSIfKXM,1609
70
68
  mapFolding/someAssemblyRequired/A007822/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py,sha256=urXQOME95x_p5DnWUl0z-8Kq60QzyCXIdSnxpp-klS0,12629
72
- mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py,sha256=kHxVW4n92fRPX_4U4XMcjZCKad_PwxS2IRX2QVIFxDQ,4330
73
- mapFolding/someAssemblyRequired/mapFolding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- mapFolding/someAssemblyRequired/mapFolding/makeMapFoldingModules.py,sha256=YvSzypYv4KER_ue1wWGtQ4WtSpkrPhkT0SJmji4J1qg,16743
69
+ mapFolding/someAssemblyRequired/A007822/_asynchronousAnnex.py,sha256=mT4IEFTF2lVT8GeNJ2e18eWleBjwJGbOFZow0CjXx4Q,1726
70
+ mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py,sha256=QMH0ihfkLHr_j3UY3-vTRU3_YbyowTV9c-rP-rr5Ml0,5528
71
+ mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py,sha256=o80ac_b8KjogJ0jw0lUl36Qlw0XSw1QLQfzEU8UtjDE,4157
72
+ mapFolding/someAssemblyRequired/mapFoldingModules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py,sha256=mZS1OQ4ttnStKO0PZkb6dKjPU-DsbFUrrc2eG7Bw61I,16341
75
74
  mapFolding/someAssemblyRequired/meanders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py,sha256=GR4HAB07gXU9nLoXcYd5TfxKeVEjIlrD-ZOo3Mek45o,3309
75
+ mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py,sha256=fvuZhOzL4LcUrDQq5gFtGF2U7xwlosTlbs_mLkeSr9E,3305
77
76
  mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
78
- mapFolding/syntheticModules/countParallelNumba.py,sha256=nhB3Z9Jl4NffJrXCAl4_EHp-ERqP0KoWFeToKlBwB7A,7877
79
- mapFolding/syntheticModules/daoOfMapFoldingNumba.py,sha256=5oMb8pttNKslN6wss9JIQXSnmjgE2q_2-3fIrh1pEW0,6033
80
- mapFolding/syntheticModules/dataPacking.py,sha256=lGWAeE-R1nh9ZBVhGkGLWrma6RWIXIWmaV-ZOV2WJ-8,2429
81
- mapFolding/syntheticModules/dataPackingA007822.py,sha256=Jxk3sQKRye65qfsWur2l--afzQPyG_4I86eYJKPWauI,6244
77
+ mapFolding/syntheticModules/countParallelNumba.py,sha256=IarQHgZmxCt3I1WkRHRrqPwpeBSNzcV6ZEX2X0HrC8c,7777
78
+ mapFolding/syntheticModules/daoOfMapFoldingNumba.py,sha256=6V2DwXtmO6EeQXf6oxDp3myp-vbsVq6G0ZjnLRF9rCw,5940
82
79
  mapFolding/syntheticModules/initializeState.py,sha256=OTiVi1Ywnlwk8tbwSIFjPJa_yBCINoapaCzGXDAJq_k,3121
83
80
  mapFolding/syntheticModules/theorem2.py,sha256=sqo8AA7CqvejAEuNqo5KIx7shjCQsuh8l8ThJot5RPA,3262
84
- mapFolding/syntheticModules/theorem2Numba.py,sha256=m7xRzaAXTAAYMRo1rW3KR5G1ghvVcTMGe-scJXHm1XA,3758
85
- mapFolding/syntheticModules/theorem2Trimmed.py,sha256=sJ228Qxd9dAxM7GTegFC5algm8uI-Y17NSaaID4ELq8,2933
81
+ mapFolding/syntheticModules/theorem2Numba.py,sha256=h4ToUvB5Ubesi3mGVrIHErxfEnzeqlvSI7otnJLAo4o,5650
82
+ mapFolding/syntheticModules/theorem2Trimmed.py,sha256=JjWz71sBHdlzw1bDhy0rtEVvf6RNR9LVYLUvCdPYJ3g,2930
86
83
  mapFolding/syntheticModules/A007822/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
87
- mapFolding/syntheticModules/A007822/algorithm.py,sha256=y0MAGfaO1-4V5iaBTSaLDenUAkv8spRLjLxBChxqgYM,7058
88
- mapFolding/syntheticModules/A007822/algorithmNumba.py,sha256=ZpaDVxT8bsGiItn34kmIwXj-yrhdi4KQE8Mu4ZTaYnM,7192
89
- mapFolding/syntheticModules/A007822/asynchronous.py,sha256=Vy9OOvlIUrCqMsAPZs5JMviMqW4T-E6kRWX2a_cu-ho,6315
90
- mapFolding/syntheticModules/A007822/asynchronousAnnex.py,sha256=vyJcmo_eIS8s9e4sfE8eFnbR2HgExQ4Q5KNPzTKBooU,2629
91
- mapFolding/syntheticModules/A007822/asynchronousAnnexNumba.py,sha256=BD5XWR31xdPMV1AN6BUDhacEPuOjjktwT3nMVVYgvZA,2474
92
- mapFolding/syntheticModules/A007822/asynchronousNumba.py,sha256=rYSyYZ-4bZieUw1dL-mfdvnowLGVXbYiuN7CMmbv3hY,6116
93
- mapFolding/syntheticModules/A007822/asynchronousTheorem2.py,sha256=6GYBuNdykHkyeNN9oiuntQqTyzNZcWJSLm4boyfU0cU,3685
94
- mapFolding/syntheticModules/A007822/asynchronousTrimmed.py,sha256=C6QOKe4wDdl_mfjnosOSj64eOTkzQYDUWdL3O575Nq8,3339
95
- mapFolding/syntheticModules/A007822/initializeState.py,sha256=YzI2D1PoPsESF-JarzYx3xlTzdrc0YSUJ2nKIIZRfnY,4314
96
- mapFolding/syntheticModules/A007822/theorem2.py,sha256=jJjGseP29kDbRpqiDPryh1FSU0rHEE-WRvtcEWyGBWM,4463
97
- mapFolding/syntheticModules/A007822/theorem2Numba.py,sha256=QhH1GHZRBZFTghhPn4F_9_J79Ufc2Kj3Nsd6q6g0RHA,7002
98
- mapFolding/syntheticModules/A007822/theorem2Trimmed.py,sha256=KmZhvkTHqx2YlxkkYZGGXZMg5HdiJA9bXexgJOqugiY,4132
84
+ mapFolding/syntheticModules/A007822/algorithm.py,sha256=K8H9cyJRhSeQ6ZPYK8ygH7luYh6Z0dpoav-hcWzb5C4,7041
85
+ mapFolding/syntheticModules/A007822/asynchronous.py,sha256=mr4_Y6VT7AXrT1Yh6A5kn77c2N-mAjV1zh-8oRvOWd8,8653
86
+ mapFolding/syntheticModules/A007822/initializeState.py,sha256=qDl156iCf9qmlHw6O9oJG_9f706dixp21qX7jFW2Qos,4040
87
+ mapFolding/syntheticModules/A007822/theorem2.py,sha256=4N4AFuxpJdv9f-7RsH9-yEKYg_66nPbiTi6DFDBymSs,4197
88
+ mapFolding/syntheticModules/A007822/theorem2Numba.py,sha256=z9hSU8tPoScQVklipmA1DjAKj5cJduwA5f_ZpNtew54,7138
89
+ mapFolding/syntheticModules/A007822/theorem2Trimmed.py,sha256=8QU83qJO0Sxxh8xMOD2sdksOWdYR02qir_qpmzJKcMY,3865
99
90
  mapFolding/syntheticModules/meanders/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
100
- mapFolding/syntheticModules/meanders/bigInt.py,sha256=RP_mwMFvmOgvrnladm6sY5Cb1OPTS2XREjA4zucFqzc,2932
91
+ mapFolding/syntheticModules/meanders/bigInt.py,sha256=G6iZbPaEz2gHInMAZ0ZBUgoPbSjS7YYI2QjsxWg-PQE,2962
101
92
  mapFolding/tests/__init__.py,sha256=QVCHSMFVvTxV3mAyYOLkMFAFyBJ514zdoVnDmpBJnTo,1336
102
93
  mapFolding/tests/conftest.py,sha256=5vV_Vy5ZrV3uoP9bQ8B-Kqc0zMrL7KAhsPJwchMDb6w,15700
103
- mapFolding/tests/test_computations.py,sha256=0RDfA2FSBIV-wMaE5CGjc2fJ4gGfSTBQM9u3SAz7FIg,8656
94
+ mapFolding/tests/test_computations.py,sha256=72b_6rxaJsaIuTVwAF2qkc2rIFJE-bM3hHcFhT756MQ,8600
104
95
  mapFolding/tests/test_filesystem.py,sha256=0rYQ62f4e3HOoymXrxDWbqNEBJQ7DGN8RUOMI84tE2Q,3892
105
96
  mapFolding/tests/test_oeis.py,sha256=M4Fb0e4_h9QTX9Oy6l5-M1UQfNqeonoGVOn0DJI9huE,4854
106
97
  mapFolding/tests/test_other.py,sha256=ScBiJ78LnyAaW-RhxcouX6Xw10wgpSdqfvT4LO3WjnQ,4766
107
98
  mapFolding/tests/test_tasks.py,sha256=_pr9JRWjjNKA7sww70XvkJJdGPruBVzubM63RmD_Du0,4013
108
99
  mapFolding/zCuzDocStoopid/__init__.py,sha256=uKcGXsaYKH9kQUGHjaY0EtWtU6qybb9Fs09ZYKEFMNs,236
109
100
  mapFolding/zCuzDocStoopid/makeDocstrings.py,sha256=cQl-B-RlAkFijATUTWfKCael46foH-ZsOp1EHoYxoGs,3212
110
- mapfolding-0.16.2.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
111
- mapfolding-0.16.2.dist-info/METADATA,sha256=ZU8DJZ5s9nTi3OYvTAc-IRY2BkcaDLkvFtmshYSL9hY,7570
112
- mapfolding-0.16.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
- mapfolding-0.16.2.dist-info/entry_points.txt,sha256=-mH9DjW9tDRMPaeoSWKKywG35cR28m12H_jtmrB4eY8,98
114
- mapfolding-0.16.2.dist-info/top_level.txt,sha256=jNj7ccwEy_9uqs0hsQCO_rPXgaGn8-IMqXePQN6nZTY,19
115
- mapfolding-0.16.2.dist-info/RECORD,,
101
+ mapfolding-0.16.4.dist-info/licenses/LICENSE,sha256=NxH5Y8BdC-gNU-WSMwim3uMbID2iNDXJz7fHtuTdXhk,19346
102
+ mapfolding-0.16.4.dist-info/METADATA,sha256=78ArH8-l_3SsbbH2A4IDuT6P9l7tetRaEvfjHVVO7m0,7690
103
+ mapfolding-0.16.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
104
+ mapfolding-0.16.4.dist-info/entry_points.txt,sha256=-mH9DjW9tDRMPaeoSWKKywG35cR28m12H_jtmrB4eY8,98
105
+ mapfolding-0.16.4.dist-info/top_level.txt,sha256=jNj7ccwEy_9uqs0hsQCO_rPXgaGn8-IMqXePQN6nZTY,19
106
+ mapfolding-0.16.4.dist-info/RECORD,,
@@ -1,68 +0,0 @@
1
- from collections.abc import Callable
2
- from mapFolding.dataBaskets import MapFoldingState
3
- from typing import Any
4
- import astToolkit
5
- import dataclasses
6
- import functools
7
- import inspect
8
-
9
- r"""Notes
10
- Goal: create a decorator, `unRePackMapFoldingState`, that will unpack `MapFoldingState`, pass only the parameters in the decorated function, receive the
11
- values returned by the function, and repack `MapFoldingState`.
12
-
13
- You must use dynamic programming. If the datatype or the field name changes, for example, that should not affect the decorator.
14
-
15
- To use in, for example, C:\apps\mapFolding\mapFolding\syntheticModules\A007822\theorem2Numba.py. Analogous to
16
- `Z0Z_tools.waveformSpectrogramWaveform`, see
17
- https://github.com/hunterhogan/Z0Z_tools/blob/2c393c2831382dfe6f3e742cf56db39e71126cbc/Z0Z_tools/ioAudio.py
18
-
19
- For examples of manipulating `dataclasses`, see also:
20
- C:\apps\mapFolding\mapFolding\someAssemblyRequired\_toolkitContainers.py and
21
- C:\apps\mapFolding\mapFolding\someAssemblyRequired\transformationTools.py
22
-
23
- - `TypeVar` may be useful.
24
-
25
- - `dataclasses` has inspection tools.
26
-
27
- - `return MapFoldingState(...` Check if the field is init=True
28
-
29
- Prototype. Eventual home will probably be "beDry.py".
30
- """
31
-
32
- def unRePackMapFoldingState[CallableTargetType: Callable[..., Any]](callableTarget: CallableTargetType) -> Callable[[MapFoldingState], MapFoldingState]:
33
- signatureTargetFunction: inspect.Signature = inspect.signature(callableTarget)
34
- parametersTargetFunction: list[str] = list(signatureTargetFunction.parameters.keys())
35
-
36
- fieldsMapFoldingState: tuple[dataclasses.Field[Any], ...] = dataclasses.fields(MapFoldingState)
37
-
38
- fieldsInitializable: dict[str, dataclasses.Field[Any]] = {field.name: field for field in fieldsMapFoldingState if field.init}
39
-
40
- @functools.wraps(callableTarget)
41
- def decoratedFunction(mapFoldingStateInstance: MapFoldingState, **additionalKeywordArguments: Any) -> MapFoldingState:
42
- dataclassAsDict: dict[str, Any] = dataclasses.asdict(mapFoldingStateInstance)
43
-
44
- argumentsForTargetFunction: list[Any] = []
45
- for parameterName in parametersTargetFunction:
46
- if parameterName in dataclassAsDict:
47
- argumentsForTargetFunction.append(dataclassAsDict[parameterName])
48
- elif parameterName in additionalKeywordArguments:
49
- argumentsForTargetFunction.append(additionalKeywordArguments[parameterName])
50
- else:
51
- errorMessage = f"Parameter '{parameterName}' not found in MapFoldingState or additional arguments"
52
- raise ValueError(errorMessage)
53
-
54
- returnedFromTargetFunction: Any = callableTarget(*argumentsForTargetFunction)
55
-
56
- argumentsForMapFoldingStateConstructor: dict[str, Any] = {fieldName: dataclassAsDict[fieldName] for fieldName in fieldsInitializable}
57
-
58
- if len(parametersTargetFunction) == 1:
59
- singleParameterName: str = parametersTargetFunction[0]
60
- if singleParameterName in fieldsInitializable:
61
- argumentsForMapFoldingStateConstructor[singleParameterName] = returnedFromTargetFunction
62
- elif isinstance(returnedFromTargetFunction, tuple) and len(returnedFromTargetFunction) == len(parametersTargetFunction):
63
- updatedFieldsFromReturn: dict[str, Any] = {parameterName: returnedValue for parameterName, returnedValue in zip(parametersTargetFunction, returnedFromTargetFunction, strict=True) if parameterName in fieldsInitializable}
64
- argumentsForMapFoldingStateConstructor.update(updatedFieldsFromReturn)
65
-
66
- return MapFoldingState(**argumentsForMapFoldingStateConstructor)
67
-
68
- return decoratedFunction