mapFolding 0.3.12__py3-none-any.whl → 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. mapFolding/__init__.py +40 -38
  2. mapFolding/basecamp.py +50 -50
  3. mapFolding/beDRY.py +336 -336
  4. mapFolding/oeis.py +262 -262
  5. mapFolding/reference/flattened.py +294 -293
  6. mapFolding/reference/hunterNumba.py +126 -126
  7. mapFolding/reference/irvineJavaPort.py +99 -99
  8. mapFolding/reference/jax.py +153 -153
  9. mapFolding/reference/lunnan.py +148 -148
  10. mapFolding/reference/lunnanNumpy.py +115 -115
  11. mapFolding/reference/lunnanWhile.py +114 -114
  12. mapFolding/reference/rotatedEntryPoint.py +183 -183
  13. mapFolding/reference/total_countPlus1vsPlusN.py +203 -203
  14. mapFolding/someAssemblyRequired/__init__.py +2 -1
  15. mapFolding/someAssemblyRequired/getLLVMforNoReason.py +12 -12
  16. mapFolding/someAssemblyRequired/makeJob.py +48 -48
  17. mapFolding/someAssemblyRequired/synthesizeModuleJAX.py +17 -17
  18. mapFolding/someAssemblyRequired/synthesizeNumba.py +343 -633
  19. mapFolding/someAssemblyRequired/synthesizeNumbaGeneralized.py +371 -0
  20. mapFolding/someAssemblyRequired/synthesizeNumbaJob.py +150 -0
  21. mapFolding/someAssemblyRequired/synthesizeNumbaModules.py +75 -0
  22. mapFolding/syntheticModules/__init__.py +0 -0
  23. mapFolding/syntheticModules/numba_countInitialize.py +3 -3
  24. mapFolding/syntheticModules/numba_countParallel.py +3 -3
  25. mapFolding/syntheticModules/numba_countSequential.py +3 -3
  26. mapFolding/syntheticModules/numba_doTheNeedful.py +6 -6
  27. mapFolding/theDao.py +165 -165
  28. mapFolding/theSSOT.py +176 -172
  29. mapFolding/theSSOTnumba.py +90 -74
  30. mapFolding-0.4.0.dist-info/METADATA +122 -0
  31. mapFolding-0.4.0.dist-info/RECORD +41 -0
  32. tests/conftest.py +238 -128
  33. tests/test_oeis.py +80 -80
  34. tests/test_other.py +137 -224
  35. tests/test_tasks.py +21 -21
  36. tests/test_types.py +2 -2
  37. mapFolding/someAssemblyRequired/synthesizeNumbaHardcoding.py +0 -188
  38. mapFolding-0.3.12.dist-info/METADATA +0 -155
  39. mapFolding-0.3.12.dist-info/RECORD +0 -40
  40. tests/conftest_tmpRegistry.py +0 -62
  41. tests/conftest_uniformTests.py +0 -53
  42. {mapFolding-0.3.12.dist-info → mapFolding-0.4.0.dist-info}/LICENSE +0 -0
  43. {mapFolding-0.3.12.dist-info → mapFolding-0.4.0.dist-info}/WHEEL +0 -0
  44. {mapFolding-0.3.12.dist-info → mapFolding-0.4.0.dist-info}/entry_points.txt +0 -0
  45. {mapFolding-0.3.12.dist-info → mapFolding-0.4.0.dist-info}/top_level.txt +0 -0
mapFolding/theDao.py CHANGED
@@ -4,226 +4,226 @@ from numpy import dtype, integer, ndarray
4
4
  from typing import Any, Tuple
5
5
 
