seqbuild 0.0.52__tar.gz → 0.0.53__tar.gz

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 (122) hide show
  1. {seqbuild-0.0.52 → seqbuild-0.0.53}/PKG-INFO +1 -1
  2. {seqbuild-0.0.52 → seqbuild-0.0.53}/pyproject.toml +1 -1
  3. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/approximators.py +62 -7
  4. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/nvec_gen.py +19 -9
  5. seqbuild-0.0.53/seqbuild/seqgen/fit22_gen.py +65 -0
  6. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/gg_gen.py +1 -6
  7. seqbuild-0.0.53/seqbuild/seqgen/lps_gen.py +43 -0
  8. seqbuild-0.0.53/seqbuild/seqgen/n2mv_gen.py +91 -0
  9. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild.egg-info/PKG-INFO +1 -1
  10. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild.egg-info/SOURCES.txt +3 -0
  11. {seqbuild-0.0.52 → seqbuild-0.0.53}/setup.py +1 -1
  12. {seqbuild-0.0.52 → seqbuild-0.0.53}/LICENSE.txt +0 -0
  13. {seqbuild-0.0.52 → seqbuild-0.0.53}/README.md +0 -0
  14. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/__init__.py +0 -0
  15. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/__init__.py +0 -0
  16. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/differentials.py +0 -0
  17. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/fraction.py +0 -0
  18. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/multi_metric.py +0 -0
  19. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/not_equals.py +0 -0
  20. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/prng_dec_delta.py +0 -0
  21. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/desi/seqcov_perm.py +0 -0
  22. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/__init__.py +0 -0
  23. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/cl_guide_parser.py +0 -0
  24. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/cmd_proc.py +0 -0
  25. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/comm_lang.py +0 -0
  26. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/easy_gen_struct.py +0 -0
  27. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/make_cmd.py +0 -0
  28. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commlang_guide.md +0 -0
  29. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_11.txt +0 -0
  30. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_12error.txt +0 -0
  31. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_13.txt +0 -0
  32. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_14.txt +0 -0
  33. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_15.txt +0 -0
  34. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_16.txt +0 -0
  35. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_17.txt +0 -0
  36. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_18.txt +0 -0
  37. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_19.txt +0 -0
  38. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_20.txt +0 -0
  39. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_21.txt +0 -0
  40. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_22.txt +0 -0
  41. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_23.txt +0 -0
  42. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_24.txt +0 -0
  43. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_25.txt +0 -0
  44. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_26.txt +0 -0
  45. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_27.txt +0 -0
  46. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_28.txt +0 -0
  47. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_29.txt +0 -0
  48. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_30.txt +0 -0
  49. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_31.txt +0 -0
  50. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_32.txt +0 -0
  51. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_33.txt +0 -0
  52. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_34.txt +0 -0
  53. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_41.txt +0 -0
  54. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_42.txt +0 -0
  55. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_eight.txt +0 -0
  56. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_five.txt +0 -0
  57. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_four.txt +0 -0
  58. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_lcg_cmp.txt +0 -0
  59. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_lcg_cmp2.txt +0 -0
  60. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_nine.txt +0 -0
  61. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_one.txt +0 -0
  62. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_seven.txt +0 -0
  63. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_six.txt +0 -0
  64. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_ten.txt +0 -0
  65. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commond_three.txt +0 -0
  66. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/commondeth.txt +0 -0
  67. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/dummy_obj.txt +0 -0
  68. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/example_command.md +0 -0
  69. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_base_screen.png +0 -0
  70. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_help_cmd.png +0 -0
  71. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_help_make.png +0 -0
  72. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_help_screen.png +0 -0
  73. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_load_c9.png +0 -0
  74. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_realtime_command.png +0 -0
  75. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sample_script/seqbuild_show_numbers.png +0 -0
  76. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/face/sb_ui.py +0 -0
  77. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/__init__.py +0 -0
  78. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/extraneous.py +0 -0
  79. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/idectree.py +0 -0
  80. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/idt_proc.py +0 -0
  81. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/intfactor.py +0 -0
  82. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/lcg_v2.py +0 -0
  83. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/lcg_v3.py +0 -0
  84. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/mdr_v2.py +0 -0
  85. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/mod_prng.py +0 -0
  86. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/modulo_ops.py +0 -0
  87. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/n2mvf_autogen.py +0 -0
  88. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/pof_autogen.py +0 -0
  89. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/poly_output_fitter_.py +0 -0
  90. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/prng_pw_op.py +0 -0
  91. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/process_seq.py +0 -0
  92. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/seq_struct.py +0 -0
  93. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/intigers/tvec.py +0 -0
  94. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/__init__.py +0 -0
  95. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/affine_fit_search.py +0 -0
  96. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/affine_io_fit.py +0 -0
  97. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/affine_ops.py +0 -0
  98. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/ag_ext.py +0 -0
  99. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/csrch.py +0 -0
  100. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/iseq.py +0 -0
  101. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/matfactor_eval.py +0 -0
  102. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/minmax_freq.py +0 -0
  103. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/n2m.py +0 -0
  104. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/n2m_function.py +0 -0
  105. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/n2m_index.py +0 -0
  106. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/ngram.py +0 -0
  107. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/nsfr.py +0 -0
  108. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/puc.py +0 -0
  109. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/mini_dm/sp_op.py +0 -0
  110. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/__init__.py +0 -0
  111. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/idt_gen.py +0 -0
  112. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/mdr_gen.py +0 -0
  113. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/optri_gen.py +0 -0
  114. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/rch_gen.py +0 -0
  115. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/sb_crypt.py +0 -0
  116. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/shadow_gen.py +0 -0
  117. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/ssi_load.py +0 -0
  118. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild/seqgen/ssi_netop.py +0 -0
  119. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild.egg-info/dependency_links.txt +0 -0
  120. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild.egg-info/requires.txt +0 -0
  121. {seqbuild-0.0.52 → seqbuild-0.0.53}/seqbuild.egg-info/top_level.txt +0 -0
  122. {seqbuild-0.0.52 → seqbuild-0.0.53}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seqbuild
