maxframe 0.1.0b5__cp310-cp310-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-310-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-310-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-310-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-310-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,133 @@
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 TensorLaplace(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["loc", "scale"]
27
+ _op_type_ = opcodes.RAND_LAPLACE
28
+
29
+ _fields_ = "loc", "scale", "size"
30
+ loc = AnyField("loc")
31
+ scale = AnyField("scale")
32
+ _func_name = "laplace"
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 laplace(
39
+ random_state, loc=0.0, scale=1.0, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from the Laplace or double exponential distribution with
43
+ specified location (or mean) and scale (decay).
44
+
45
+ The Laplace distribution is similar to the Gaussian/normal distribution,
46
+ but is sharper at the peak and has fatter tails. It represents the
47
+ difference between two independent, identically distributed exponential
48
+ random variables.
49
+
50
+ Parameters
51
+ ----------
52
+ loc : float or array_like of floats, optional
53
+ The position, :math:`\mu`, of the distribution peak. Default is 0.
54
+ scale : float or array_like of floats, optional
55
+ :math:`\lambda`, the exponential decay. Default is 1.
56
+ size : int or tuple of ints, optional
57
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
58
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
59
+ a single value is returned if ``loc`` and ``scale`` are both scalars.
60
+ Otherwise, ``np.broadcast(loc, scale).size`` samples are drawn.
61
+ chunks : int or tuple of int or tuple of ints, optional
62
+ Desired chunk size on each dimension
63
+ gpu : bool, optional
64
+ Allocate the tensor on GPU if True, False as default
65
+ dtype : data-type, optional
66
+ Data-type of the returned tensor.
67
+
68
+ Returns
69
+ -------
70
+ out : Tensor or scalar
71
+ Drawn samples from the parameterized Laplace distribution.
72
+
73
+ Notes
74
+ -----
75
+ It has the probability density function
76
+
77
+ .. math:: f(x; \mu, \lambda) = \frac{1}{2\lambda}
78
+ \exp\left(-\frac{|x - \mu|}{\lambda}\right).
79
+
80
+ The first law of Laplace, from 1774, states that the frequency
81
+ of an error can be expressed as an exponential function of the
82
+ absolute magnitude of the error, which leads to the Laplace
83
+ distribution. For many problems in economics and health
84
+ sciences, this distribution seems to model the data better
85
+ than the standard Gaussian distribution.
86
+
87
+ References
88
+ ----------
89
+ .. [1] Abramowitz, M. and Stegun, I. A. (Eds.). "Handbook of
90
+ Mathematical Functions with Formulas, Graphs, and Mathematical
91
+ Tables, 9th printing," New York: Dover, 1972.
92
+ .. [2] Kotz, Samuel, et. al. "The Laplace Distribution and
93
+ Generalizations, " Birkhauser, 2001.
94
+ .. [3] Weisstein, Eric W. "Laplace Distribution."
95
+ From MathWorld--A Wolfram Web Resource.
96
+ http://mathworld.wolfram.com/LaplaceDistribution.html
97
+ .. [4] Wikipedia, "Laplace distribution",
98
+ http://en.wikipedia.org/wiki/Laplace_distribution
99
+
100
+ Examples
101
+ --------
102
+ Draw samples from the distribution
103
+
104
+ >>> import maxframe.tensor as mt
105
+
106
+ >>> loc, scale = 0., 1.
107
+ >>> s = mt.random.laplace(loc, scale, 1000)
108
+
109
+ Display the histogram of the samples, along with
110
+ the probability density function:
111
+
112
+ >>> import matplotlib.pyplot as plt
113
+ >>> count, bins, ignored = plt.hist(s.execute(), 30, normed=True)
114
+ >>> x = mt.arange(-8., 8., .01)
115
+ >>> pdf = mt.exp(-abs(x-loc)/scale)/(2.*scale)
116
+ >>> plt.plot(x.execute(), pdf.execute())
117
+
118
+ Plot Gaussian for comparison:
119
+
120
+ >>> g = (1/(scale * mt.sqrt(2 * np.pi)) *
121
+ ... mt.exp(-(x - loc)**2 / (2 * scale**2)))
122
+ >>> plt.plot(x.execute(),g.execute())
123
+ """
124
+ if dtype is None:
125
+ dtype = (
126
+ np.random.RandomState()
127
+ .laplace(handle_array(loc), handle_array(scale), size=(0,))
128
+ .dtype
129
+ )
130
+ size = random_state._handle_size(size)
131
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
132
+ op = TensorLaplace(seed=seed, size=size, gpu=gpu, dtype=dtype)
133
+ return op(loc, scale, chunk_size=chunk_size)
@@ -0,0 +1,129 @@
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 TensorLogistic(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["loc", "scale"]
27
+ _op_type_ = opcodes.RAND_LOGISTIC
28
+
29
+ _fields_ = "loc", "scale", "size"
30
+ loc = AnyField("loc")
31
+ scale = AnyField("scale")
32
+ _func_name = "logistic"
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 logistic(
39
+ random_state, loc=0.0, scale=1.0, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from a logistic distribution.
43
+
44
+ Samples are drawn from a logistic distribution with specified
45
+ parameters, loc (location or mean, also median), and scale (>0).
46
+
47
+ Parameters
48
+ ----------
49
+ loc : float or array_like of floats, optional
50
+ Parameter of the distribution. Default is 0.
51
+ scale : float or array_like of floats, optional
52
+ Parameter of the distribution. Should be greater than zero.
53
+ Default is 1.
54
+ size : int or tuple of ints, optional
55
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
56
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
57
+ a single value is returned if ``loc`` and ``scale`` are both scalars.
58
+ Otherwise, ``np.broadcast(loc, scale).size`` samples are drawn.
59
+ chunk_size : int or tuple of int or tuple of ints, optional
60
+ Desired chunk size on each dimension
61
+ gpu : bool, optional
62
+ Allocate the tensor on GPU if True, False as default
63
+ dtype : data-type, optional
64
+ Data-type of the returned tensor.
65
+
66
+ Returns
67
+ -------
68
+ out : Tensor or scalar
69
+ Drawn samples from the parameterized logistic distribution.
70
+
71
+ See Also
72
+ --------
73
+ scipy.stats.logistic : probability density function, distribution or
74
+ cumulative density function, etc.
75
+
76
+ Notes
77
+ -----
78
+ The probability density for the Logistic distribution is
79
+
80
+ .. math:: P(x) = P(x) = \frac{e^{-(x-\mu)/s}}{s(1+e^{-(x-\mu)/s})^2},
81
+
82
+ where :math:`\mu` = location and :math:`s` = scale.
83
+
84
+ The Logistic distribution is used in Extreme Value problems where it
85
+ can act as a mixture of Gumbel distributions, in Epidemiology, and by
86
+ the World Chess Federation (FIDE) where it is used in the Elo ranking
87
+ system, assuming the performance of each player is a logistically
88
+ distributed random variable.
89
+
90
+ References
91
+ ----------
92
+ .. [1] Reiss, R.-D. and Thomas M. (2001), "Statistical Analysis of
93
+ Extreme Values, from Insurance, Finance, Hydrology and Other
94
+ Fields," Birkhauser Verlag, Basel, pp 132-133.
95
+ .. [2] Weisstein, Eric W. "Logistic Distribution." From
96
+ MathWorld--A Wolfram Web Resource.
97
+ http://mathworld.wolfram.com/LogisticDistribution.html
98
+ .. [3] Wikipedia, "Logistic-distribution",
99
+ http://en.wikipedia.org/wiki/Logistic_distribution
100
+
101
+ Examples
102
+ --------
103
+ Draw samples from the distribution:
104
+
105
+ >>> import maxframe.tensor as mt
106
+ >>> import matplotlib.pyplot as plt
107
+
108
+ >>> loc, scale = 10, 1
109
+ >>> s = mt.random.logistic(loc, scale, 10000)
110
+ >>> count, bins, ignored = plt.hist(s.execute(), bins=50)
111
+
112
+ # plot against distribution
113
+
114
+ >>> def logist(x, loc, scale):
115
+ ... return mt.exp((loc-x)/scale)/(scale*(1+mt.exp((loc-x)/scale))**2)
116
+ >>> plt.plot(bins, logist(bins, loc, scale).execute()*count.max()/\
117
+ ... logist(bins, loc, scale).max().execute())
118
+ >>> plt.show()
119
+ """
120
+ if dtype is None:
121
+ dtype = (
122
+ np.random.RandomState()
123
+ .logistic(handle_array(loc), handle_array(scale), size=(0,))
124
+ .dtype
125
+ )
126
+ size = random_state._handle_size(size)
127
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
128
+ op = TensorLogistic(seed=seed, size=size, gpu=gpu, dtype=dtype)
129
+ return op(loc, scale, chunk_size=chunk_size)
@@ -0,0 +1,159 @@
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 TensorLognormal(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["mean", "sigma"]
27
+ _op_type_ = opcodes.RAND_LOGNORMAL
28
+
29
+ _fields_ = "mean", "sigma", "size"
30
+ mean = AnyField("mean")
31
+ sigma = AnyField("sigma")
32
+ _func_name = "lognormal"
33
+
34
+ def __call__(self, mean, sigma, chunk_size=None):
35
+ return self.new_tensor([mean, sigma], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def lognormal(
39
+ random_state, mean=0.0, sigma=1.0, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from a log-normal distribution.
43
+
44
+ Draw samples from a log-normal distribution with specified mean,
45
+ standard deviation, and array shape. Note that the mean and standard
46
+ deviation are not the values for the distribution itself, but of the
47
+ underlying normal distribution it is derived from.
48
+
49
+ Parameters
50
+ ----------
51
+ mean : float or array_like of floats, optional
52
+ Mean value of the underlying normal distribution. Default is 0.
53
+ sigma : float or array_like of floats, optional
54
+ Standard deviation of the underlying normal distribution. Should
55
+ be greater than zero. Default is 1.
56
+ size : int or tuple of ints, optional
57
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
58
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
59
+ a single value is returned if ``mean`` and ``sigma`` are both scalars.
60
+ Otherwise, ``np.broadcast(mean, sigma).size`` samples are drawn.
61
+ chunk_size : int or tuple of int or tuple of ints, optional
62
+ Desired chunk size on each dimension
63
+ gpu : bool, optional
64
+ Allocate the tensor on GPU if True, False as default
65
+ dtype : data-type, optional
66
+ Data-type of the returned tensor.
67
+
68
+ Returns
69
+ -------
70
+ out : Tensor or scalar
71
+ Drawn samples from the parameterized log-normal distribution.
72
+
73
+ See Also
74
+ --------
75
+ scipy.stats.lognorm : probability density function, distribution,
76
+ cumulative density function, etc.
77
+
78
+ Notes
79
+ -----
80
+ A variable `x` has a log-normal distribution if `log(x)` is normally
81
+ distributed. The probability density function for the log-normal
82
+ distribution is:
83
+
84
+ .. math:: p(x) = \frac{1}{\sigma x \sqrt{2\pi}}
85
+ e^{(-\frac{(ln(x)-\mu)^2}{2\sigma^2})}
86
+
87
+ where :math:`\mu` is the mean and :math:`\sigma` is the standard
88
+ deviation of the normally distributed logarithm of the variable.
89
+ A log-normal distribution results if a random variable is the *product*
90
+ of a large number of independent, identically-distributed variables in
91
+ the same way that a normal distribution results if the variable is the
92
+ *sum* of a large number of independent, identically-distributed
93
+ variables.
94
+
95
+ References
96
+ ----------
97
+ .. [1] Limpert, E., Stahel, W. A., and Abbt, M., "Log-normal
98
+ Distributions across the Sciences: Keys and Clues,"
99
+ BioScience, Vol. 51, No. 5, May, 2001.
100
+ http://stat.ethz.ch/~stahel/lognormal/bioscience.pdf
101
+ .. [2] Reiss, R.D. and Thomas, M., "Statistical Analysis of Extreme
102
+ Values," Basel: Birkhauser Verlag, 2001, pp. 31-32.
103
+
104
+ Examples
105
+ --------
106
+ Draw samples from the distribution:
107
+
108
+ >>> import maxframe.tensor as mt
109
+
110
+ >>> mu, sigma = 3., 1. # mean and standard deviation
111
+ >>> s = mt.random.lognormal(mu, sigma, 1000)
112
+
113
+ Display the histogram of the samples, along with
114
+ the probability density function:
115
+
116
+ >>> import matplotlib.pyplot as plt
117
+ >>> count, bins, ignored = plt.hist(s.execute(), 100, normed=True, align='mid')
118
+
119
+ >>> x = mt.linspace(min(bins), max(bins), 10000)
120
+ >>> pdf = (mt.exp(-(mt.log(x) - mu)**2 / (2 * sigma**2))
121
+ ... / (x * sigma * mt.sqrt(2 * mt.pi)))
122
+
123
+ >>> plt.plot(x.execute(), pdf.execute(), linewidth=2, color='r')
124
+ >>> plt.axis('tight')
125
+ >>> plt.show()
126
+
127
+ Demonstrate that taking the products of random samples from a uniform
128
+ distribution can be fit well by a log-normal probability density
129
+ function.
130
+
131
+ >>> # Generate a thousand samples: each is the product of 100 random
132
+ >>> # values, drawn from a normal distribution.
133
+ >>> b = []
134
+ >>> for i in range(1000):
135
+ ... a = 10. + mt.random.random(100)
136
+ ... b.append(mt.product(a).execute())
137
+
138
+ >>> b = mt.array(b) / mt.min(b) # scale values to be positive
139
+ >>> count, bins, ignored = plt.hist(b.execute(), 100, normed=True, align='mid')
140
+ >>> sigma = mt.std(mt.log(b))
141
+ >>> mu = mt.mean(mt.log(b))
142
+
143
+ >>> x = mt.linspace(min(bins), max(bins), 10000)
144
+ >>> pdf = (mt.exp(-(mt.log(x) - mu)**2 / (2 * sigma**2))
145
+ ... / (x * sigma * mt.sqrt(2 * mt.pi)))
146
+
147
+ >>> plt.plot(x.execute(), pdf.execute(), color='r', linewidth=2)
148
+ >>> plt.show()
149
+ """
150
+ if dtype is None:
151
+ dtype = (
152
+ np.random.RandomState()
153
+ .lognormal(handle_array(mean), handle_array(sigma), size=(0,))
154
+ .dtype
155
+ )
156
+ size = random_state._handle_size(size)
157
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
158
+ op = TensorLognormal(seed=seed, size=size, gpu=gpu, dtype=dtype)
159
+ return op(mean, sigma, chunk_size=chunk_size)
@@ -0,0 +1,122 @@
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 TensorLogseries(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["p"]
27
+ _op_type_ = opcodes.RAND_LOGSERIES
28
+
29
+ _fields_ = "p", "size"
30
+ p = AnyField("p")
31
+ _func_name = "logseries"
32
+
33
+ def __call__(self, p, chunk_size=None):
34
+ return self.new_tensor([p], None, raw_chunk_size=chunk_size)
35
+
36
+
37
+ def logseries(random_state, p, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ r"""
39
+ Draw samples from a logarithmic series distribution.
40
+
41
+ Samples are drawn from a log series distribution with specified
42
+ shape parameter, 0 < ``p`` < 1.
43
+
44
+ Parameters
45
+ ----------
46
+ p : float or array_like of floats
47
+ Shape parameter for the distribution. Must be in the range (0, 1).
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 ``p`` is a scalar. Otherwise,
52
+ ``np.array(p).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 logarithmic series distribution.
64
+
65
+ See Also
66
+ --------
67
+ scipy.stats.logser : probability density function, distribution or
68
+ cumulative density function, etc.
69
+
70
+ Notes
71
+ -----
72
+ The probability density for the Log Series distribution is
73
+
74
+ .. math:: P(k) = \frac{-p^k}{k \ln(1-p)},
75
+
76
+ where p = probability.
77
+
78
+ The log series distribution is frequently used to represent species
79
+ richness and occurrence, first proposed by Fisher, Corbet, and
80
+ Williams in 1943 [2]. It may also be used to model the numbers of
81
+ occupants seen in cars [3].
82
+
83
+ References
84
+ ----------
85
+ .. [1] Buzas, Martin A.; Culver, Stephen J., Understanding regional
86
+ species diversity through the log series distribution of
87
+ occurrences: BIODIVERSITY RESEARCH Diversity & Distributions,
88
+ Volume 5, Number 5, September 1999 , pp. 187-195(9).
89
+ .. [2] Fisher, R.A,, A.S. Corbet, and C.B. Williams. 1943. The
90
+ relation between the number of species and the number of
91
+ individuals in a random sample of an animal population.
92
+ Journal of Animal Ecology, 12:42-58.
93
+ .. [3] D. J. Hand, F. Daly, D. Lunn, E. Ostrowski, A Handbook of Small
94
+ Data Sets, CRC Press, 1994.
95
+ .. [4] Wikipedia, "Logarithmic distribution",
96
+ http://en.wikipedia.org/wiki/Logarithmic_distribution
97
+
98
+ Examples
99
+ --------
100
+ Draw samples from the distribution:
101
+
102
+ >>> import maxframe.tensor as mt
103
+ >>> import matplotlib.pyplot as plt
104
+
105
+ >>> a = .6
106
+ >>> s = mt.random.logseries(a, 10000)
107
+ >>> count, bins, ignored = plt.hist(s.execute())
108
+
109
+ # plot against distribution
110
+
111
+ >>> def logseries(k, p):
112
+ ... return -p**k/(k*mt.log(1-p))
113
+ >>> plt.plot(bins, (logseries(bins, a)*count.max()/
114
+ ... logseries(bins, a).max()).execute(), 'r')
115
+ >>> plt.show()
116
+ """
117
+ if dtype is None:
118
+ dtype = np.random.RandomState().logseries(handle_array(p), size=(0,)).dtype
119
+ size = random_state._handle_size(size)
120
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
121
+ op = TensorLogseries(seed=seed, size=size, gpu=gpu, dtype=dtype)
122
+ return op(p, chunk_size=chunk_size)
@@ -0,0 +1,133 @@
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 FieldTypes, Int64Field, TupleField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin
23
+
24
+
25
+ class TensorMultinomial(TensorDistribution, TensorRandomOperatorMixin):
26
+ _op_type_ = opcodes.RAND_MULTINOMIAL
27
+
28
+ _fields_ = "n", "pvals", "size"
29
+ n = Int64Field("n")
30
+ pvals = TupleField("pvals", FieldTypes.float64)
31
+ _func_name = "multinomial"
32
+
33
+ def __call__(self, chunk_size=None):
34
+ if self.size is None:
35
+ shape = (len(self.pvals),)
36
+ else:
37
+ try:
38
+ shape = tuple(self.size) + (len(self.pvals),)
39
+ except TypeError:
40
+ shape = (self.size, len(self.pvals))
41
+ return self.new_tensor(None, shape, raw_chunk_size=chunk_size)
42
+
43
+
44
+ def multinomial(
45
+ random_state, n, pvals, size=None, chunk_size=None, gpu=None, dtype=None
46
+ ):
47
+ """
48
+ Draw samples from a multinomial distribution.
49
+
50
+ The multinomial distribution is a multivariate generalisation of the
51
+ binomial distribution. Take an experiment with one of ``p``
52
+ possible outcomes. An example of such an experiment is throwing a dice,
53
+ where the outcome can be 1 through 6. Each sample drawn from the
54
+ distribution represents `n` such experiments. Its values,
55
+ ``X_i = [X_0, X_1, ..., X_p]``, represent the number of times the
56
+ outcome was ``i``.
57
+
58
+ Parameters
59
+ ----------
60
+ n : int
61
+ Number of experiments.
62
+ pvals : sequence of floats, length p
63
+ Probabilities of each of the ``p`` different outcomes. These
64
+ should sum to 1 (however, the last element is always assumed to
65
+ account for the remaining probability, as long as
66
+ ``sum(pvals[:-1]) <= 1)``.
67
+ size : int or tuple of ints, optional
68
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
69
+ ``m * n * k`` samples are drawn. Default is None, in which case a
70
+ single value is returned.
71
+ chunk_size : int or tuple of int or tuple of ints, optional
72
+ Desired chunk size on each dimension
73
+ gpu : bool, optional
74
+ Allocate the tensor on GPU if True, False as default
75
+ dtype : data-type, optional
76
+ Data-type of the returned tensor.
77
+
78
+ Returns
79
+ -------
80
+ out : Tensor
81
+ The drawn samples, of shape *size*, if that was provided. If not,
82
+ the shape is ``(N,)``.
83
+
84
+ In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
85
+ value drawn from the distribution.
86
+
87
+ Examples
88
+ --------
89
+ Throw a dice 20 times:
90
+
91
+ >>> import maxframe.tensor as mt
92
+
93
+ >>> mt.random.multinomial(20, [1/6.]*6, size=1).execute()
94
+ array([[4, 1, 7, 5, 2, 1]])
95
+
96
+ It landed 4 times on 1, once on 2, etc.
97
+
98
+ Now, throw the dice 20 times, and 20 times again:
99
+
100
+ >>> mt.random.multinomial(20, [1/6.]*6, size=2).execute()
101
+ array([[3, 4, 3, 3, 4, 3],
102
+ [2, 4, 3, 4, 0, 7]])
103
+
104
+ For the first run, we threw 3 times 1, 4 times 2, etc. For the second,
105
+ we threw 2 times 1, 4 times 2, etc.
106
+
107
+ A loaded die is more likely to land on number 6:
108
+
109
+ >>> mt.random.multinomial(100, [1/7.]*5 + [2/7.]).execute()
110
+ array([11, 16, 14, 17, 16, 26])
111
+
112
+ The probability inputs should be normalized. As an implementation
113
+ detail, the value of the last entry is ignored and assumed to take
114
+ up any leftover probability mass, but this should not be relied on.
115
+ A biased coin which has twice as much weight on one side as on the
116
+ other should be sampled like so:
117
+
118
+ >>> mt.random.multinomial(100, [1.0 / 3, 2.0 / 3]).execute() # RIGHT
119
+ array([38, 62])
120
+
121
+ not like:
122
+
123
+ >>> mt.random.multinomial(100, [1.0, 2.0]).execute() # WRONG
124
+ array([100, 0])
125
+ """
126
+ n = int(n)
127
+ pvals = tuple(pvals)
128
+ if dtype is None:
129
+ dtype = np.random.RandomState().multinomial(n, pvals, size=(0,)).dtype
130
+ size = random_state._handle_size(size)
131
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
132
+ op = TensorMultinomial(n=n, pvals=pvals, seed=seed, size=size, gpu=gpu, dtype=dtype)
133
+ return op(chunk_size=chunk_size)