6
6
  def activeGapIncrement(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
7
- # `.value` is not necessary for this module or most modules. But, this module is transformed into Numba "jitted" functions, and Numba won't use `Enum` for an index without `.value`.
8
- my[indexMy.gap1ndex.value] += 1
7
+ # `.value` is not necessary for this module or most modules. But, this module is transformed into Numba "jitted" functions, and Numba won't use `Enum` for an ndarray index without `.value`.
8
+ my[indexMy.gap1ndex.value] += 1
9
9
 
10
10
  def activeLeafGreaterThan0Condition(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
11
- return my[indexMy.leaf1ndex.value]
11
+ return my[indexMy.leaf1ndex.value]
12
12
 
13
13
  def activeLeafGreaterThanLeavesTotalCondition(foldGroups: ndarray[Tuple[int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
14
- return my[indexMy.leaf1ndex.value] > foldGroups[-1]
14
+ return my[indexMy.leaf1ndex.value] > foldGroups[-1]
15
15
 
16
16
  def activeLeafIsTheFirstLeafCondition(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
17
- return my[indexMy.leaf1ndex.value] <= 1
17
+ return my[indexMy.leaf1ndex.value] <= 1
18
18
 
19
19
  def allDimensionsAreUnconstrained(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
20
- return not my[indexMy.dimensionsUnconstrained.value]
20
+ return not my[indexMy.dimensionsUnconstrained.value]
21
21
 
22
22
  def backtrack(my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
23
- my[indexMy.leaf1ndex.value] -= 1
24
- track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]] = track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]
25
- track[indexTrack.leafAbove.value, track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]] = track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]
23
+ my[indexMy.leaf1ndex.value] -= 1
24
+ track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]] = track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]
25
+ track[indexTrack.leafAbove.value, track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]] = track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]
26
26
 
27
27
  def backtrackCondition(my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> Any:
28
- return my[indexMy.leaf1ndex.value] and my[indexMy.gap1ndex.value] == track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value] - 1]
28
+ return my[indexMy.leaf1ndex.value] and my[indexMy.gap1ndex.value] == track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value] - 1]
29
29
 
