mapFolding 0.16.4__py3-none-any.whl → 0.17.1__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 (69) hide show
  1. easyRun/NOTcountingFolds.py +28 -11
  2. easyRun/__init__.py +1 -0
  3. easyRun/countFolds.py +16 -2
  4. easyRun/eliminateFolds.py +60 -0
  5. easyRun/meanders.py +3 -3
  6. mapFolding/__init__.py +2 -1
  7. mapFolding/_theTypes.py +0 -1
  8. mapFolding/algorithms/A086345.py +8 -3
  9. mapFolding/algorithms/__init__.py +1 -1
  10. mapFolding/algorithms/constraintPropagation.py +184 -0
  11. mapFolding/algorithms/elimination.py +131 -0
  12. mapFolding/algorithms/eliminationCount.py +26 -0
  13. mapFolding/algorithms/eliminationPinned.py +35 -0
  14. mapFolding/algorithms/iff.py +206 -0
  15. mapFolding/algorithms/matrixMeanders.py +59 -18
  16. mapFolding/algorithms/matrixMeandersNumPyndas.py +841 -0
  17. mapFolding/algorithms/patternFinder.py +280 -0
  18. mapFolding/algorithms/pinning2Dn.py +345 -0
  19. mapFolding/algorithms/pinning2DnAnnex.py +43 -0
  20. mapFolding/algorithms/symmetricFolds.py +24 -25
  21. mapFolding/basecamp.py +84 -14
  22. mapFolding/beDRY.py +14 -1
  23. mapFolding/dataBaskets.py +86 -71
  24. mapFolding/reference/irvineJavaPort.py +3 -3
  25. mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py +1 -1
  26. mapFolding/someAssemblyRequired/A007822/_asynchronousAnnex.py +1 -1
  27. mapFolding/someAssemblyRequired/A007822/makeA007822AsynchronousModules.py +5 -3
  28. mapFolding/someAssemblyRequired/A007822/makeA007822Modules.py +22 -6
  29. mapFolding/someAssemblyRequired/RecipeJob.py +14 -24
  30. mapFolding/someAssemblyRequired/__init__.py +1 -0
  31. mapFolding/someAssemblyRequired/_toolkitContainers.py +6 -4
  32. mapFolding/someAssemblyRequired/infoBooth.py +2 -1
  33. mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +75 -20
  34. mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +9 -10
  35. mapFolding/someAssemblyRequired/makingModules_count.py +20 -22
  36. mapFolding/someAssemblyRequired/makingModules_doTheNeedful.py +9 -9
  37. mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py +6 -5
  38. mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py +6 -6
  39. mapFolding/someAssemblyRequired/toolkitMakeModules.py +3 -29
  40. mapFolding/someAssemblyRequired/toolkitNumba.py +2 -1
  41. mapFolding/someAssemblyRequired/transformationTools.py +2 -3
  42. mapFolding/syntheticModules/A007822/algorithm.py +8 -8
  43. mapFolding/syntheticModules/A007822/asynchronous.py +12 -13
  44. mapFolding/syntheticModules/A007822/initializeState.py +10 -8
  45. mapFolding/syntheticModules/A007822/theorem2.py +10 -8
  46. mapFolding/syntheticModules/A007822/theorem2Numba.py +20 -16
  47. mapFolding/syntheticModules/A007822/theorem2Trimmed.py +10 -8
  48. mapFolding/syntheticModules/countParallelNumba.py +5 -2
  49. mapFolding/syntheticModules/daoOfMapFoldingNumba.py +4 -2
  50. mapFolding/syntheticModules/initializeState.py +1 -1
  51. mapFolding/syntheticModules/meanders/bigInt.py +52 -15
  52. mapFolding/syntheticModules/theorem2.py +1 -1
  53. mapFolding/syntheticModules/theorem2Numba.py +4 -2
  54. mapFolding/syntheticModules/theorem2Trimmed.py +1 -1
  55. mapFolding/tests/conftest.py +1 -1
  56. mapFolding/tests/test_computations.py +21 -4
  57. mapFolding/tests/verify.py +323 -0
  58. {mapfolding-0.16.4.dist-info → mapfolding-0.17.1.dist-info}/METADATA +14 -11
  59. mapfolding-0.17.1.dist-info/RECORD +112 -0
  60. easyRun/A000682.py +0 -25
  61. easyRun/A005316.py +0 -20
  62. mapFolding/algorithms/matrixMeandersBeDry.py +0 -182
  63. mapFolding/algorithms/matrixMeandersNumPy.py +0 -333
  64. mapFolding/algorithms/matrixMeandersPandas.py +0 -334
  65. mapfolding-0.16.4.dist-info/RECORD +0 -106
  66. {mapfolding-0.16.4.dist-info → mapfolding-0.17.1.dist-info}/WHEEL +0 -0
  67. {mapfolding-0.16.4.dist-info → mapfolding-0.17.1.dist-info}/entry_points.txt +0 -0
  68. {mapfolding-0.16.4.dist-info → mapfolding-0.17.1.dist-info}/licenses/LICENSE +0 -0
  69. {mapfolding-0.16.4.dist-info → mapfolding-0.17.1.dist-info}/top_level.txt +0 -0