3
- Version: 0.0.52
3
+ Version: 0.0.53
4
4
  Summary: A collection of algorithms for pseudo-random number generation.
5
5
  Home-page: https://github.com/Changissnz/seqbuild
6
6
  Author: Richard Pham
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "seqbuild"
3
- version = "0.0.52"
3
+ version = "0.0.53"
4
4
  dependencies = [
5
5
  "numpy>=1.22.1",
6
6
  "matplotlib>=3.5.3",
@@ -8,17 +8,39 @@ DEFAULT_FIT22_PARTITION_SIZE_RANGE = (5,103)
8
8
  DEFAULT_POLYNOMIAL_PARTITION_SIZE_RANGE = (50,1000)
9
9
  DEFAULT_POLYNOMIAL_POINT_SIZE_RANGE = (5,21)
10
10
 
11
+ def default_length_outputter(prg_2vec):
12
+ x = list(prg_2vec()) + list(prg_2vec())
13
+ q = prg__LCG(x[0],x[1],x[2],x[3])
14
+ return prg__single_to_int(q)
15
+
16
+ def default_range_outputter(prg_2vec):
17
+ x = list(prg_2vec()) + list(prg_2vec())
18
+ q = prg__LCG(x[0],x[1],x[2],x[3])
19
+ return prg__single_to_range_outputter(q)
20
+
21
+ def default_bool_outputter(prg_2vec):
22
+ return wrap_ranged_modulo_over_generator(\
23
+ default_length_outputter(prg_2vec),[0,2])
24
+
25
+ def prg__nvec_to_int_type(px):
26
+
27
+ def f():
28
+ return np.array(px(),dtype=int)
29
+ return f
30
+
11
31
  class Fit22ValueOutputter(GenericIntSeqOp):
12
32
 
13
33
  def __init__(self,px,length_outputter,range_outputter,bool_outputter,\
14
34
  point_conn_type:int,adjustment_type:int=1):
15
35
  assert type(px) in {MethodType,FunctionType}
36
+ assert type(length_outputter) in {type(None),MethodType,FunctionType}
37
+ assert type(range_outputter) in {type(None),MethodType,FunctionType}
38
+ assert type(bool_outputter) in {type(None),MethodType,FunctionType}
39
+
16
40
  assert point_conn_type in {1,2}
17
- assert type(bool_outputter) in {MethodType,FunctionType}
18
41
 
19
- self.px = px
42
+ self.px = px
20
43
  self.point_conn_type = point_conn_type
21
- self.b_out = bool_outputter
22
44
 
23
45
  self.p0 = None
24
46
  self.p1 = None
@@ -29,6 +51,21 @@ class Fit22ValueOutputter(GenericIntSeqOp):
29
51
  self.a_ = None
30
52
  self.ax = None
31
53
 
54
+ if type(length_outputter) != type(None):
55
+ length_outputter = prg__single_to_int(length_outputter)
56
+ else:
57
+ length_outputter = default_length_outputter(px)
58
+
59
+ if type(range_outputter) == type(None):
60
+ range_outputter = default_range_outputter(px)
61
+
62
+ if type(bool_outputter) == type(None):
63
+ bool_outputter = default_bool_outputter(px)
64
+ else:
65
+ bool_outputter = wrap_ranged_modulo_over_generator(\
66
+ prg__single_to_int(bool_outputter),[0,2])
67
+
68
+ self.b_out = bool_outputter
32
69
  super().__init__(length_outputter,range_outputter,adjustment_type)
33
70
  return
34
71
 
@@ -39,10 +76,18 @@ class Fit22ValueOutputter(GenericIntSeqOp):
39
76
  self.update_points()
40
77
  else: pass
41
78
 
42
- if self.ax:
43
- sx = self.H.f(self.x_)
44
- else:
45
- sx = self.H.g(self.x_)
79
+ # do check on input before function apply
80
+ A = (self.ax + 1) % 2
81
+ qmin = np.min(self.H.ps[:,A])
82
+ qmax = np.max(self.H.ps[:,A])
83
+ x_ = modulo_in_range(self.x_,[qmin,qmax])
84
+
85
+ QF = self.H.f if self.ax else self.H.g
86
+ try:
87
+ sx = QF(self.x_)
88
+ except:
89
+ sx = QF(x_)
90
+
46
91
  self.x_ += self.a_
47
92
 
48
93
  sx_ = float_to_string(sx,True,True)
@@ -105,11 +150,21 @@ class LPSValueOutputter(GenericIntSeqOp):
105
150
  adjustment_type:int=1):