30
30
  def gap1ndexCeilingIncrement(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
31
- my[indexMy.gap1ndexCeiling.value] += 1
31
+ my[indexMy.gap1ndexCeiling.value] += 1
32
32
 
33
33
  def countGaps(gapsWhere: ndarray[Tuple[int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
34
- gapsWhere[my[indexMy.gap1ndexCeiling.value]] = my[indexMy.leafConnectee.value]
35
- if track[indexTrack.countDimensionsGapped.value, my[indexMy.leafConnectee.value]] == 0:
36
- gap1ndexCeilingIncrement(my=my)
37
- track[indexTrack.countDimensionsGapped.value, my[indexMy.leafConnectee.value]] += 1
34
+ gapsWhere[my[indexMy.gap1ndexCeiling.value]] = my[indexMy.leafConnectee.value]
35
+ if track[indexTrack.countDimensionsGapped.value, my[indexMy.leafConnectee.value]] == 0:
36
+ gap1ndexCeilingIncrement(my=my)
37
+ track[indexTrack.countDimensionsGapped.value, my[indexMy.leafConnectee.value]] += 1
38
38
 
39
39
  def dimensionsUnconstrainedCondition(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
40
- return connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], my[indexMy.leaf1ndex.value]] == my[indexMy.leaf1ndex.value]
40
+ return connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], my[indexMy.leaf1ndex.value]] == my[indexMy.leaf1ndex.value]
41
41
 
42
42
  def dimensionsUnconstrainedDecrement(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
43
- my[indexMy.dimensionsUnconstrained.value] -= 1
43
+ my[indexMy.dimensionsUnconstrained.value] -= 1
44
44
 
45
45
  def filterCommonGaps(gapsWhere: ndarray[Tuple[int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
46
- gapsWhere[my[indexMy.gap1ndex.value]] = gapsWhere[my[indexMy.indexMiniGap.value]]
47
- if track[indexTrack.countDimensionsGapped.value, gapsWhere[my[indexMy.indexMiniGap.value]]] == my[indexMy.dimensionsUnconstrained.value]:
48
- activeGapIncrement(my=my)
49
- track[indexTrack.countDimensionsGapped.value, gapsWhere[my[indexMy.indexMiniGap.value]]] = 0
46
+ gapsWhere[my[indexMy.gap1ndex.value]] = gapsWhere[my[indexMy.indexMiniGap.value]]
47
+ if track[indexTrack.countDimensionsGapped.value, gapsWhere[my[indexMy.indexMiniGap.value]]] == my[indexMy.dimensionsUnconstrained.value]:
48
+ activeGapIncrement(my=my)
49
+ track[indexTrack.countDimensionsGapped.value, gapsWhere[my[indexMy.indexMiniGap.value]]] = 0
50
50
 
51
51
  def findGapsInitializeVariables(my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
52
- my[indexMy.dimensionsUnconstrained.value] = my[indexMy.dimensionsTotal.value]
53
- my[indexMy.gap1ndexCeiling.value] = track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value] - 1]
54
- my[indexMy.indexDimension.value] = 0
52
+ my[indexMy.dimensionsUnconstrained.value] = my[indexMy.dimensionsTotal.value]
53
+ my[indexMy.gap1ndexCeiling.value] = track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value] - 1]
54
+ my[indexMy.indexDimension.value] = 0
55
55
 
56
56
  def indexDimensionIncrement(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
57
- my[indexMy.indexDimension.value] += 1
57
+ my[indexMy.indexDimension.value] += 1
58
58
 
59
59
  def indexMiniGapIncrement(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
60
- my[indexMy.indexMiniGap.value] += 1
60
+ my[indexMy.indexMiniGap.value] += 1
61
61
 
62
62
  def indexMiniGapInitialization(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
63
- my[indexMy.indexMiniGap.value] = my[indexMy.gap1ndex.value]
63
+ my[indexMy.indexMiniGap.value] = my[indexMy.gap1ndex.value]
64
64
 
65
65
  def insertUnconstrainedLeaf(gapsWhere: ndarray[Tuple[int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
66
- my[indexMy.indexLeaf.value] = 0
67
- while my[indexMy.indexLeaf.value] < my[indexMy.leaf1ndex.value]:
68
- gapsWhere[my[indexMy.gap1ndexCeiling.value]] = my[indexMy.indexLeaf.value]
69
- my[indexMy.gap1ndexCeiling.value] += 1
70
- my[indexMy.indexLeaf.value] += 1
66
+ my[indexMy.indexLeaf.value] = 0
67
+ while my[indexMy.indexLeaf.value] < my[indexMy.leaf1ndex.value]:
68
+ gapsWhere[my[indexMy.gap1ndexCeiling.value]] = my[indexMy.indexLeaf.value]
69
+ my[indexMy.gap1ndexCeiling.value] += 1
70
+ my[indexMy.indexLeaf.value] += 1
71
71
 
72
72
  def leafBelowSentinelIs1Condition(track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> Any:
73
- return track[indexTrack.leafBelow.value, 0] == 1
73
+ return track[indexTrack.leafBelow.value, 0] == 1
74
74
 
75
75
  def leafConnecteeInitialization(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]]) -> None:
76
- my[indexMy.leafConnectee.value] = connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], my[indexMy.leaf1ndex.value]]
76
+ my[indexMy.leafConnectee.value] = connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], my[indexMy.leaf1ndex.value]]
77
77
 
78
78
  def leafConnecteeUpdate(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
79
- my[indexMy.leafConnectee.value] = connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], track[indexTrack.leafBelow.value, my[indexMy.leafConnectee.value]]]
79
+ my[indexMy.leafConnectee.value] = connectionGraph[my[indexMy.indexDimension.value], my[indexMy.leaf1ndex.value], track[indexTrack.leafBelow.value, my[indexMy.leafConnectee.value]]]
80
80
 
81
81
  def loopingLeavesConnectedToActiveLeaf(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
82
- return my[indexMy.leafConnectee.value] != my[indexMy.leaf1ndex.value]
82
+ return my[indexMy.leafConnectee.value] != my[indexMy.leaf1ndex.value]
83
83
 
84
84
  def loopUpToDimensionsTotal(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
85
- return my[indexMy.indexDimension.value] < my[indexMy.dimensionsTotal.value]
85
+ return my[indexMy.indexDimension.value] < my[indexMy.dimensionsTotal.value]
86
86
 
87
87
  def loopingToActiveGapCeiling(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
88
- return my[indexMy.indexMiniGap.value] < my[indexMy.gap1ndexCeiling.value]
88
+ return my[indexMy.indexMiniGap.value] < my[indexMy.gap1ndexCeiling.value]
89
89
 
90
90
  def placeLeaf(gapsWhere: ndarray[Tuple[int], dtype[integer[Any]]], my: ndarray[Tuple[int], dtype[integer[Any]]], track: ndarray[Tuple[int, int], dtype[integer[Any]]]) -> None:
91
- my[indexMy.gap1ndex.value] -= 1
92
- track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]] = gapsWhere[my[indexMy.gap1ndex.value]]
93
- track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]] = track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]]
94
- track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]] = my[indexMy.leaf1ndex.value]
95
- track[indexTrack.leafAbove.value, track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]] = my[indexMy.leaf1ndex.value]
96
- track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value]] = my[indexMy.gap1ndex.value]
97
- my[indexMy.leaf1ndex.value] += 1
91
+ my[indexMy.gap1ndex.value] -= 1
92
+ track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]] = gapsWhere[my[indexMy.gap1ndex.value]]
93
+ track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]] = track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]]
94
+ track[indexTrack.leafBelow.value, track[indexTrack.leafAbove.value, my[indexMy.leaf1ndex.value]]] = my[indexMy.leaf1ndex.value]
95
+ track[indexTrack.leafAbove.value, track[indexTrack.leafBelow.value, my[indexMy.leaf1ndex.value]]] = my[indexMy.leaf1ndex.value]
96
+ track[indexTrack.gapRangeStart.value, my[indexMy.leaf1ndex.value]] = my[indexMy.gap1ndex.value]
97
+ my[indexMy.leaf1ndex.value] += 1
98
98
 