@@ -1,334 +0,0 @@
1
- from gc import collect as goByeBye
2
- from mapFolding.algorithms.matrixMeandersBeDry import areIntegersWide, flipTheExtra_0b1AsUfunc, getBucketsTotal
3
- from mapFolding.dataBaskets import MatrixMeandersNumPyState
4
- from mapFolding.syntheticModules.meanders.bigInt import countBigInt
5
- from warnings import warn
6
- import pandas
7
-
8
- def countPandas(state: MatrixMeandersNumPyState) -> MatrixMeandersNumPyState:
9
- """Count meanders with matrix transfer algorithm using pandas DataFrame.
10
-
11
- Parameters
12
- ----------
13
- state : MatrixMeandersState
14
- The algorithm state containing current `boundary`, `dictionaryMeanders`, and thresholds.
15
-
16
- Returns
17
- -------
18
- state : MatrixMeandersState
19
- Updated state with new `boundary` and `dictionaryMeanders`.
20
- """
21
- dataframeAnalyzed = pandas.DataFrame({
22
- 'analyzed': pandas.Series(name='analyzed', data=state.dictionaryMeanders.keys(), copy=False, dtype=state.datatypeArcCode)
23
- , 'crossings': pandas.Series(name='crossings', data=state.dictionaryMeanders.values(), copy=False, dtype=state.datatypeCrossings)
24
- }
25
- )
26
- state.dictionaryMeanders.clear()
27
-
28
- while (state.boundary > 0 and not areIntegersWide(state, dataframe=dataframeAnalyzed)):
29
-
30
- def aggregateArcCodes() -> None:
31
- nonlocal dataframeAnalyzed
32
- dataframeAnalyzed = dataframeAnalyzed.iloc[0:state.indexTarget].groupby('analyzed', sort=False)['crossings'].aggregate('sum').reset_index()
33
-
34
- def analyzeArcCodesAligned(dataframeMeanders: pandas.DataFrame) -> pandas.DataFrame:
35
- """Compute `arcCode` from `bitsAlpha` and `bitsZulu` if at least one is an even number.
36
-
37
- Before computing `arcCode`, some values of `bitsAlpha` and `bitsZulu` are modified.
38
-
39
- Warning
40
- -------
41
- This function deletes rows from `dataframeMeanders`. Always run this analysis last.
42
-
43
- Formula
44
- -------
45
- ```python
46
- if bitsAlpha > 1 and bitsZulu > 1 and (bitsAlphaIsEven or bitsZuluIsEven):
47
- arcCode = (bitsAlpha >> 2) | ((bitsZulu >> 2) << 1)
48
- ```
49
- """
50
- # NOTE Step 1 drop unqualified rows
51
- # ======= > * > bitsAlpha 1 bitsZulu 1 ====================
52
- dataframeMeanders['analyzed'] = dataframeMeanders['arcCode'].copy() # `bitsAlpha`
53
- dataframeMeanders['analyzed'] &= state.locatorBits # `bitsAlpha`
54
-
55
- dataframeMeanders['analyzed'] = dataframeMeanders['analyzed'].gt(1) # if bitsAlphaHasArcs
56
-
57
- bitsTarget: pandas.Series = dataframeMeanders['arcCode'].copy() # `bitsZulu`
58
- bitsTarget //= 2**1 # `bitsZulu` (bitsZulu >> 1)
59
- bitsTarget &= state.locatorBits # `bitsZulu`
60
-
61
- dataframeMeanders['analyzed'] *= bitsTarget
62
- del bitsTarget
63
- dataframeMeanders = dataframeMeanders.loc[(dataframeMeanders['analyzed'] > 1)] # if (bitsAlphaHasArcs and bitsZuluHasArcs)
64
-
65
- # ======= ^ & & bitsAlpha 1 bitsZulu 1 ====================
66
- dataframeMeanders.loc[:, 'analyzed'] = dataframeMeanders['arcCode'].copy() # `bitsAlpha`
67
- dataframeMeanders.loc[:, 'analyzed'] &= state.locatorBits # `bitsAlpha`
68
-
69
- dataframeMeanders.loc[:, 'analyzed'] &= 1 # `bitsAlpha`
70
-
71
- bitsTarget: pandas.Series = dataframeMeanders['arcCode'].copy() # `bitsZulu`
72
- bitsTarget //= 2**1 # `bitsZulu` (bitsZulu >> 1)
73
- bitsTarget &= state.locatorBits # `bitsZulu`
74
-
75
- dataframeMeanders.loc[:, 'analyzed'] &= bitsTarget
76
- del bitsTarget
77
- dataframeMeanders.loc[:, 'analyzed'] ^= 1
78
-
79
- dataframeMeanders = dataframeMeanders.loc[(dataframeMeanders['analyzed'] > 0)] # if (bitsAlphaIsEven or bitsZuluIsEven)
80
-
81
- # NOTE Step 2 modify rows
82
- # Make a selector for bitsZuluAtOdd, so you can modify bitsAlpha
83
- dataframeMeanders.loc[:, 'analyzed'] = dataframeMeanders['arcCode'].copy() # `bitsZulu`
84
- dataframeMeanders.loc[:, 'analyzed'] //= 2**1 # `bitsZulu` (bitsZulu >> 1)
85
- dataframeMeanders.loc[:, 'analyzed'] &= 1 # selectorBitsZuluAtOdd
86
-
87
- bitsTarget = dataframeMeanders['arcCode'].copy() # `bitsAlpha`
88
- bitsTarget &= state.locatorBits # `bitsAlpha`
89
-
90
- # if bitsAlphaAtEven and not bitsZuluAtEven, modify bitsAlphaPairedToOdd
91
- bitsTarget.loc[(dataframeMeanders['analyzed'] > 0)] = state.datatypeArcCode(
92
- flipTheExtra_0b1AsUfunc(bitsTarget.loc[(dataframeMeanders['analyzed'] > 0)]))
93
-
94
- dataframeMeanders.loc[:, 'analyzed'] = dataframeMeanders['arcCode'].copy() # `bitsZulu`
95
- dataframeMeanders.loc[:, 'analyzed'] //= 2**1 # `bitsZulu` (bitsZulu >> 1)
96
- dataframeMeanders.loc[:, 'analyzed'] &= state.locatorBits # `bitsZulu`
97
-
98
- # if bitsZuluAtEven and not bitsAlphaAtEven, modify bitsZuluPairedToOdd
99
- dataframeMeanders.loc[((dataframeMeanders.loc[:, 'arcCode'] & 1) > 0), 'analyzed'] = state.datatypeArcCode(
100
- flipTheExtra_0b1AsUfunc(dataframeMeanders.loc[((dataframeMeanders.loc[:, 'arcCode'] & 1) > 0), 'analyzed']))
101
-
102
- # NOTE Step 3 compute arcCode
103
- # ======= >> | << >> bitsZulu 2 3 bitsAlpha 2 =============
104
- dataframeMeanders.loc[:, 'analyzed'] //= 2**2 # (bitsZulu >> 2)
105
- dataframeMeanders.loc[:, 'analyzed'] *= 2**3 # (bitsZulu << 3)
106
- dataframeMeanders.loc[:, 'analyzed'] |= bitsTarget
107
- del bitsTarget
108
- dataframeMeanders.loc[:, 'analyzed'] //= 2**2 # (... >> 2)
109
-
110
- dataframeMeanders.loc[dataframeMeanders['analyzed'] >= state.MAXIMUMarcCode, 'analyzed'] = 0
111
-
112
- return dataframeMeanders
113
-
114
- def analyzeArcCodesSimple(dataframeMeanders: pandas.DataFrame) -> pandas.DataFrame:
115
- """Compute arcCode with the 'simple' formula.
116
-
117
- Formula
118
- -------
119
- ```python
120
- arcCode = ((bitsAlpha | (bitsZulu << 1)) << 2) | 3
121
- ```
122
-
123
- Notes
124
- -----
125
- Using `+= 3` instead of `|= 3` is valid in this specific case. Left shift by two means the last bits are '0b00'. '0 + 3'
126
- is '0b11', and '0b00 | 0b11' is also '0b11'.
127
-
128
- """
129
- dataframeMeanders['analyzed'] = dataframeMeanders['arcCode']
130
- dataframeMeanders.loc[:, 'analyzed'] &= state.locatorBits
131
-
132
- bitsZulu: pandas.Series = dataframeMeanders['arcCode'].copy()
133
- bitsZulu //= 2**1 # (bitsZulu >> 1)
134
- bitsZulu &= state.locatorBits # `bitsZulu`
135
-
136
- bitsZulu *= 2**1 # (bitsZulu << 1)
137
-
138
- dataframeMeanders.loc[:, 'analyzed'] |= bitsZulu # ((bitsAlpha | (bitsZulu ...))
139
-
140
- del bitsZulu
141
-
142
- dataframeMeanders.loc[:, 'analyzed'] *= 2**2 # (... << 2)
143
- dataframeMeanders.loc[:, 'analyzed'] += 3 # (...) | 3
144
- dataframeMeanders.loc[dataframeMeanders['analyzed'] >= state.MAXIMUMarcCode, 'analyzed'] = 0
145
-
146
- return dataframeMeanders
147
-
148
- def analyzeBitsAlpha(dataframeMeanders: pandas.DataFrame) -> pandas.DataFrame:
149
- """Compute `arcCode` from `bitsAlpha`.
150
-
151
- Formula
152
- -------
153
- ```python
154
- if bitsAlpha > 1:
155
- arcCode = ((1 - (bitsAlpha & 1)) << 1) | (bitsZulu << 3) | (bitsAlpha >> 2)
156
- # `(1 - (bitsAlpha & 1)` is an evenness test.
157
- ```
158
- """
159
- dataframeMeanders['analyzed'] = dataframeMeanders['arcCode']
160
- dataframeMeanders.loc[:, 'analyzed'] &= 1 # (bitsAlpha & 1)
161
- dataframeMeanders.loc[:, 'analyzed'] ^= 1 # (1 - (bitsAlpha ...))
162
-
163
- dataframeMeanders.loc[:, 'analyzed'] *= 2**1 # ((bitsAlpha ...) << 1)
164
-
165
- bitsTarget: pandas.Series = dataframeMeanders['arcCode'].copy() # `bitsZulu`
166
- bitsTarget //= 2**1 # `bitsZulu` (bitsZulu >> 1)
167
- bitsTarget &= state.locatorBits # `bitsZulu`
168
-
169
- bitsTarget *= 2**3 # (bitsZulu << 3)
170
- dataframeMeanders.loc[:, 'analyzed'] |= bitsTarget # ... | (bitsZulu ...)
171
-
172
- del bitsTarget
173
-
174
- """NOTE In this code block, I rearranged the "formula" to use `bitsTarget` for two goals. 1. `(bitsAlpha >> 2)`.
175
- 2. `if bitsAlpha > 1`. The trick is in the equivalence of v1 and v2.
176
- v1: BITScow | (BITSwalk >> 2)
177
- v2: ((BITScow << 2) | BITSwalk) >> 2
178
-
179
- The "formula" calls for v1, but by using v2, `bitsTarget` is not changed. Therefore, because `bitsTarget` is
180
- `bitsAlpha`, I can use `bitsTarget` for goal 2, `if bitsAlpha > 1`.
181
- """
182
- dataframeMeanders.loc[:, 'analyzed'] *= 2**2 # ... | (bitsAlpha >> 2)
183
-
184
- bitsTarget = dataframeMeanders['arcCode'].copy() # `bitsAlpha`
185
- bitsTarget &= state.locatorBits # `bitsAlpha`
186
-
187
- dataframeMeanders.loc[:, 'analyzed'] |= bitsTarget # ... | (bitsAlpha)
188
- dataframeMeanders.loc[:, 'analyzed'] //= 2**2 # (... >> 2)
189
-
190
- dataframeMeanders.loc[(bitsTarget <= 1), 'analyzed'] = 0 # if bitsAlpha > 1
191
-
192
- del bitsTarget
193
-
194
- dataframeMeanders.loc[dataframeMeanders['analyzed'] >= state.MAXIMUMarcCode, 'analyzed'] = 0
195
-
196
- return dataframeMeanders
197
-
198
- def analyzeBitsZulu(dataframeMeanders: pandas.DataFrame) -> pandas.DataFrame:
199
- """Compute `arcCode` from `bitsZulu`.
200
-
201
- Formula
202
- -------
203
- ```python
204
- if bitsZulu > 1:
205
- arcCode = (1 - (bitsZulu & 1)) | (bitsAlpha << 2) | (bitsZulu >> 1)
206
- ```
207
- """
208
- # NOTE `(1 - (bitsZulu & 1))` is an evenness test: we want a single bit as the answer.
209
- dataframeMeanders.loc[:, 'analyzed'] = dataframeMeanders['arcCode'] # `bitsZulu`
210
- dataframeMeanders.loc[:, 'analyzed'] //= 2**1 # `bitsZulu` (bitsZulu >> 1)
211
- dataframeMeanders.loc[:, 'analyzed'] &= 1 # `bitsZulu`
212
- dataframeMeanders.loc[:, 'analyzed'] &= 1 # (bitsZulu & 1)
213
- dataframeMeanders.loc[:, 'analyzed'] ^= 1 # (1 - (bitsZulu ...))
214
-
215
- bitsTarget: pandas.Series = dataframeMeanders['arcCode'].copy() # `bitsAlpha`
216
- bitsTarget &= state.locatorBits # `bitsAlpha`
217
-
218
- bitsTarget *= 2**2 # (bitsAlpha << 2)
219
- dataframeMeanders.loc[:, 'analyzed'] |= bitsTarget # ... | (bitsAlpha ...)
220
- del bitsTarget
221
-
222
- # NOTE Same trick as in `analyzeBitsAlpha`.
223
- dataframeMeanders.loc[:, 'analyzed'] *= 2**1 # (... << 1)
224
-
225
- bitsTarget = dataframeMeanders['arcCode'].copy() # `bitsZulu`
226
- bitsTarget //= 2**1 # `bitsZulu` (bitsZulu >> 1)
227
- bitsTarget &= state.locatorBits # `bitsZulu`
228
-
229
- dataframeMeanders.loc[:, 'analyzed'] |= bitsTarget # ... | (bitsZulu)
230
- dataframeMeanders.loc[:, 'analyzed'] //= 2**1 # (... >> 1)
231
-
232
- dataframeMeanders.loc[bitsTarget <= 1, 'analyzed'] = 0 # if bitsZulu > 1
233
- del bitsTarget
234
-
235
- dataframeMeanders.loc[dataframeMeanders['analyzed'] >= state.MAXIMUMarcCode, 'analyzed'] = 0
236
-
237
- return dataframeMeanders
238
-
239
- def recordArcCodes(dataframeMeanders: pandas.DataFrame) -> pandas.DataFrame:
240
- nonlocal dataframeAnalyzed
241
-
242
- indexStopAnalyzed: int = state.indexTarget + int((dataframeMeanders['analyzed'] > 0).sum())
243
-
244
- if indexStopAnalyzed > state.indexTarget:
245
- if len(dataframeAnalyzed.index) < indexStopAnalyzed:
246
- warn(f"Lengthened `dataframeAnalyzed` from {len(dataframeAnalyzed.index)} to {indexStopAnalyzed=}; n={state.n}, {state.boundary=}.", stacklevel=2)
247
- dataframeAnalyzed = dataframeAnalyzed.reindex(index=pandas.RangeIndex(indexStopAnalyzed), fill_value=0)
248
-
249
- dataframeAnalyzed.loc[state.indexTarget:indexStopAnalyzed - 1, ['analyzed']] = (
250
- dataframeMeanders.loc[(dataframeMeanders['analyzed'] > 0), ['analyzed']
251
- ].to_numpy(dtype=state.datatypeArcCode, copy=False)
252
- )
253
-
254
- dataframeAnalyzed.loc[state.indexTarget:indexStopAnalyzed - 1, ['crossings']] = (
255
- dataframeMeanders.loc[(dataframeMeanders['analyzed'] > 0), ['crossings']
256
- ].to_numpy(dtype=state.datatypeCrossings, copy=False)
257
- )
258
-
259
- state.indexTarget = indexStopAnalyzed
260
-
261
- del indexStopAnalyzed
262
-
263
- return dataframeMeanders
264
-
265
- dataframeMeanders = pandas.DataFrame({
266
- 'arcCode': pandas.Series(name='arcCode', data=dataframeAnalyzed['analyzed'], copy=False, dtype=state.datatypeArcCode)
267
- , 'analyzed': pandas.Series(name='analyzed', data=0, dtype=state.datatypeArcCode)
268
- , 'crossings': pandas.Series(name='crossings', data=dataframeAnalyzed['crossings'], copy=False, dtype=state.datatypeCrossings)
269
- }
270
- )
271
-
272
- del dataframeAnalyzed
273
- goByeBye()
274
-
275
- state.bitWidth = int(dataframeMeanders['arcCode'].max()).bit_length()
276
- length: int = getBucketsTotal(state)
277
- dataframeAnalyzed = pandas.DataFrame({
278
- 'analyzed': pandas.Series(name='analyzed', data=0, index=pandas.RangeIndex(length), dtype=state.datatypeArcCode)
279
- , 'crossings': pandas.Series(name='crossings', data=0, index=pandas.RangeIndex(length), dtype=state.datatypeCrossings)
280
- }, index=pandas.RangeIndex(length)
281
- )
282
-
283
- state.boundary -= 1
284
-
285
- state.indexTarget = 0
286
-
287
- dataframeMeanders: pandas.DataFrame = analyzeArcCodesSimple(dataframeMeanders)
288
- dataframeMeanders = recordArcCodes(dataframeMeanders)
289
-
290
- dataframeMeanders = analyzeBitsAlpha(dataframeMeanders)
291
- dataframeMeanders = recordArcCodes(dataframeMeanders)
292
-
293
- dataframeMeanders = analyzeBitsZulu(dataframeMeanders)
294
- dataframeMeanders = recordArcCodes(dataframeMeanders)
295
-
296
- dataframeMeanders = analyzeArcCodesAligned(dataframeMeanders)
297
- dataframeMeanders = recordArcCodes(dataframeMeanders)
298
- del dataframeMeanders
299
- goByeBye()
300
-
301
- aggregateArcCodes()
302
-
303
- state.dictionaryMeanders = dataframeAnalyzed.set_index('analyzed')['crossings'].to_dict()
304
- del dataframeAnalyzed
305
- return state
306
-
307
- def doTheNeedful(state: MatrixMeandersNumPyState) -> int:
308
- """Compute `crossings` with a transfer matrix algorithm implemented in pandas.
309
-
310
- Parameters
311
- ----------
312
- state : MatrixMeandersState
313
- The algorithm state.
314
-
315
- Returns
316
- -------
317
- crossings : int
318
- The computed value of `crossings`.
319
-
320
- Notes
321
- -----
322
- Citation: https://github.com/hunterhogan/mapFolding/blob/main/citations/Jensen.bibtex
323
-
324
- See Also
325
- --------
326
- https://oeis.org/A000682
327
- https://oeis.org/A005316
328
- """
329
- while state.boundary > 0:
330
- if areIntegersWide(state):
331
- state = countBigInt(state)
332
- else:
333
- state = countPandas(state)
334
- return sum(state.dictionaryMeanders.values())
@@ -1,106 +0,0 @@
1
- easyRun/A000682.py,sha256=nJJrmVycQUe1H7ms11QGz1ZyYUVdZsjEGtuJk97yxQ0,713
2
- easyRun/A005316.py,sha256=WCIqsNSevjgUSnTe24d6zWKLZnJSoy14piSt6G26WuE,434
3
- easyRun/NOTcountingFolds.py,sha256=3wlVLr_KVZwniu-F4KCsBUhsErpu9BZCBGuvlz6-668,807
4
- easyRun/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
- mapFolding/beDRY.py,sha256=0vJwnsvz6_jR8gfuU38vW9KoMTnRqyaYaAwbJcKLhFI,12674
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
- mapFolding/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- mapFolding/algorithms/A086345.py,sha256=te3Zy76eJLE3dSFsK7hXTHJapewM1u43GBUV78fL2z8,2492
18
- mapFolding/algorithms/__init__.py,sha256=gARPqfySaeSWMfApQ5wSxzy7ZdgLdKYsLqsRSEYWwWI,28
19
- mapFolding/algorithms/daoOfMapFolding.py,sha256=ncTIiBfTsM8SNVx9qefZ0bBcBtviWLSk4iPv3Z9nGiE,5442
20
- mapFolding/algorithms/matrixMeanders.py,sha256=swU6xSo0QhhmA_FxmZhmqvGLJ0h_rS_75jO-SHETWLA,3489
21
- mapFolding/algorithms/matrixMeandersBeDry.py,sha256=92qk8dSXn2YxtUYhzSFpJpKDRUx6vbfMaRCbJt9baw0,7539
22
- mapFolding/algorithms/matrixMeandersNumPy.py,sha256=DsMUnB-tsttBm4ib385BaYS2Dnr-KCokKWfK7RjQ780,17147
23
- mapFolding/algorithms/matrixMeandersPandas.py,sha256=9Pm49HdK0g2MJ15CuZoXOFbdn8JcE0GHzz2p9NB3xvA,13167
24
- mapFolding/algorithms/oeisIDbyFormula.py,sha256=jinaLXJb3annODlyidtNZkKIKUuFKp_yzjEZMHSMhQ0,11782
25
- mapFolding/algorithms/symmetricFolds.py,sha256=ji6GitOuVqd_g0X3_mcKuXB6RhjVS0EpOQanlAc5fPI,1457
26
- mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py,sha256=eGf_gvHUuHAPFFQZd3NIaozY2sQUGse_njtZ8_AyZ-U,2438
27
- mapFolding/reference/A000682facts.py,sha256=wRg5uy72M-o-cYEF3waCa7NjTUZ3XOoD9dmkTaUiH0o,23510
28
- mapFolding/reference/A005316facts.py,sha256=Cg2Pqtv3Dnk8IZOqer8Wu3Ie2uwJV_M0Kmr6_QXjKuQ,11768
29
- mapFolding/reference/A086345Wu.py,sha256=3FJlvcVkrQL2hz4IN2NdzmdMW0weWfYh9l1pnXBTQnc,1110
30
- mapFolding/reference/__init__.py,sha256=GKcSgYE49NcTISx-JZbELXyq-eRkMeTL5g4DXInWFw0,2206
31
- mapFolding/reference/flattened.py,sha256=0eHgLFIeIeVUsI5zF5oSy5iWYrjOMzxr7KjDxiTe01k,16078
32
- mapFolding/reference/hunterNumba.py,sha256=iLfyqwGdAh6c5GbapnKsWhAsNsR3O-fyGGHAdohluLw,7258
33
- mapFolding/reference/irvineJavaPort.py,sha256=XnsL4g33LRrYwAhcrAVt-ujsP6QD6fbyCsGYzcm9g_k,3724
34
- mapFolding/reference/jaxCount.py,sha256=t8ons45zyWNJQ-nmn1qbhNsTkTnRzf7ATauaYvIlkRI,14853
35
- mapFolding/reference/lunnonNumpy.py,sha256=mMgrgbrBpe4nmo72ThEI-MGH0OwEHmfMPczSXHp2qKo,4357
36
- mapFolding/reference/lunnonWhile.py,sha256=ZL8GAQtPs5nJZSgoDl5USrLSS_zs03y98y1Z9E4jOmQ,3799
37
- mapFolding/reference/rotatedEntryPoint.py,sha256=3IJU7Hc2PDSE71wmSkDs4Z3t0Px9NBSzmCsVrgQuQyU,10274
38
- mapFolding/reference/total_countPlus1vsPlusN.py,sha256=yJZAVLVdoXqHag2_N6_6CT-Q6HXBgRro-eny93-Rlpw,9307
39
- mapFolding/reference/jobsCompleted/__init__.py,sha256=TU93ZGUW1xEkT6d9mQFn_rp5DvRy0ZslEB2Q6MF5ZDc,2596
40
- mapFolding/reference/jobsCompleted/[2x19]/p2x19.py,sha256=_tvYtfzMWVo2VtUbIAieoscb4N8FFflgTdW4-ljBUuA,19626
41
- mapFolding/reference/jobsCompleted/p2x19/p2x19.py,sha256=eZEw4Me4ocTt6VXoK2-Sbd5SowZtxRIbN9dZmc7OCVg,6395
42
- mapFolding/reference/matrixMeandersAnalysis/__init__.py,sha256=FQbR63_z3_zd3HMrpUxx3_YIcn9znzA0RIggcMntSC8,35
43
- mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py,sha256=R9MUdS0vLEyaVdCio2AAfxEpBz6FDp7cZotEE47nFdU,1001
44
- mapFolding/reference/matrixMeandersAnalysis/signatures.py,sha256=6yHwW22032ysBgoG9LXxUyvWlKjQgxpB-f8lI213YZ0,20677
45
- mapFolding/reference/meandersDumpingGround/A005316JavaPort.py,sha256=syMHicfioP-0GrOq7GnEpuAFSNvRwnbGim0mqV862sA,4885
46
- mapFolding/reference/meandersDumpingGround/A005316imperative.py,sha256=UEbXPkORngVo0UrwS81SY2gwz1XWAaMZ0rgA7HMiVYk,3793
47
- mapFolding/reference/meandersDumpingGround/A005316primitiveOptimized.py,sha256=iFig6Edv1E774xrlVUFLyscC40DqDhV-oh4hOnG2DLI,4116
48
- mapFolding/reference/meandersDumpingGround/A005316redis.py,sha256=MPeiobrs3VsNZOOKYBg52oVp0OjVDzLEdsRKfrZ9LrU,4328
49
- mapFolding/reference/meandersDumpingGround/A005316write2disk.py,sha256=NMVrdhe5KhnXQfaQ5Xr7Pwl5oXYEOM1DrMISDDOCVVw,5633
50
- mapFolding/reference/meandersDumpingGround/matrixMeanders64retired.py,sha256=oRVgf6zkWRjk7dWR-Px41M_5spdvKy_Pich0qd7oxVA,9270
51
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py,sha256=VpRiIGhnk-DbxwsHwCeCwXqcKLSNyHl-iRGLDH9ZGMY,7674
52
- mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py,sha256=G4358jHFr7hdOa709c8nYdR3eMMZjUqcxbS-L2aAOqw,24428
53
- mapFolding/reference/meandersDumpingGround/matrixMeandersSlicePop.py,sha256=XyiesSQAH1dRplYx_CdR1FzcXvgmmxzj27V4aIqPp7o,5353
54
- mapFolding/someAssemblyRequired/RecipeJob.py,sha256=Dpu33Wu6OziJ8Sqx6TCHA10TBmNQT8yiCl2FtaM3jl0,13723
55
- mapFolding/someAssemblyRequired/__init__.py,sha256=PIdLYHFSfYsQSP55PoQSusi1dsOGhiY986kgosGO3vI,5811
56
- mapFolding/someAssemblyRequired/_toolIfThis.py,sha256=QC2cmCea18BZ_WpoWoErYCWhROvmd40_i_nBO7YFRaE,6378
57
- mapFolding/someAssemblyRequired/_toolkitContainers.py,sha256=rp1w-y5wXctcwSPkHG1JQSCY3ro5lc0AoAF_PkBJfQQ,14798
58
- mapFolding/someAssemblyRequired/getLLVMforNoReason.py,sha256=tY0-2K0BFkwLAAjSrFJLPoG8CevDHOFc3OH3TxXANzg,2806
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
68
- mapFolding/someAssemblyRequired/A007822/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
74
- mapFolding/someAssemblyRequired/meanders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- mapFolding/someAssemblyRequired/meanders/makeMeandersModules.py,sha256=fvuZhOzL4LcUrDQq5gFtGF2U7xwlosTlbs_mLkeSr9E,3305
76
- mapFolding/syntheticModules/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
77
- mapFolding/syntheticModules/countParallelNumba.py,sha256=IarQHgZmxCt3I1WkRHRrqPwpeBSNzcV6ZEX2X0HrC8c,7777
78
- mapFolding/syntheticModules/daoOfMapFoldingNumba.py,sha256=6V2DwXtmO6EeQXf6oxDp3myp-vbsVq6G0ZjnLRF9rCw,5940
79
- mapFolding/syntheticModules/initializeState.py,sha256=OTiVi1Ywnlwk8tbwSIFjPJa_yBCINoapaCzGXDAJq_k,3121
80
- mapFolding/syntheticModules/theorem2.py,sha256=sqo8AA7CqvejAEuNqo5KIx7shjCQsuh8l8ThJot5RPA,3262
81
- mapFolding/syntheticModules/theorem2Numba.py,sha256=h4ToUvB5Ubesi3mGVrIHErxfEnzeqlvSI7otnJLAo4o,5650
82
- mapFolding/syntheticModules/theorem2Trimmed.py,sha256=JjWz71sBHdlzw1bDhy0rtEVvf6RNR9LVYLUvCdPYJ3g,2930
83
- mapFolding/syntheticModules/A007822/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
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
90
- mapFolding/syntheticModules/meanders/__init__.py,sha256=evVFqhCGa-WZKDiLcnQWjs-Bj34eRnfSLqz_d7dFYZY,83
91
- mapFolding/syntheticModules/meanders/bigInt.py,sha256=G6iZbPaEz2gHInMAZ0ZBUgoPbSjS7YYI2QjsxWg-PQE,2962
92
- mapFolding/tests/__init__.py,sha256=QVCHSMFVvTxV3mAyYOLkMFAFyBJ514zdoVnDmpBJnTo,1336
93
- mapFolding/tests/conftest.py,sha256=5vV_Vy5ZrV3uoP9bQ8B-Kqc0zMrL7KAhsPJwchMDb6w,15700
94
- mapFolding/tests/test_computations.py,sha256=72b_6rxaJsaIuTVwAF2qkc2rIFJE-bM3hHcFhT756MQ,8600
95
- mapFolding/tests/test_filesystem.py,sha256=0rYQ62f4e3HOoymXrxDWbqNEBJQ7DGN8RUOMI84tE2Q,3892
96
- mapFolding/tests/test_oeis.py,sha256=M4Fb0e4_h9QTX9Oy6l5-M1UQfNqeonoGVOn0DJI9huE,4854
97
- mapFolding/tests/test_other.py,sha256=ScBiJ78LnyAaW-RhxcouX6Xw10wgpSdqfvT4LO3WjnQ,4766
98
- mapFolding/tests/test_tasks.py,sha256=_pr9JRWjjNKA7sww70XvkJJdGPruBVzubM63RmD_Du0,4013
99
- mapFolding/zCuzDocStoopid/__init__.py,sha256=uKcGXsaYKH9kQUGHjaY0EtWtU6qybb9Fs09ZYKEFMNs,236
100
- mapFolding/zCuzDocStoopid/makeDocstrings.py,sha256=cQl-B-RlAkFijATUTWfKCael46foH-ZsOp1EHoYxoGs,3212
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,,