maxframe 0.1.0b5__cp39-cp39-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-39-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-39-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-39-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-39-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,105 @@
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 ..utils import gen_random_seeds
21
+ from .core import TensorDistribution, TensorRandomOperatorMixin
22
+
23
+
24
+ class TensorStandardCauchy(TensorDistribution, TensorRandomOperatorMixin):
25
+ _op_type_ = opcodes.RAND_STANDARD_CAUCHY
26
+ _func_name = "standard_cauchy"
27
+ _fields_ = ("size",)
28
+
29
+ def __call__(self, chunk_size=None):
30
+ return self.new_tensor(None, None, raw_chunk_size=chunk_size)
31
+
32
+
33
+ def standard_cauchy(random_state, size=None, chunk_size=None, gpu=None, dtype=None):
34
+ r"""
35
+ Draw samples from a standard Cauchy distribution with mode = 0.
36
+
37
+ Also known as the Lorentz distribution.
38
+
39
+ Parameters
40
+ ----------
41
+ size : int or tuple of ints, optional
42
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
43
+ ``m * n * k`` samples are drawn. Default is None, in which case a
44
+ single value is returned.
45
+ chunk_size : int or tuple of int or tuple of ints, optional
46
+ Desired chunk size on each dimension
47
+ gpu : bool, optional
48
+ Allocate the tensor on GPU if True, False as default
49
+ dtype : data-type, optional
50
+ Data-type of the returned tensor.
51
+
52
+ Returns
53
+ -------
54
+ samples : Tensor or scalar
55
+ The drawn samples.
56
+
57
+ Notes
58
+ -----
59
+ The probability density function for the full Cauchy distribution is
60
+
61
+ .. math:: P(x; x_0, \gamma) = \frac{1}{\pi \gamma \bigl[ 1+
62
+ (\frac{x-x_0}{\gamma})^2 \bigr] }
63
+
64
+ and the Standard Cauchy distribution just sets :math:`x_0=0` and
65
+ :math:`\gamma=1`
66
+
67
+ The Cauchy distribution arises in the solution to the driven harmonic
68
+ oscillator problem, and also describes spectral line broadening. It
69
+ also describes the distribution of values at which a line tilted at
70
+ a random angle will cut the x axis.
71
+
72
+ When studying hypothesis tests that assume normality, seeing how the
73
+ tests perform on data from a Cauchy distribution is a good indicator of
74
+ their sensitivity to a heavy-tailed distribution, since the Cauchy looks
75
+ very much like a Gaussian distribution, but with heavier tails.
76
+
77
+ References
78
+ ----------
79
+ .. [1] NIST/SEMATECH e-Handbook of Statistical Methods, "Cauchy
80
+ Distribution",
81
+ http://www.itl.nist.gov/div898/handbook/eda/section3/eda3663.htm
82
+ .. [2] Weisstein, Eric W. "Cauchy Distribution." From MathWorld--A
83
+ Wolfram Web Resource.
84
+ http://mathworld.wolfram.com/CauchyDistribution.html
85
+ .. [3] Wikipedia, "Cauchy distribution"
86
+ http://en.wikipedia.org/wiki/Cauchy_distribution
87
+
88
+ Examples
89
+ --------
90
+ Draw samples and plot the distribution:
91
+
92
+ >>> import maxframe.tensor as mt
93
+ >>> import matplotlib.pyplot as plt
94
+
95
+ >>> s = mt.random.standard_cauchy(1000000)
96
+ >>> s = s[(s>-25) & (s<25)] # truncate distribution so it plots well
97
+ >>> plt.hist(s.execute(), bins=100)
98
+ >>> plt.show()
99
+ """
100
+ if dtype is None:
101
+ dtype = np.random.RandomState().standard_cauchy(size=(0,)).dtype
102
+ size = random_state._handle_size(size)
103
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
104
+ op = TensorStandardCauchy(size=size, seed=seed, gpu=gpu, dtype=dtype)
105
+ return op(chunk_size=chunk_size)
@@ -0,0 +1,72 @@
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 ..utils import gen_random_seeds
21
+ from .core import TensorDistribution, TensorRandomOperatorMixin
22
+
23
+
24
+ class TensorStandardExponential(TensorDistribution, TensorRandomOperatorMixin):
25
+ _op_type_ = opcodes.RAND_STANDARD_EXPONENTIAL
26
+ _func_name = "standard_exponential"
27
+ _fields_ = ("size",)
28
+
29
+ def __call__(self, chunk_size=None):
30
+ return self.new_tensor(None, None, raw_chunk_size=chunk_size)
31
+
32
+
33
+ def standard_exponential(
34
+ random_state, size=None, chunk_size=None, gpu=None, dtype=None
35
+ ):
36
+ """
37
+ Draw samples from the standard exponential distribution.
38
+
39
+ `standard_exponential` is identical to the exponential distribution
40
+ with a scale parameter of 1.
41
+
42
+ Parameters
43
+ ----------
44
+ size : int or tuple of ints, optional
45
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
46
+ ``m * n * k`` samples are drawn. Default is None, in which case a
47
+ single value is returned.
48
+ chunk_size : int or tuple of int or tuple of ints, optional
49
+ Desired chunk size on each dimension
50
+ gpu : bool, optional
51
+ Allocate the tensor on GPU if True, False as default
52
+ dtype : data-type, optional
53
+ Data-type of the returned tensor.
54
+
55
+ Returns
56
+ -------
57
+ out : float or Tensor
58
+ Drawn samples.
59
+
60
+ Examples
61
+ --------
62
+ Output a 3x8000 tensor:
63
+
64
+ >>> import maxframe.tensor as mt
65
+ >>> n = mt.random.standard_exponential((3, 8000))
66
+ """
67
+ if dtype is None:
68
+ dtype = np.random.RandomState().standard_exponential(size=(0,)).dtype
69
+ size = random_state._handle_size(size)
70
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
71
+ op = TensorStandardExponential(size=size, seed=seed, gpu=gpu, dtype=dtype)
72
+ return op(chunk_size=chunk_size)
@@ -0,0 +1,120 @@
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 TensorStandardGamma(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["shape"]
27
+ _op_type_ = opcodes.RAND_STANDARD_GAMMMA
28
+
29
+ _fields_ = "shape", "size"
30
+ shape = AnyField("shape")
31
+ _func_name = "standard_gamma"
32
+
33
+ def __call__(self, shape, chunk_size=None):
34
+ return self.new_tensor([shape], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def standard_gamma(
38
+ random_state, shape, size=None, chunk_size=None, gpu=None, dtype=None
39
+ ):
40
+ r"""
41
+ Draw samples from a standard Gamma distribution.
42
+
43
+ Samples are drawn from a Gamma distribution with specified parameters,
44
+ shape (sometimes designated "k") and scale=1.
45
+
46
+ Parameters
47
+ ----------
48
+ shape : float or array_like of floats
49
+ Parameter, should be > 0.
50
+ size : int or tuple of ints, optional
51
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
52
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
53
+ a single value is returned if ``shape`` is a scalar. Otherwise,
54
+ ``mt.array(shape).size`` samples are drawn.
55
+ chunk_size : int or tuple of int or tuple of ints, optional
56
+ Desired chunk size on each dimension
57
+ gpu : bool, optional
58
+ Allocate the tensor on GPU if True, False as default
59
+ dtype : data-type, optional
60
+ Data-type of the returned tensor.
61
+
62
+ Returns
63
+ -------
64
+ out : Tensor or scalar
65
+ Drawn samples from the parameterized standard gamma distribution.
66
+
67
+ See Also
68
+ --------
69
+ scipy.stats.gamma : probability density function, distribution or
70
+ cumulative density function, etc.
71
+
72
+ Notes
73
+ -----
74
+ The probability density for the Gamma distribution is
75
+
76
+ .. math:: p(x) = x^{k-1}\frac{e^{-x/\theta}}{\theta^k\Gamma(k)},
77
+
78
+ where :math:`k` is the shape and :math:`\theta` the scale,
79
+ and :math:`\Gamma` is the Gamma function.
80
+
81
+ The Gamma distribution is often used to model the times to failure of
82
+ electronic components, and arises naturally in processes for which the
83
+ waiting times between Poisson distributed events are relevant.
84
+
85
+ References
86
+ ----------
87
+ .. [1] Weisstein, Eric W. "Gamma Distribution." From MathWorld--A
88
+ Wolfram Web Resource.
89
+ http://mathworld.wolfram.com/GammaDistribution.html
90
+ .. [2] Wikipedia, "Gamma distribution",
91
+ http://en.wikipedia.org/wiki/Gamma_distribution
92
+
93
+ Examples
94
+ --------
95
+ Draw samples from the distribution:
96
+
97
+ >>> import maxframe.tensor as mt
98
+
99
+ >>> shape, scale = 2., 1. # mean and width
100
+ >>> s = mt.random.standard_gamma(shape, 1000000)
101
+
102
+ Display the histogram of the samples, along with
103
+ the probability density function:
104
+
105
+ >>> import matplotlib.pyplot as plt
106
+ >>> import scipy.special as sps
107
+ >>> count, bins, ignored = plt.hist(s.execute(), 50, normed=True)
108
+ >>> y = bins**(shape-1) * ((mt.exp(-bins/scale))/ \
109
+ ... (sps.gamma(shape) * scale**shape))
110
+ >>> plt.plot(bins, y.execute(), linewidth=2, color='r')
111
+ >>> plt.show()
112
+ """
113
+ if dtype is None:
114
+ dtype = (
115
+ np.random.RandomState().standard_gamma(handle_array(shape), size=(0,)).dtype
116
+ )
117
+ size = random_state._handle_size(size)
118
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
119
+ op = TensorStandardGamma(size=size, seed=seed, gpu=gpu, dtype=dtype)
120
+ return op(shape, chunk_size=chunk_size)
@@ -0,0 +1,74 @@
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 ..utils import gen_random_seeds
21
+ from .core import TensorDistribution, TensorRandomOperatorMixin
22
+
23
+
24
+ class TensorStandardNormal(TensorDistribution, TensorRandomOperatorMixin):
25
+ _op_type_ = opcodes.RAND_STANDARD_NORMAL
26
+ _func_name = "standard_normal"
27
+ _fields_ = ("size",)
28
+
29
+ def __call__(self, chunk_size=None):
30
+ return self.new_tensor(None, None, raw_chunk_size=chunk_size)
31
+
32
+
33
+ def standard_normal(random_state, size=None, chunk_size=None, gpu=None, dtype=None):
34
+ """
35
+ Draw samples from a standard Normal distribution (mean=0, stdev=1).
36
+
37
+ Parameters
38
+ ----------
39
+ size : int or tuple of ints, optional
40
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
41
+ ``m * n * k`` samples are drawn. Default is None, in which case a
42
+ single value is returned.
43
+ chunk_size : int or tuple of int or tuple of ints, optional
44
+ Desired chunk size on each dimension
45
+ gpu : bool, optional
46
+ Allocate the tensor on GPU if True, False as default
47
+ dtype : data-type, optional
48
+ Data-type of the returned tensor.
49
+
50
+ Returns
51
+ -------
52
+ out : float or Tensor
53
+ Drawn samples.
54
+
55
+ Examples
56
+ --------
57
+ >>> import maxframe.tensor as mt
58
+
59
+ >>> s = mt.random.standard_normal(8000)
60
+ >>> s.execute()
61
+ array([ 0.6888893 , 0.78096262, -0.89086505, ..., 0.49876311, #random
62
+ -0.38672696, -0.4685006 ]) #random
63
+ >>> s.shape
64
+ (8000,)
65
+ >>> s = mt.random.standard_normal(size=(3, 4, 2))
66
+ >>> s.shape
67
+ (3, 4, 2)
68
+ """
69
+ if dtype is None:
70
+ dtype = np.random.RandomState().standard_normal(size=(0,)).dtype
71
+ size = random_state._handle_size(size)
72
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
73
+ op = TensorStandardNormal(size=size, seed=seed, gpu=gpu, dtype=dtype)
74
+ return op(chunk_size=chunk_size)
@@ -0,0 +1,135 @@
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 TensorStandardT(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["df"]
27
+ _op_type_ = opcodes.RAND_STANDARD_T
28
+
29
+ _fields_ = "df", "size"
30
+ df = AnyField("df")
31
+ _func_name = "standard_t"
32
+
33
+ def __call__(self, df, chunk_size=None):
34
+ return self.new_tensor([df], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def standard_t(random_state, df, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ r"""
39
+ Draw samples from a standard Student's t distribution with `df` degrees
40
+ of freedom.
41
+
42
+ A special case of the hyperbolic distribution. As `df` gets
43
+ large, the result resembles that of the standard normal
44
+ distribution (`standard_normal`).
45
+
46
+ Parameters
47
+ ----------
48
+ df : float or array_like of floats
49
+ Degrees of freedom, should be > 0.
50
+ size : int or tuple of ints, optional
51
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
52
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
53
+ a single value is returned if ``df`` is a scalar. Otherwise,
54
+ ``mt.array(df).size`` samples are drawn.
55
+ chunk_size : int or tuple of int or tuple of ints, optional
56
+ Desired chunk size on each dimension
57
+ gpu : bool, optional
58
+ Allocate the tensor on GPU if True, False as default
59
+ dtype : data-type, optional
60
+ Data-type of the returned tensor.
61
+
62
+ Returns
63
+ -------
64
+ out : Tensor or scalar
65
+ Drawn samples from the parameterized standard Student's t distribution.
66
+
67
+ Notes
68
+ -----
69
+ The probability density function for the t distribution is
70
+
71
+ .. math:: P(x, df) = \frac{\Gamma(\frac{df+1}{2})}{\sqrt{\pi df}
72
+ \Gamma(\frac{df}{2})}\Bigl( 1+\frac{x^2}{df} \Bigr)^{-(df+1)/2}
73
+
74
+ The t test is based on an assumption that the data come from a
75
+ Normal distribution. The t test provides a way to test whether
76
+ the sample mean (that is the mean calculated from the data) is
77
+ a good estimate of the true mean.
78
+
79
+ The derivation of the t-distribution was first published in
80
+ 1908 by William Gosset while working for the Guinness Brewery
81
+ in Dublin. Due to proprietary issues, he had to publish under
82
+ a pseudonym, and so he used the name Student.
83
+
84
+ References
85
+ ----------
86
+ .. [1] Dalgaard, Peter, "Introductory Statistics With R",
87
+ Springer, 2002.
88
+ .. [2] Wikipedia, "Student's t-distribution"
89
+ http://en.wikipedia.org/wiki/Student's_t-distribution
90
+
91
+ Examples
92
+ --------
93
+ From Dalgaard page 83 [1]_, suppose the daily energy intake for 11
94
+ women in Kj is:
95
+
96
+ >>> import maxframe.tensor as mt
97
+
98
+ >>> intake = mt.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \
99
+ ... 7515, 8230, 8770])
100
+
101
+ Does their energy intake deviate systematically from the recommended
102
+ value of 7725 kJ?
103
+
104
+ We have 10 degrees of freedom, so is the sample mean within 95% of the
105
+ recommended value?
106
+
107
+ >>> s = mt.random.standard_t(10, size=100000)
108
+ >>> mt.mean(intake).execute()
109
+ 6753.636363636364
110
+ >>> intake.std(ddof=1).execute()
111
+ 1142.1232221373727
112
+
113
+ Calculate the t statistic, setting the ddof parameter to the unbiased
114
+ value so the divisor in the standard deviation will be degrees of
115
+ freedom, N-1.
116
+
117
+ >>> t = (mt.mean(intake)-7725)/(intake.std(ddof=1)/mt.sqrt(len(intake)))
118
+ >>> import matplotlib.pyplot as plt
119
+ >>> h = plt.hist(s.execute(), bins=100, normed=True)
120
+
121
+ For a one-sided t-test, how far out in the distribution does the t
122
+ statistic appear?
123
+
124
+ >>> (mt.sum(s<t) / float(len(s))).execute()
125
+ 0.0090699999999999999 #random
126
+
127
+ So the p-value is about 0.009, which says the null hypothesis has a
128
+ probability of about 99% of being true.
129
+ """
130
+ if dtype is None:
131
+ dtype = np.random.RandomState().standard_t(handle_array(df), size=(0,)).dtype
132
+ size = random_state._handle_size(size)
133
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
134
+ op = TensorStandardT(size=size, seed=seed, gpu=gpu, dtype=dtype)
135
+ return op(df, chunk_size=chunk_size)
@@ -0,0 +1,15 @@
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.
@@ -0,0 +1,167 @@
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
+ import pytest
19
+
20
+ from ....serialization import deserialize, serialize
21
+ from ....serialization.serializables import Serializable
22
+ from ...datasource import tensor as from_ndarray
23
+ from .. import (
24
+ RandomState,
25
+ TensorPermutation,
26
+ beta,
27
+ choice,
28
+ multivariate_normal,
29
+ permutation,
30
+ rand,
31
+ randint,
32
+ randn,
33
+ shuffle,
34
+ )
35
+ from ..core import RandomStateField
36
+
37
+
38
+ class ObjWithRandomStateField(Serializable):
39
+ random_state = RandomStateField("random_state")
40
+
41
+
42
+ @pytest.mark.parametrize("rs", [None, np.random.RandomState()])
43
+ def test_serial_random_state_field(rs):
44
+ res = deserialize(*serialize(ObjWithRandomStateField(rs)))
45
+ if rs is None:
46
+ assert res.random_state is None
47
+ else:
48
+ original_state = rs.get_state()
49
+ new_state = res.random_state.get_state()
50
+ assert original_state[0] == new_state[0]
51
+ np.testing.assert_array_equal(original_state[1], new_state[1])
52
+
53
+
54
+ def test_random():
55
+ arr = rand(2, 3)
56
+
57
+ assert arr.dtype is not None
58
+
59
+ arr = beta(1, 2, chunk_size=2)
60
+ assert arr.shape == ()
61
+
62
+ arr = beta([1, 2], [3, 4], chunk_size=2)
63
+ assert arr.shape == (2,)
64
+
65
+ arr = beta(
66
+ [[2, 3]],
67
+ from_ndarray([[4, 6], [5, 2]], chunk_size=2),
68
+ chunk_size=1,
69
+ size=(3, 2, 2),
70
+ )
71
+ assert arr.shape == (3, 2, 2)
72
+
73
+
74
+ def test_same_key():
75
+ assert RandomState(0).rand(10).key == RandomState(0).rand(10).key
76
+
77
+
78
+ def test_choice():
79
+ t = choice(5, chunk_size=1)
80
+ assert t.shape == ()
81
+
82
+ t = choice(5, 3, chunk_size=1)
83
+ assert t.shape == (3,)
84
+
85
+ t = choice(5, 3, replace=False)
86
+ assert t.shape == (3,)
87
+
88
+ with pytest.raises(ValueError):
89
+ choice(-1)
90
+
91
+ # a should be 1-d
92
+ with pytest.raises(ValueError):
93
+ choice(np.random.rand(2, 2))
94
+
95
+ # p sum != 1
96
+ with pytest.raises(ValueError):
97
+ choice(np.random.rand(3), p=[0.2, 0.2, 0.2])
98
+
99
+ # p should b 1-d
100
+ with pytest.raises(ValueError):
101
+ choice(np.random.rand(3), p=[[0.2, 0.6, 0.2]])
102
+
103
+ # replace=False, choice size cannot be greater than a.size
104
+ with pytest.raises(ValueError):
105
+ choice(np.random.rand(10), 11, replace=False)
106
+
107
+ # replace=False, choice size cannot be greater than a.size
108
+ with pytest.raises(ValueError):
109
+ choice(np.random.rand(10), (3, 4), replace=False)
110
+
111
+
112
+ def test_multivariate_normal():
113
+ mean = [0, 0]
114
+ cov = [[1, 0], [0, 100]]
115
+
116
+ t = multivariate_normal(mean, cov, 5000, chunk_size=500)
117
+ assert t.shape == (5000, 2)
118
+ assert t.op.size == (5000,)
119
+
120
+
121
+ def test_randint():
122
+ arr = randint(1, 2, size=(10, 9), dtype="f8", density=0.01, chunk_size=2)
123
+ assert arr.shape == (10, 9)
124
+
125
+
126
+ def test_unexpected_key():
127
+ with pytest.raises(ValueError):
128
+ rand(10, 10, chunks=5)
129
+
130
+ with pytest.raises(ValueError):
131
+ randn(10, 10, chunks=5)
132
+
133
+
134
+ def test_permutation():
135
+ x = permutation(10)
136
+
137
+ assert x.shape == (10,)
138
+ assert isinstance(x.op, TensorPermutation)
139
+
140
+ arr = from_ndarray([1, 4, 9, 12, 15], chunk_size=2)
141
+ x = permutation(arr)
142
+
143
+ assert x.shape == (5,)
144
+ assert isinstance(x.op, TensorPermutation)
145
+
146
+ arr = rand(3, 3, chunk_size=2)
147
+ x = permutation(arr)
148
+
149
+ assert x.shape == (3, 3)
150
+ assert isinstance(x.op, TensorPermutation)
151
+
152
+ with pytest.raises(np.AxisError):
153
+ pytest.raises(permutation("abc"))
154
+
155
+
156
+ def test_shuffle():
157
+ with pytest.raises(TypeError):
158
+ shuffle("abc")
159
+
160
+ x = rand(10, 10, chunk_size=2)
161
+ shuffle(x)
162
+ assert isinstance(x.op, TensorPermutation)
163
+
164
+ x = rand(10, 10, chunk_size=2)
165
+ shuffle(x, axis=1)
166
+ assert isinstance(x.op, TensorPermutation)
167
+ assert x.op.axis == 1