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.
- easyRun/NOTcountingFolds.py +6 -5
- easyRun/countFolds.py +1 -1
- easyRun/generateAllModules.py +14 -0
- easyRun/meanders.py +1 -1
- mapFolding/__init__.py +1 -0
- mapFolding/_theSSOT.py +3 -2
- mapFolding/_theTypes.py +3 -0
- mapFolding/algorithms/A086345.py +75 -0
- mapFolding/algorithms/oeisIDbyFormula.py +2 -2
- mapFolding/algorithms/symmetricFolds.py +36 -0
- mapFolding/basecamp.py +80 -149
- mapFolding/dataBaskets.py +123 -5
- mapFolding/filesystemToolkit.py +4 -32
- mapFolding/oeis.py +5 -12
- mapFolding/reference/A086345Wu.py +25 -0
- mapFolding/reference/matrixMeandersAnalysis/signatures.py +3 -0
- mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py +10 -45
- mapFolding/someAssemblyRequired/A007822/_asynchronousAnnex.py +51 -0
- mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py +36 -195
- mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py +42 -44
- mapFolding/someAssemblyRequired/RecipeJob.py +78 -18
- mapFolding/someAssemblyRequired/__init__.py +3 -8
- mapFolding/someAssemblyRequired/_toolkitContainers.py +32 -3
- mapFolding/someAssemblyRequired/infoBooth.py +40 -23
- mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +74 -153
- mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +56 -88
- mapFolding/someAssemblyRequired/makingModules_count.py +10 -12
- mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py +6 -68
- mapFolding/someAssemblyRequired/{mapFolding → mapFoldingModules}/makeMapFoldingModules.py +24 -30
- mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py +8 -6
- mapFolding/someAssemblyRequired/toolkitMakeModules.py +2 -2
- mapFolding/someAssemblyRequired/toolkitNumba.py +1 -1
- mapFolding/someAssemblyRequired/transformationTools.py +10 -12
- mapFolding/syntheticModules/A007822/algorithm.py +45 -50
- mapFolding/syntheticModules/A007822/asynchronous.py +91 -34
- mapFolding/syntheticModules/A007822/initializeState.py +15 -21
- mapFolding/syntheticModules/A007822/theorem2.py +16 -22
- mapFolding/syntheticModules/A007822/theorem2Numba.py +20 -26
- mapFolding/syntheticModules/A007822/theorem2Trimmed.py +17 -23
- mapFolding/syntheticModules/countParallelNumba.py +3 -7
- mapFolding/syntheticModules/daoOfMapFoldingNumba.py +1 -2
- mapFolding/syntheticModules/meanders/bigInt.py +9 -9
- mapFolding/syntheticModules/theorem2Numba.py +28 -9
- mapFolding/syntheticModules/theorem2Trimmed.py +1 -1
- mapFolding/tests/test_computations.py +1 -1
- {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/METADATA +4 -1
- {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/RECORD +52 -61
- mapFolding/_dataPacking.py +0 -68
- mapFolding/reference/meandersDumpingGround/A005316intOptimized.py +0 -122
- mapFolding/reference/meandersDumpingGround/A005316optimized128bit.py +0 -79
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaseline.py +0 -65
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineAnnex.py +0 -84
- mapFolding/reference/meandersDumpingGround/matrixMeandersSimpleQueue.py +0 -90
- mapFolding/syntheticModules/A007822/algorithmNumba.py +0 -94
- mapFolding/syntheticModules/A007822/asynchronousAnnex.py +0 -66
- mapFolding/syntheticModules/A007822/asynchronousAnnexNumba.py +0 -70
- mapFolding/syntheticModules/A007822/asynchronousNumba.py +0 -79
- mapFolding/syntheticModules/A007822/asynchronousTheorem2.py +0 -65
- mapFolding/syntheticModules/A007822/asynchronousTrimmed.py +0 -56
- mapFolding/syntheticModules/dataPacking.py +0 -26
- mapFolding/syntheticModules/dataPackingA007822.py +0 -92
- /mapFolding/someAssemblyRequired/{mapFolding → mapFoldingModules}/__init__.py +0 -0
- {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/WHEEL +0 -0
- {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/entry_points.txt +0 -0
- {mapfolding-0.16.2.dist-info → mapfolding-0.16.4.dist-info}/licenses/LICENSE +0 -0
- {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 =
|
|
13
|
-
|
|
11
|
+
indexLeaf = 1
|
|
12
|
+
leafComparison[0] = 1
|
|
13
|
+
leafConnectee = 1
|
|
14
14
|
while leafConnectee < leavesTotal + 1:
|
|
15
|
-
|
|
16
|
-
leafComparison[leafConnectee] = (
|
|
17
|
-
indexLeaf =
|
|
15
|
+
indexMiniGap = leafBelow[indexLeaf]
|
|
16
|
+
leafComparison[leafConnectee] = (indexMiniGap - indexLeaf + leavesTotal) % leavesTotal
|
|
17
|
+
indexLeaf = indexMiniGap
|
|
18
18
|
leafConnectee += 1
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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:
|
|
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 =
|
|
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
|
|
1
|
+
from mapFolding.dataBaskets import SymmetricFoldsState
|
|
2
2
|
from mapFolding.syntheticModules.A007822.initializeState import transitionOnGroupsOfFolds
|
|
3
|
+
import numpy
|
|
3
4
|
|
|
4
|
-
def count(state:
|
|
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 =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
state.
|
|
13
|
-
state.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
state.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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:
|
|
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,
|
|
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
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Parameters
|
|
10
|
+
----------
|
|
11
|
+
state : MatrixMeandersState
|
|
12
|
+
The algorithm state.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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,
|
|
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,
|
|
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
|
|
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', '
|
|
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.
|
|
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=
|
|
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=
|
|
6
|
-
easyRun/
|
|
7
|
-
|
|
8
|
-
mapFolding/
|
|
9
|
-
mapFolding/_theSSOT.py,sha256=
|
|
10
|
-
mapFolding/_theTypes.py,sha256=
|
|
11
|
-
mapFolding/basecamp.py,sha256=
|
|
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=
|
|
14
|
-
mapFolding/filesystemToolkit.py,sha256=
|
|
15
|
-
mapFolding/oeis.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
57
|
-
mapFolding/someAssemblyRequired/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
62
|
-
mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py,sha256=
|
|
63
|
-
mapFolding/someAssemblyRequired/makeJobTheorem2codon.py,sha256=
|
|
64
|
-
mapFolding/someAssemblyRequired/makingModules_count.py,sha256=
|
|
65
|
-
mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py,sha256=
|
|
66
|
-
mapFolding/someAssemblyRequired/toolkitMakeModules.py,sha256=
|
|
67
|
-
mapFolding/someAssemblyRequired/toolkitNumba.py,sha256=
|
|
68
|
-
mapFolding/someAssemblyRequired/transformationTools.py,sha256=
|
|
69
|
-
mapFolding/someAssemblyRequired/A007822/A007822rawMaterials.py,sha256=
|
|
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/
|
|
72
|
-
mapFolding/someAssemblyRequired/A007822/
|
|
73
|
-
mapFolding/someAssemblyRequired/
|
|
74
|
-
mapFolding/someAssemblyRequired/
|
|
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=
|
|
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=
|
|
79
|
-
mapFolding/syntheticModules/daoOfMapFoldingNumba.py,sha256=
|
|
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=
|
|
85
|
-
mapFolding/syntheticModules/theorem2Trimmed.py,sha256=
|
|
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=
|
|
88
|
-
mapFolding/syntheticModules/A007822/
|
|
89
|
-
mapFolding/syntheticModules/A007822/
|
|
90
|
-
mapFolding/syntheticModules/A007822/
|
|
91
|
-
mapFolding/syntheticModules/A007822/
|
|
92
|
-
mapFolding/syntheticModules/A007822/
|
|
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=
|
|
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=
|
|
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.
|
|
111
|
-
mapfolding-0.16.
|
|
112
|
-
mapfolding-0.16.
|
|
113
|
-
mapfolding-0.16.
|
|
114
|
-
mapfolding-0.16.
|
|
115
|
-
mapfolding-0.16.
|
|
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,,
|
mapFolding/_dataPacking.py
DELETED
|
@@ -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
|