maxframe 0.1.0b5__cp311-cp311-macosx_11_0_arm64.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.

Potentially problematic release.


This version of maxframe might be problematic. Click here for more details.

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-311-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-311-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-311-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-311-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import AnyField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
23
+
24
+
25
+ class TensorNormal(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["loc", "scale"]
27
+ _op_type_ = opcodes.RAND_NORMAL
28
+
29
+ _fields_ = "loc", "scale", "size"
30
+ loc = AnyField("loc")
31
+ scale = AnyField("scale")
32
+ _func_name = "normal"
33
+
34
+ def __call__(self, loc, scale, chunk_size=None):
35
+ return self.new_tensor([loc, scale], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def normal(
39
+ random_state, loc=0.0, scale=1.0, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw random samples from a normal (Gaussian) distribution.
43
+
44
+ The probability density function of the normal distribution, first
45
+ derived by De Moivre and 200 years later by both Gauss and Laplace
46
+ independently [2]_, is often called the bell curve because of
47
+ its characteristic shape (see the example below).
48
+
49
+ The normal distributions occurs often in nature. For example, it
50
+ describes the commonly occurring distribution of samples influenced
51
+ by a large number of tiny, random disturbances, each with its own
52
+ unique distribution [2]_.
53
+
54
+ Parameters
55
+ ----------
56
+ loc : float or array_like of floats
57
+ Mean ("centre") of the distribution.
58
+ scale : float or array_like of floats
59
+ Standard deviation (spread or "width") of the distribution.
60
+ size : int or tuple of ints, optional
61
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
62
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
63
+ a single value is returned if ``loc`` and ``scale`` are both scalars.
64
+ Otherwise, ``mt.broadcast(loc, scale).size`` samples are drawn.
65
+ chunk_size : int or tuple of int or tuple of ints, optional
66
+ Desired chunk size on each dimension
67
+ gpu : bool, optional
68
+ Allocate the tensor on GPU if True, False as default
69
+ dtype : data-type, optional
70
+ Data-type of the returned tensor.
71
+
72
+ Returns
73
+ -------
74
+ out : Tensor or scalar
75
+ Drawn samples from the parameterized normal distribution.
76
+
77
+ See Also
78
+ --------
79
+ scipy.stats.norm : probability density function, distribution or
80
+ cumulative density function, etc.
81
+
82
+ Notes
83
+ -----
84
+ The probability density for the Gaussian distribution is
85
+
86
+ .. math:: p(x) = \frac{1}{\sqrt{ 2 \pi \sigma^2 }}
87
+ e^{ - \frac{ (x - \mu)^2 } {2 \sigma^2} },
88
+
89
+ where :math:`\mu` is the mean and :math:`\sigma` the standard
90
+ deviation. The square of the standard deviation, :math:`\sigma^2`,
91
+ is called the variance.
92
+
93
+ The function has its peak at the mean, and its "spread" increases with
94
+ the standard deviation (the function reaches 0.607 times its maximum at
95
+ :math:`x + \sigma` and :math:`x - \sigma` [2]_). This implies that
96
+ `numpy.random.normal` is more likely to return samples lying close to
97
+ the mean, rather than those far away.
98
+
99
+ References
100
+ ----------
101
+ .. [1] Wikipedia, "Normal distribution",
102
+ http://en.wikipedia.org/wiki/Normal_distribution
103
+ .. [2] P. R. Peebles Jr., "Central Limit Theorem" in "Probability,
104
+ Random Variables and Random Signal Principles", 4th ed., 2001,
105
+ pp. 51, 51, 125.
106
+
107
+ Examples
108
+ --------
109
+ Draw samples from the distribution:
110
+
111
+ >>> import maxframe.tensor as mt
112
+
113
+ >>> mu, sigma = 0, 0.1 # mean and standard deviation
114
+ >>> s = mt.random.normal(mu, sigma, 1000)
115
+
116
+ Verify the mean and the variance:
117
+
118
+ >>> (abs(mu - mt.mean(s)) < 0.01).execute()
119
+ True
120
+
121
+ >>> (abs(sigma - mt.std(s, ddof=1)) < 0.01).execute()
122
+ True
123
+
124
+ Display the histogram of the samples, along with
125
+ the probability density function:
126
+
127
+ >>> import matplotlib.pyplot as plt
128
+ >>> count, bins, ignored = plt.hist(s.execute(), 30, normed=True)
129
+ >>> plt.plot(bins, (1/(sigma * mt.sqrt(2 * mt.pi)) *
130
+ ... mt.exp( - (bins - mu)**2 / (2 * sigma**2) )).execute(),
131
+ ... linewidth=2, color='r')
132
+ >>> plt.show()
133
+ """
134
+ if dtype is None:
135
+ dtype = (
136
+ np.random.RandomState()
137
+ .normal(handle_array(loc), handle_array(scale), size=(0,))
138
+ .dtype
139
+ )
140
+ size = random_state._handle_size(size)
141
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
142
+ op = TensorNormal(size=size, seed=seed, gpu=gpu, dtype=dtype)
143
+ return op(loc, scale, chunk_size=chunk_size)
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import AnyField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
23
+
24
+
25
+ class TensorPareto(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["a"]
27
+ _op_type_ = opcodes.RAND_PARETO
28
+
29
+ _fields_ = "a", "size"
30
+ a = AnyField("a")
31
+ _func_name = "pareto"
32
+
33
+ def __call__(self, a, chunk_size=None):
34
+ return self.new_tensor([a], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def pareto(random_state, a, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ r"""
39
+ Draw samples from a Pareto II or Lomax distribution with
40
+ specified shape.
41
+
42
+ The Lomax or Pareto II distribution is a shifted Pareto
43
+ distribution. The classical Pareto distribution can be
44
+ obtained from the Lomax distribution by adding 1 and
45
+ multiplying by the scale parameter ``m`` (see Notes). The
46
+ smallest value of the Lomax distribution is zero while for the
47
+ classical Pareto distribution it is ``mu``, where the standard
48
+ Pareto distribution has location ``mu = 1``. Lomax can also
49
+ be considered as a simplified version of the Generalized
50
+ Pareto distribution (available in SciPy), with the scale set
51
+ to one and the location set to zero.
52
+
53
+ The Pareto distribution must be greater than zero, and is
54
+ unbounded above. It is also known as the "80-20 rule". In
55
+ this distribution, 80 percent of the weights are in the lowest
56
+ 20 percent of the range, while the other 20 percent fill the
57
+ remaining 80 percent of the range.
58
+
59
+ Parameters
60
+ ----------
61
+ a : float or array_like of floats
62
+ Shape of the distribution. Should be greater than zero.
63
+ size : int or tuple of ints, optional
64
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
65
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
66
+ a single value is returned if ``a`` is a scalar. Otherwise,
67
+ ``mt.array(a).size`` samples are drawn.
68
+ chunk_size : int or tuple of int or tuple of ints, optional
69
+ Desired chunk size on each dimension
70
+ gpu : bool, optional
71
+ Allocate the tensor on GPU if True, False as default
72
+ dtype : data-type, optional
73
+ Data-type of the returned tensor.
74
+
75
+ Returns
76
+ -------
77
+ out : Tensor or scalar
78
+ Drawn samples from the parameterized Pareto distribution.
79
+
80
+ See Also
81
+ --------
82
+ scipy.stats.lomax : probability density function, distribution or
83
+ cumulative density function, etc.
84
+ scipy.stats.genpareto : probability density function, distribution or
85
+ cumulative density function, etc.
86
+
87
+ Notes
88
+ -----
89
+ The probability density for the Pareto distribution is
90
+
91
+ .. math:: p(x) = \frac{am^a}{x^{a+1}}
92
+
93
+ where :math:`a` is the shape and :math:`m` the scale.
94
+
95
+ The Pareto distribution, named after the Italian economist
96
+ Vilfredo Pareto, is a power law probability distribution
97
+ useful in many real world problems. Outside the field of
98
+ economics it is generally referred to as the Bradford
99
+ distribution. Pareto developed the distribution to describe
100
+ the distribution of wealth in an economy. It has also found
101
+ use in insurance, web page access statistics, oil field sizes,
102
+ and many other problems, including the download frequency for
103
+ projects in Sourceforge [1]_. It is one of the so-called
104
+ "fat-tailed" distributions.
105
+
106
+
107
+ References
108
+ ----------
109
+ .. [1] Francis Hunt and Paul Johnson, On the Pareto Distribution of
110
+ Sourceforge projects.
111
+ .. [2] Pareto, V. (1896). Course of Political Economy. Lausanne.
112
+ .. [3] Reiss, R.D., Thomas, M.(2001), Statistical Analysis of Extreme
113
+ Values, Birkhauser Verlag, Basel, pp 23-30.
114
+ .. [4] Wikipedia, "Pareto distribution",
115
+ http://en.wikipedia.org/wiki/Pareto_distribution
116
+
117
+ Examples
118
+ --------
119
+ Draw samples from the distribution:
120
+
121
+ >>> import maxframe.tensor as mt
122
+
123
+ >>> a, m = 3., 2. # shape and mode
124
+ >>> s = (mt.random.pareto(a, 1000) + 1) * m
125
+
126
+ Display the histogram of the samples, along with the probability
127
+ density function:
128
+
129
+ >>> import matplotlib.pyplot as plt
130
+ >>> count, bins, _ = plt.hist(s.execute(), 100, normed=True)
131
+ >>> fit = a*m**a / bins**(a+1)
132
+ >>> plt.plot(bins, max(count)*fit/max(fit), linewidth=2, color='r')
133
+ >>> plt.show()
134
+ """
135
+ if dtype is None:
136
+ dtype = np.random.RandomState().pareto(handle_array(a), size=(0,)).dtype
137
+ size = random_state._handle_size(size)
138
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
139
+ op = TensorPareto(size=size, seed=seed, gpu=gpu, dtype=dtype)
140
+ return op(a, chunk_size=chunk_size)
@@ -0,0 +1,104 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from numbers import Integral
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import Int32Field, KeyField
21
+ from ..datasource import tensor as astensor
22
+ from ..operators import TensorOperatorMixin
23
+ from ..utils import gen_random_seeds, validate_axis
24
+ from .core import TensorRandomMapReduceOperator
25
+
26
+
27
+ def _permutation_on_axis(ar, axis, rs, xp):
28
+ try:
29
+ return rs.permutation(ar, axis=axis)
30
+ except TypeError:
31
+ # numpy starts to support axis from 1.18
32
+ if axis == 0:
33
+ return rs.permutation(ar)
34
+ indices = xp.arange(ar.shape[axis])
35
+ rs.shuffle(indices)
36
+ slc = (slice(None),) * axis + (indices,)
37
+ return ar[slc]
38
+
39
+
40
+ class TensorPermutation(TensorRandomMapReduceOperator, TensorOperatorMixin):
41
+ _op_type_ = opcodes.PERMUTATION
42
+
43
+ input = KeyField("input")
44
+ axis = Int32Field("axis")
45
+
46
+ reduce_size = Int32Field("reduce_size")
47
+
48
+ def _set_inputs(self, inputs):
49
+ super()._set_inputs(inputs)
50
+ self.input = self._inputs[0]
51
+
52
+ def __call__(self, x):
53
+ return self.new_tensor([x], x.shape, order=x.order)
54
+
55
+
56
+ def permutation(random_state, x, axis=0, chunk_size=None):
57
+ r"""
58
+ Randomly permute a sequence, or return a permuted range.
59
+
60
+ Parameters
61
+ ----------
62
+ x : int or array_like
63
+ If `x` is an integer, randomly permute ``mt.arange(x)``.
64
+ If `x` is an array, make a copy and shuffle the elements
65
+ randomly.
66
+ axis : int, optional
67
+ The axis which `x` is shuffled along. Default is 0.
68
+ chunk_size : : int or tuple of int or tuple of ints, optional
69
+ Desired chunk size on each dimension
70
+ Returns
71
+ -------
72
+ out : Tensor
73
+ Permuted sequence or tensor range.
74
+ Examples
75
+ --------
76
+ >>> import maxframe.tensor as mt
77
+ >>> rng = mt.random.RandomState()
78
+ >>> rng.permutation(10).execute()
79
+ array([1, 2, 3, 7, 9, 8, 0, 6, 4, 5]) # random
80
+ >>> rng.permutation([1, 4, 9, 12, 15]).execute()
81
+ array([ 9, 4, 12, 1, 15]) # random
82
+ >>> arr = mt.arange(9).reshape((3, 3))
83
+ >>> rng.permutation(arr).execute()
84
+ array([[3, 4, 5], # random
85
+ [6, 7, 8],
86
+ [0, 1, 2]])
87
+ >>> rng.permutation("abc")
88
+ Traceback (most recent call last):
89
+ ...
90
+ numpy.AxisError: x must be an integer or at least 1-dimensional
91
+ """
92
+ if isinstance(x, (Integral, np.integer)):
93
+ from ..datasource import arange
94
+
95
+ x = arange(x, chunk_size=chunk_size)
96
+ else:
97
+ x = astensor(x, chunk_size=chunk_size)
98
+ if x.ndim < 1:
99
+ raise np.AxisError("x must be an integer or at least 1-dimensional")
100
+
101
+ axis = validate_axis(x.ndim, axis)
102
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
103
+ op = TensorPermutation(seed=seed, axis=axis, dtype=x.dtype, gpu=x.op.gpu)
104
+ return op(x)
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import AnyField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
23
+
24
+
25
+ class TensorPoisson(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["lam"]
27
+ _op_type_ = opcodes.RAND_POSSION
28
+
29
+ _fields_ = "lam", "size"
30
+ lam = AnyField("lam")
31
+ _func_name = "poisson"
32
+
33
+ def __call__(self, lam, chunk_size=None):
34
+ return self.new_tensor([lam], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def poisson(random_state, lam=1.0, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ r"""
39
+ Draw samples from a Poisson distribution.
40
+
41
+ The Poisson distribution is the limit of the binomial distribution
42
+ for large N.
43
+
44
+ Parameters
45
+ ----------
46
+ lam : float or array_like of floats
47
+ Expectation of interval, should be >= 0. A sequence of expectation
48
+ intervals must be broadcastable over the requested size.
49
+ size : int or tuple of ints, optional
50
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
51
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
52
+ a single value is returned if ``lam`` is a scalar. Otherwise,
53
+ ``mt.array(lam).size`` samples are drawn.
54
+ chunk_size : int or tuple of int or tuple of ints, optional
55
+ Desired chunk size on each dimension
56
+ gpu : bool, optional
57
+ Allocate the tensor on GPU if True, False as default
58
+ dtype : data-type, optional
59
+ Data-type of the returned tensor.
60
+
61
+ Returns
62
+ -------
63
+ out : Tensor or scalar
64
+ Drawn samples from the parameterized Poisson distribution.
65
+
66
+ Notes
67
+ -----
68
+ The Poisson distribution
69
+
70
+ .. math:: f(k; \lambda)=\frac{\lambda^k e^{-\lambda}}{k!}
71
+
72
+ For events with an expected separation :math:`\lambda` the Poisson
73
+ distribution :math:`f(k; \lambda)` describes the probability of
74
+ :math:`k` events occurring within the observed
75
+ interval :math:`\lambda`.
76
+
77
+ Because the output is limited to the range of the C long type, a
78
+ ValueError is raised when `lam` is within 10 sigma of the maximum
79
+ representable value.
80
+
81
+ References
82
+ ----------
83
+ .. [1] Weisstein, Eric W. "Poisson Distribution."
84
+ From MathWorld--A Wolfram Web Resource.
85
+ http://mathworld.wolfram.com/PoissonDistribution.html
86
+ .. [2] Wikipedia, "Poisson distribution",
87
+ http://en.wikipedia.org/wiki/Poisson_distribution
88
+
89
+ Examples
90
+ --------
91
+ Draw samples from the distribution:
92
+
93
+ >>> import maxframe.tensor as mt
94
+ >>> s = mt.random.poisson(5, 10000)
95
+
96
+ Display histogram of the sample:
97
+
98
+ >>> import matplotlib.pyplot as plt
99
+ >>> count, bins, ignored = plt.hist(s.execute(), 14, normed=True)
100
+ >>> plt.show()
101
+
102
+ Draw each 100 values for lambda 100 and 500:
103
+
104
+ >>> s = mt.random.poisson(lam=(100., 500.), size=(100, 2))
105
+ """
106
+ if dtype is None:
107
+ dtype = np.random.RandomState().poisson(handle_array(lam), size=(0,)).dtype
108
+ size = random_state._handle_size(size)
109
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
110
+ op = TensorPoisson(size=size, seed=seed, gpu=gpu, dtype=dtype)
111
+ return op(lam, chunk_size=chunk_size)
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import AnyField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin, handle_array
23
+
24
+
25
+ class TensorRandomPower(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["a"]
27
+ _op_type_ = opcodes.RAND_POWER
28
+
29
+ _fields_ = "a", "size"
30
+ a = AnyField("a")
31
+ _func_name = "power"
32
+
33
+ def __call__(self, a, chunk_size=None):
34
+ return self.new_tensor([a], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def power(random_state, a, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ r"""
39
+ Draws samples in [0, 1] from a power distribution with positive
40
+ exponent a - 1.
41
+
42
+ Also known as the power function distribution.
43
+
44
+ Parameters
45
+ ----------
46
+ a : float or array_like of floats
47
+ Parameter of the distribution. Should be greater than zero.
48
+ size : int or tuple of ints, optional
49
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
50
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
51
+ a single value is returned if ``a`` is a scalar. Otherwise,
52
+ ``mt.array(a).size`` samples are drawn.
53
+ chunk_size : int or tuple of int or tuple of ints, optional
54
+ Desired chunk size on each dimension
55
+ gpu : bool, optional
56
+ Allocate the tensor on GPU if True, False as default
57
+ dtype : data-type, optional
58
+ Data-type of the returned tensor.
59
+
60
+ Returns
61
+ -------
62
+ out : Tensor or scalar
63
+ Drawn samples from the parameterized power distribution.
64
+
65
+ Raises
66
+ ------
67
+ ValueError
68
+ If a < 1.
69
+
70
+ Notes
71
+ -----
72
+ The probability density function is
73
+
74
+ .. math:: P(x; a) = ax^{a-1}, 0 \le x \le 1, a>0.
75
+
76
+ The power function distribution is just the inverse of the Pareto
77
+ distribution. It may also be seen as a special case of the Beta
78
+ distribution.
79
+
80
+ It is used, for example, in modeling the over-reporting of insurance
81
+ claims.
82
+
83
+ References
84
+ ----------
85
+ .. [1] Christian Kleiber, Samuel Kotz, "Statistical size distributions
86
+ in economics and actuarial sciences", Wiley, 2003.
87
+ .. [2] Heckert, N. A. and Filliben, James J. "NIST Handbook 148:
88
+ Dataplot Reference Manual, Volume 2: Let Subcommands and Library
89
+ Functions", National Institute of Standards and Technology
90
+ Handbook Series, June 2003.
91
+ http://www.itl.nist.gov/div898/software/dataplot/refman2/auxillar/powpdf.pdf
92
+
93
+ Examples
94
+ --------
95
+ Draw samples from the distribution:
96
+
97
+ >>> import maxframe.tensor as mt
98
+
99
+ >>> a = 5. # shape
100
+ >>> samples = 1000
101
+ >>> s = mt.random.power(a, samples)
102
+
103
+ Display the histogram of the samples, along with
104
+ the probability density function:
105
+
106
+ >>> import matplotlib.pyplot as plt
107
+ >>> count, bins, ignored = plt.hist(s.execute(), bins=30)
108
+ >>> x = mt.linspace(0, 1, 100)
109
+ >>> y = a*x**(a-1.)
110
+ >>> normed_y = samples*mt.diff(bins)[0]*y
111
+ >>> plt.plot(x.execute(), normed_y.execute())
112
+ >>> plt.show()
113
+
114
+ Compare the power function distribution to the inverse of the Pareto.
115
+
116
+ >>> from scipy import stats
117
+ >>> rvs = mt.random.power(5, 1000000)
118
+ >>> rvsp = mt.random.pareto(5, 1000000)
119
+ >>> xx = mt.linspace(0,1,100)
120
+ >>> powpdf = stats.powerlaw.pdf(xx.execute(),5)
121
+
122
+ >>> plt.figure()
123
+ >>> plt.hist(rvs.execute(), bins=50, normed=True)
124
+ >>> plt.plot(xx.execute(),powpdf,'r-')
125
+ >>> plt.title('np.random.power(5)')
126
+
127
+ >>> plt.figure()
128
+ >>> plt.hist((1./(1.+rvsp)).execute(), bins=50, normed=True)
129
+ >>> plt.plot(xx.execute(),powpdf,'r-')
130
+ >>> plt.title('inverse of 1 + np.random.pareto(5)')
131
+
132
+ >>> plt.figure()
133
+ >>> plt.hist((1./(1.+rvsp)).execute(), bins=50, normed=True)
134
+ >>> plt.plot(xx.execute(),powpdf,'r-')
135
+ >>> plt.title('inverse of stats.pareto(5)')
136
+ """
137
+ if dtype is None:
138
+ dtype = np.random.RandomState().power(handle_array(a), size=(0,)).dtype
139
+ size = random_state._handle_size(size)
140
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
141
+ op = TensorRandomPower(size=size, seed=seed, gpu=gpu, dtype=dtype)
142
+ return op(a, chunk_size=chunk_size)