99
99
  def placeLeafCondition(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
100
- return my[indexMy.leaf1ndex.value]
100
+ return my[indexMy.leaf1ndex.value]
101
101
 
102
102
  def thereAreComputationDivisionsYouMightSkip(my: ndarray[Tuple[int], dtype[integer[Any]]]) -> Any:
103
- return my[indexMy.leaf1ndex.value] != my[indexMy.taskDivisions.value] or my[indexMy.leafConnectee.value] % my[indexMy.taskDivisions.value] == my[indexMy.taskIndex.value]
103
+ return my[indexMy.leaf1ndex.value] != my[indexMy.taskDivisions.value] or my[indexMy.leafConnectee.value] % my[indexMy.taskDivisions.value] == my[indexMy.taskIndex.value]
104
104
 
105
105
  def countInitialize(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]]
106
- , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
107
- , my: ndarray[Tuple[int] , dtype[integer[Any]]]
108
- , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
109
- ) -> None:
110
-
111
- while activeLeafGreaterThan0Condition(my=my):
112
- if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
113
- findGapsInitializeVariables(my=my, track=track)
114
- while loopUpToDimensionsTotal(my=my):
115
- if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
116
- dimensionsUnconstrainedDecrement(my=my)
117
- else:
118
- leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
119
- while loopingLeavesConnectedToActiveLeaf(my=my):
120
- countGaps(gapsWhere=gapsWhere, my=my, track=track)
121
- leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
122
- indexDimensionIncrement(my=my)
123
- if allDimensionsAreUnconstrained(my=my):
124
- insertUnconstrainedLeaf(gapsWhere=gapsWhere, my=my)
125
- indexMiniGapInitialization(my=my)
126
- while loopingToActiveGapCeiling(my=my):
127
- filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
128
- indexMiniGapIncrement(my=my)
129
- if placeLeafCondition(my=my):
130
- placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
131
- if my[indexMy.gap1ndex.value] > 0:
132
- return
106
+ , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
107
+ , my: ndarray[Tuple[int] , dtype[integer[Any]]]
108
+ , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
109
+ ) -> None:
110
+
111
+ while activeLeafGreaterThan0Condition(my=my):
112
+ if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
113
+ findGapsInitializeVariables(my=my, track=track)
114
+ while loopUpToDimensionsTotal(my=my):
115
+ if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
116
+ dimensionsUnconstrainedDecrement(my=my)
117
+ else:
118
+ leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
119
+ while loopingLeavesConnectedToActiveLeaf(my=my):
120
+ countGaps(gapsWhere=gapsWhere, my=my, track=track)
121
+ leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
122
+ indexDimensionIncrement(my=my)
123
+ if allDimensionsAreUnconstrained(my=my):
124
+ insertUnconstrainedLeaf(gapsWhere=gapsWhere, my=my)
125
+ indexMiniGapInitialization(my=my)
126
+ while loopingToActiveGapCeiling(my=my):
127
+ filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
128
+ indexMiniGapIncrement(my=my)
129
+ if placeLeafCondition(my=my):
130
+ placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
131
+ if my[indexMy.gap1ndex.value] > 0:
132
+ return
133
133
 
134
134
  def countParallel(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]]