106
151
 
107
152
  assert type(px) in {MethodType,FunctionType}
153
+ assert type(length_outputter) in {type(None),MethodType,FunctionType}
154
+ assert type(range_outputter) in {type(None),MethodType,FunctionType}
108
155
  self.px = px
109
156
 
110
157
  self.p0,self.p1 = None,None
111
158
  self.adder_end,self.adder,self.adder_i = None,None,None
112
159
 
160
+ if type(length_outputter) != type(None):
161
+ length_outputter = prg__single_to_int(length_outputter)
162
+ else:
163
+ length_outputter = default_length_outputter(px)
164
+
165
+ if type(range_outputter) == type(None):
166
+ range_outputter = default_range_outputter(px)
167
+
113
168
  super().__init__(length_outputter,range_outputter,adjustment_type)
114
169
 
115
170
  #--------------------------------------------------------------------------
@@ -1,6 +1,7 @@
1
1
  from ..mini_dm.affine_ops import *
2
2
  from math import ceil
3
- from morebs2.numerical_generator import prg_partition_for_sz__n_rounds
3
+ from morebs2.numerical_generator import prg_partition_for_sz__n_rounds,prg__single_to_int
4
+ from intigers.extraneous import prg__single_to_range_outputter
4
5
  from types import MethodType,FunctionType
5
6
 
6
7
  DEFAULT_POINTSET_PARTSIZE_RATIO_RANGE = (0.15,0.23)
@@ -20,10 +21,16 @@ class PointSetGen__TypeAffine:
20
21
 
21
22
  def __init__(self,num_points,prg,ro_prg,ro_prg2,ro_prg3=None):
22
23
  assert type(prg) in {FunctionType,MethodType}
23
- assert type(ro_prg) in {FunctionType,MethodType}
24
- assert type(ro_prg2) in {FunctionType,MethodType}
24
+ assert type(ro_prg) in {FunctionType,MethodType,type(None)}
25
+ assert type(ro_prg2) in {FunctionType,MethodType,type(None)}
25
26
  assert type(ro_prg3) in {FunctionType,MethodType,type(None)}
26
27
 
28
+ if type(ro_prg) == type(None):
29
+ ro_prg = prg__single_to_range_outputter(deepcopy(prg))
30
+ if type(ro_prg2) == type(None):
31
+ ro_prg2 = prg__single_to_range_outputter(deepcopy(prg))
32
+
33
+
27
34
  self.num_points = None
28
35
  self.set_num_points(num_points)
29
36
  # outputs single integers