135
- , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
136
- , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
137
- , my: ndarray[Tuple[int] , dtype[integer[Any]]]
138
- , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
139
- ) -> None:
140
-
141
- gapsWherePARALLEL = gapsWhere.copy()
142
- myPARALLEL = my.copy()
143
- trackPARALLEL = track.copy()
144
-
145
- taskDivisionsPrange = myPARALLEL[indexMy.taskDivisions.value]
146
-
147
- for indexSherpa in prange(taskDivisionsPrange):
148
- groupsOfFolds: int = 0
149
-
150
- gapsWhere = gapsWherePARALLEL.copy()
151
- my = myPARALLEL.copy()
152
- track = trackPARALLEL.copy()
153
-
154
- my[indexMy.taskIndex.value] = indexSherpa
155
-
156
- while activeLeafGreaterThan0Condition(my=my):
157
- if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
158
- if activeLeafGreaterThanLeavesTotalCondition(foldGroups=foldGroups, my=my):
159
- groupsOfFolds += 1
160
- else:
161
- findGapsInitializeVariables(my=my, track=track)
162
- while loopUpToDimensionsTotal(my=my):
163
- if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
164
- dimensionsUnconstrainedDecrement(my=my)
165
- else:
166
- leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
167
- while loopingLeavesConnectedToActiveLeaf(my=my):
168
- if thereAreComputationDivisionsYouMightSkip(my=my):
169
- countGaps(gapsWhere=gapsWhere, my=my, track=track)
170
- leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
171
- indexDimensionIncrement(my=my)
172
- indexMiniGapInitialization(my=my)
173
- while loopingToActiveGapCeiling(my=my):
174
- filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
175
- indexMiniGapIncrement(my=my)
176
- while backtrackCondition(my=my, track=track):
177
- backtrack(my=my, track=track)
178
- if placeLeafCondition(my=my):
179
- placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
180
- foldGroups[my[indexMy.taskIndex.value]] = groupsOfFolds
135
+ , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
136
+ , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
137
+ , my: ndarray[Tuple[int] , dtype[integer[Any]]]
138
+ , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
139
+ ) -> None:
140
+
141
+ gapsWherePARALLEL = gapsWhere.copy()
142
+ myPARALLEL = my.copy()
143
+ trackPARALLEL = track.copy()
144
+
145
+ taskDivisionsPrange = myPARALLEL[indexMy.taskDivisions.value]
146
+
147
+ for indexSherpa in prange(taskDivisionsPrange):
148
+ groupsOfFolds: int = 0
149
+
150
+ gapsWhere = gapsWherePARALLEL.copy()
151
+ my = myPARALLEL.copy()
152
+ track = trackPARALLEL.copy()
153
+
154
+ my[indexMy.taskIndex.value] = indexSherpa
155
+
156
+ while activeLeafGreaterThan0Condition(my=my):
157
+ if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
158
+ if activeLeafGreaterThanLeavesTotalCondition(foldGroups=foldGroups, my=my):
159
+ groupsOfFolds += 1
160
+ else:
161
+ findGapsInitializeVariables(my=my, track=track)
162
+ while loopUpToDimensionsTotal(my=my):
163
+ if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
164
+ dimensionsUnconstrainedDecrement(my=my)
165
+ else:
166
+ leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
167
+ while loopingLeavesConnectedToActiveLeaf(my=my):
168
+ if thereAreComputationDivisionsYouMightSkip(my=my):
169
+ countGaps(gapsWhere=gapsWhere, my=my, track=track)
170
+ leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
171
+ indexDimensionIncrement(my=my)
172
+ indexMiniGapInitialization(my=my)
173
+ while loopingToActiveGapCeiling(my=my):
174
+ filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
175
+ indexMiniGapIncrement(my=my)
176
+ while backtrackCondition(my=my, track=track):
177
+ backtrack(my=my, track=track)
178
+ if placeLeafCondition(my=my):
179
+ placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
180
+ foldGroups[my[indexMy.taskIndex.value]] = groupsOfFolds
181
181
 
182
182
  def countSequential( connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]]