@@ -65,7 +72,7 @@ class PointSetGen__TypeAffine:
65
72
  rx = int(ceil(n * r))
66
73
  var = 0.5
67
74
  num_rounds = 5
68
- prt = prg_partition_for_sz__n_rounds(n,rx,self.prg,var,num_rounds)
75
+ prt = prg_partition_for_sz__n_rounds(n,rx,prg__single_to_int(self.prg),var,num_rounds)
69
76
  return prt
70
77
 
71
78
  def set_num_points(self,n):
@@ -92,7 +99,7 @@ class PointSetGen__TypeAffine:
92
99
  self.gen_ad_parameters = [None,None,None]
93
100
 
94
101
  def one_new_AffineDelta(self):
95
- return AffineDelta.one_instance_(self.prg,\
102
+ return AffineDelta.one_instance_(prg__single_to_int(self.prg),\
96
103
  self.ro_prg,self.ro_prg2,dim_range=self.gen_ad_parameters[0],\
97
104
  ma_order=self.gen_ad_parameters[1])
98
105
 
@@ -100,7 +107,7 @@ class PointSetGen__TypeAffine:
100
107
  assert is_valid_range(size_range,inclusive=False)
101
108
 
102
109
  ad = self.one_new_AffineDelta()
103
- num_points = modulo_in_range(self.prg(), size_range)
110
+ num_points = modulo_in_range(int(self.prg()), size_range)
104
111
  L = []
105
112
  L0 = []
106
113
  for _ in range(num_points):
@@ -162,9 +169,12 @@ class PointSetGen__TypeAffine:
162
169
  lx = len(self.point_seq)
163
170
  for i in range(self.num_points):
164
171
  adi = modulo_in_range(int(self.prg()),index_range)
165
- p = self.ad_seq[adi].fit(self.prg())
166
- p = self.modulate_point(p)
167
- self.point_seq.append(p)
172
+
173
+ x,q = self.one_io_pair(self.ad_seq[adi])
174
+ q = self.modulate_point(q)
175
+
176
+ self.input_seq.append(x)
177
+ self.point_seq.append(q)
168
178
  self.ad_indices_seq[adi].append(i+lx)
169
179
 
170
180
  return
@@ -0,0 +1,65 @@
1
+ from ..desi.approximators import *
2
+
3
+ DEFAULT_FIT22GEN_ADJTYPE_RATE_CHANGE = [13,69]
4
+ DEFAULT_FIT22GEN_ADJTYPE_RATE_CHANGE_2 = [9,95]
5
+
6
+
7
+ class Fit22Gen(Fit22ValueOutputter):
8
+
9
+ def __init__(self,prg1,prg2,prg3,prg4,adjtype1_rate_change_range = DEFAULT_FIT22GEN_ADJTYPE_RATE_CHANGE,\
10
+ adjtype2_rate_change_range= DEFAULT_FIT22GEN_ADJTYPE_RATE_CHANGE_2):
11
+ assert type(prg1) in {MethodType,FunctionType}
12
+
13
+ assert is_valid_range(adjtype1_rate_change_range,True,False)
14
+ assert adjtype1_rate_change_range[0] > 0
15
+
16
+ assert is_valid_range(adjtype2_rate_change_range,True,False)
17
+ assert adjtype2_rate_change_range[0] > 0
18
+
19
+ prg1 = prg__single_to_nvec(prg1,2)
20
+
21
+ if type(prg3) in {MethodType,FunctionType}:
22
+ prg3 = prg__single_to_range_outputter(prg3)
23
+
24
+ super().__init__(prg1,prg2,prg3,prg4,\
25
+ point_conn_type=1,adjustment_type=1)
26
+
27
+ self.atr_crange = adjtype1_rate_change_range
28
+ self.atr2_crange = adjtype2_rate_change_range
29
+ self.change1_threshold = self.atr_crange[0]
30
+ self.change2_threshold = self.atr2_crange[0]
31
+
32
+ self.c1 = 0
33
+ self.c2 = 0
34
+
35
+ def next_change_threshold(self,v,type_number):
36
+ assert type_number in {1,2}
37
+
38
+ if type_number == 1:
39
+ self.change1_threshold = modulo_in_range(int(v),self.atr_crange)
40
+ else:
41
+ self.change2_threshold = modulo_in_range(int(v),self.atr2_crange)
42
+
43
+ def switch_mode(self,x,type_number):
44
+ if type_number == 1:
45
+ if self.c1 >= self.change1_threshold:
46
+ self.c1 = 0
47
+ self.adj_type = modulo_in_range((self.adj_type + 1),[1,3])
48
+ self.next_change_threshold(x,type_number)
49
+ return
50
+
51
+ if self.c2 >= self.change2_threshold:
52
+ self.c2 = 0
53
+ self.point_conn_type = modulo_in_range((self.point_conn_type + 1),[1,3])
54
+ self.next_change_threshold(x,type_number)
55
+
56
+ def __next__(self):
57
+
58
+ x = super().__next__()
59
+
60
+ self.c1 += 1
61
+ self.c2 += 1
62
+
63
+ self.switch_mode(x,1)
64
+ self.switch_mode(x,2)
65
+ return x
@@ -220,12 +220,7 @@ class GaugeGuidedGen:
220
220
  scp = SeqCoveragePermuter(V,coverage_delta,\
221
221
  DEFAULT_AGV2GG_COVERAGE_RADIUS,sub_range,self.base_prg,delta_type=1)
222
222
  scp.set_partition(self.cat_size)
223
- return scp.apply()
224
-
225
- def permute_uwpd(self,V):
226
- sub_range = self.active_ranges[int(self.base_prg()) % len(self.active_ranges)]
227
- sup = SeqUWPDPermuter(V,uwpd_delta,sub_range,self.base_prg)
228
- return sup.apply()
223
+ return scp.apply()
229
224
 
230
225
  def compare_with_previous(self,V):
231
226
  if len(self.mvec) == 0: return None,None,None
@@ -0,0 +1,43 @@
1
+
2
+ from ..desi.approximators import *
3
+
4
+ DEFAULT_LPSGEN_ADJTYPE_RATE_CHANGE_RANGE = [10,91]
5
+
6
+ """
7
+ Subclass of class<LPSValueOutputter>. Initialized with 1-3 PRNGs, all
8
+ of them outputting single real numbers at every call. Reformatted
9
+ to output lengths and ranges, before instantiating class<LPSValueOutputter>.
10
+ """
11
+ class LPSGen(LPSValueOutputter):
12
+
13
+ def __init__(self,prg1,prg2,prg3,adjustment_type_rate_change_range=DEFAULT_LPSGEN_ADJTYPE_RATE_CHANGE_RANGE):
14
+ assert type(prg1) in {MethodType,FunctionType}
15
+ assert is_valid_range(adjustment_type_rate_change_range,True,False)
16
+ assert adjustment_type_rate_change_range[0] > 0
17
+
18
+ prg1 = prg__single_to_nvec(prg1,2)
19
+
20
+ if type(prg3) in {MethodType,FunctionType}:
21
+ prg3 = prg__single_to_range_outputter(prg3)
22
+
23
+ super().__init__(prg1,prg2,prg3,\
24
+ adjustment_type=1)
25
+
26
+ self.atr_crange = adjustment_type_rate_change_range
27
+ self.change_threshold = self.atr_crange[0]
28
+ self.c = 0
29
+
30
+ def next_change_threshold(self,v):
31
+ self.change_threshold = modulo_in_range(int(v),self.atr_crange)
32
+
33
+ def __next__(self):
34
+
35
+ x = super().__next__()
36
+
37
+ self.c += 1
38
+ if self.c >= self.change_threshold:
39
+ self.c = 0
40
+ self.adj_type = modulo_in_range((self.adj_type + 1),[1,3])
41
+ self.next_change_threshold(x)
42
+
43
+ return x
@@ -0,0 +1,91 @@
1
+ from ..intigers.n2mvf_autogen import *
2
+ from morebs2.numerical_generator import prg__LCG,prg__single_to_nvec
3
+ from collections import deque
4
+
5
+ DEFAULT_N2MV_GEN_FILLER_PRG2_MODULO = 7891
6
+
7
+ """
8
+ The PRNG `prg` is the primary generator: this generator uses `prg`
9
+ to produce input vectors of dimension n to output m-vectors from the
10
+ current <N2MVectorFunction>.
11
+
12
+ The main `__next__` function outputs values from its queue.
13
+
14
+ When `queue` is empty, generator has its <N2MVectorFunctionGen> produce
15
+ a <N2MVectorFunction> F. Then F outputs an m-vector. That m-vector is added
16
+ to `queue`. After some k >= (s in `update_frequency_range`) output values,
17
+ this generator instantiates another <N2MVectorFunctionGen>.
18
+
19
+ See file<intigers.n2mvf_autogen> for more details on
20
+ """
21
+ class N2MVGen:
22
+
23
+ def __init__(self,nm_range,prg,prg2,update_frequency_range):
24
+ assert is_valid_range(nm_range,True,False)
25
+ assert type(prg) in {FunctionType,MethodType}
26
+ assert type(prg2) in {FunctionType,MethodType,type(None)}
27
+ assert is_valid_range(update_frequency_range,True,False)
28
+
29
+ self.nm_range = nm_range
30
+ self.prg = prg__single_to_int(prg)
31
+
32
+ self.prg2 = prg2
33
+ if type(self.prg2) != type(None):
34
+ self.prg2 = prg__single_to_int(prg2)
35
+
36
+ self.nvfg = None
37
+
38
+ self.queue = deque()
39
+
40
+ self.nvfg = None
41
+ self.current_input_dim = None
42
+
43
+ self.uf_range = update_frequency_range
44
+ self.update_threshold = None
45
+ self.update_ctr = 0
46
+ self.filler_prg2()
47
+ self.next_NVMVFGen()
48
+
49
+ def __next__(self):
50
+ if len(self.queue) == 0:
51
+ self.next_vector()
52
+ return self.queue.popleft()
53
+
54
+ def next_NVMVFGen(self):
55
+
56
+ n = modulo_in_range(int(self.prg()),self.nm_range)
57
+ m = modulo_in_range(int(self.prg()),self.nm_range)
58
+
59
+ nm = (n,m)
60
+ self.current_input_dim = n
61
+
62
+ mode = "replace" if int(self.prg()) % 2 else "accumulate"
63
+ self.nvfg = N2MVectorFunctionGen(nm,self.prg,self.prg2,mode)
64
+
65
+ self.update_threshold = modulo_in_range(int(self.prg()),self.uf_range)
66
+ self.update_ctr = 0
67
+
68
+ def next_vector(self):
69
+ q = prg__single_to_nvec(self.prg,self.current_input_dim)()
70
+ F = self.nvfg.one_N2MVF()
71
+ mvec = F.apply(q)
72
+
73
+ self.update_ctr += len(mvec)
74
+
75
+ self.queue.extend(mvec)
76
+
77
+ if self.update_ctr >= self.update_threshold:
78
+ self.next_NVMVFGen()
79
+
80
+ """
81
+ an LCG, in cases where `prg2` is null.
82
+ """
83
+ def filler_prg2(self):
84
+ if type(self.prg2) != type(None):
85
+ return
86
+
87
+ x = prg_unique_sequence(self.prg,4)
88
+ if x[-1] == 0:
89
+ x[-1] = DEFAULT_N2MV_GEN_FILLER_PRG2_MODULO
90
+ self.prg2 = prg__LCG(x[0],x[1],x[2],x[3])
91
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seqbuild
3
- Version: 0.0.52
3
+ Version: 0.0.53
4
4
  Summary: A collection of algorithms for pseudo-random number generation.
5
5
  Home-page: https://github.com/Changissnz/seqbuild
6
6
  Author: Richard Pham
@@ -106,9 +106,12 @@ seqbuild/mini_dm/nsfr.py
106
106
  seqbuild/mini_dm/puc.py
107
107
  seqbuild/mini_dm/sp_op.py
108
108
  seqbuild/seqgen/__init__.py
109
+ seqbuild/seqgen/fit22_gen.py
109
110
  seqbuild/seqgen/gg_gen.py
110
111
  seqbuild/seqgen/idt_gen.py
112
+ seqbuild/seqgen/lps_gen.py
111
113
  seqbuild/seqgen/mdr_gen.py
114
+ seqbuild/seqgen/n2mv_gen.py
112
115
  seqbuild/seqgen/optri_gen.py
113
116
  seqbuild/seqgen/rch_gen.py
114
117
  seqbuild/seqgen/sb_crypt.py
@@ -5,7 +5,7 @@ with open('README.md') as f:
5
5
 
6
6
  setup(
7
7
  name='seqbuild',
8
- version='0.0.52',
8
+ version='0.0.53',
9
9
  description='A collection of algorithms for pseudo-random number generation.',
10
10
  long_description=readme,
11
11
  author='Richard Pham',
File without changes
File without changes
File without changes