183
- , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
184
- , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
185
- , my: ndarray[Tuple[int] , dtype[integer[Any]]]
186
- , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
187
- ) -> None:
188
-
189
- groupsOfFolds: int = 0
190
-
191
- while activeLeafGreaterThan0Condition(my=my):
192
- if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
193
- if activeLeafGreaterThanLeavesTotalCondition(foldGroups=foldGroups, my=my):
194
- groupsOfFolds += 1
195
- else:
196
- findGapsInitializeVariables(my=my, track=track)
197
- while loopUpToDimensionsTotal(my=my):
198
- if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
199
- dimensionsUnconstrainedDecrement(my=my)
200
- else:
201
- leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
202
- while loopingLeavesConnectedToActiveLeaf(my=my):
203
- countGaps(gapsWhere=gapsWhere, my=my, track=track)
204
- leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
205
- indexDimensionIncrement(my=my)
206
- indexMiniGapInitialization(my=my)
207
- while loopingToActiveGapCeiling(my=my):
208
- filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
209
- indexMiniGapIncrement(my=my)
210
- while backtrackCondition(my=my, track=track):
211
- backtrack(my=my, track=track)
212
- if placeLeafCondition(my=my):
213
- placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
214
- foldGroups[my[indexMy.taskIndex.value]] = groupsOfFolds
183
+ , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
184
+ , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
185
+ , my: ndarray[Tuple[int] , dtype[integer[Any]]]
186
+ , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
187
+ ) -> None:
188
+
189
+ groupsOfFolds: int = 0
190
+
191
+ while activeLeafGreaterThan0Condition(my=my):
192
+ if activeLeafIsTheFirstLeafCondition(my=my) or leafBelowSentinelIs1Condition(track=track):
193
+ if activeLeafGreaterThanLeavesTotalCondition(foldGroups=foldGroups, my=my):
194
+ groupsOfFolds += 1
195
+ else:
196
+ findGapsInitializeVariables(my=my, track=track)
197
+ while loopUpToDimensionsTotal(my=my):
198
+ if dimensionsUnconstrainedCondition(connectionGraph=connectionGraph, my=my):
199
+ dimensionsUnconstrainedDecrement(my=my)
200
+ else:
201
+ leafConnecteeInitialization(connectionGraph=connectionGraph, my=my)
202
+ while loopingLeavesConnectedToActiveLeaf(my=my):
203
+ countGaps(gapsWhere=gapsWhere, my=my, track=track)
204
+ leafConnecteeUpdate(connectionGraph=connectionGraph, my=my, track=track)
205
+ indexDimensionIncrement(my=my)
206
+ indexMiniGapInitialization(my=my)
207
+ while loopingToActiveGapCeiling(my=my):
208
+ filterCommonGaps(gapsWhere=gapsWhere, my=my, track=track)
209
+ indexMiniGapIncrement(my=my)
210
+ while backtrackCondition(my=my, track=track):
211
+ backtrack(my=my, track=track)
212
+ if placeLeafCondition(my=my):
213
+ placeLeaf(gapsWhere=gapsWhere, my=my, track=track)
214
+ foldGroups[my[indexMy.taskIndex.value]] = groupsOfFolds
215
215
 
216
216
  def doTheNeedful(connectionGraph: ndarray[Tuple[int, int, int], dtype[integer[Any]]]
217
- , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
218
- , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
219
- , mapShape: ndarray[Tuple[int] , dtype[integer[Any]]]
220
- , my: ndarray[Tuple[int] , dtype[integer[Any]]]
221
- , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
222
- ) -> None:
223
-
224
- countInitialize(connectionGraph, gapsWhere, my, track)
225
-
226
- if my[indexMy.taskDivisions.value] > 0:
227
- countParallel(connectionGraph, foldGroups, gapsWhere, my, track)
228
- else:
229
- countSequential(connectionGraph, foldGroups, gapsWhere, my, track)
217
+ , foldGroups: ndarray[Tuple[int] , dtype[integer[Any]]]
218
+ , gapsWhere: ndarray[Tuple[int] , dtype[integer[Any]]]
219
+ , mapShape: ndarray[Tuple[int] , dtype[integer[Any]]]
220
+ , my: ndarray[Tuple[int] , dtype[integer[Any]]]
221
+ , track: ndarray[Tuple[int, int] , dtype[integer[Any]]]
222
+ ) -> None:
223
+
224
+ countInitialize(connectionGraph, gapsWhere, my, track)
225
+
226
+ if my[indexMy.taskDivisions.value] > 0:
227
+ countParallel(connectionGraph, foldGroups, gapsWhere, my, track)
228
+ else:
229
+ countSequential(connectionGraph, foldGroups, gapsWhere, my, track)