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,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 TensorF(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["dfnum", "dfden"]
27
+ _op_type_ = opcodes.RAND_F
28
+
29
+ _fields_ = "dfnum", "dfden", "size"
30
+ dfnum = AnyField("dfnum")
31
+ dfden = AnyField("dfden")
32
+ _func_name = "f"
33
+
34
+ def __call__(self, dfnum, dfden, chunk_size=None):
35
+ return self.new_tensor([dfnum, dfden], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def f(random_state, dfnum, dfden, size=None, chunk_size=None, gpu=None, dtype=None):
39
+ """
40
+ Draw samples from an F distribution.
41
+
42
+ Samples are drawn from an F distribution with specified parameters,
43
+ `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
44
+ freedom in denominator), where both parameters should be greater than
45
+ zero.
46
+
47
+ The random variate of the F distribution (also known as the
48
+ Fisher distribution) is a continuous probability distribution
49
+ that arises in ANOVA tests, and is the ratio of two chi-square
50
+ variates.
51
+
52
+ Parameters
53
+ ----------
54
+ dfnum : float or array_like of floats
55
+ Degrees of freedom in numerator, should be > 0.
56
+ dfden : float or array_like of float
57
+ Degrees of freedom in denominator, should be > 0.
58
+ size : int or tuple of ints, optional
59
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
60
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
61
+ a single value is returned if ``dfnum`` and ``dfden`` are both scalars.
62
+ Otherwise, ``np.broadcast(dfnum, dfden).size`` samples are drawn.
63
+ chunk_size : int or tuple of int or tuple of ints, optional
64
+ Desired chunk size on each dimension
65
+ gpu : bool, optional
66
+ Allocate the tensor on GPU if True, False as default
67
+ dtype : data-type, optional
68
+ Data-type of the returned tensor.
69
+
70
+ Returns
71
+ -------
72
+ out : Tensor or scalar
73
+ Drawn samples from the parameterized Fisher distribution.
74
+
75
+ See Also
76
+ --------
77
+ scipy.stats.f : probability density function, distribution or
78
+ cumulative density function, etc.
79
+
80
+ Notes
81
+ -----
82
+ The F statistic is used to compare in-group variances to between-group
83
+ variances. Calculating the distribution depends on the sampling, and
84
+ so it is a function of the respective degrees of freedom in the
85
+ problem. The variable `dfnum` is the number of samples minus one, the
86
+ between-groups degrees of freedom, while `dfden` is the within-groups
87
+ degrees of freedom, the sum of the number of samples in each group
88
+ minus the number of groups.
89
+
90
+ References
91
+ ----------
92
+ .. [1] Glantz, Stanton A. "Primer of Biostatistics.", McGraw-Hill,
93
+ Fifth Edition, 2002.
94
+ .. [2] Wikipedia, "F-distribution",
95
+ http://en.wikipedia.org/wiki/F-distribution
96
+
97
+ Examples
98
+ --------
99
+ An example from Glantz[1], pp 47-40:
100
+
101
+ Two groups, children of diabetics (25 people) and children from people
102
+ without diabetes (25 controls). Fasting blood glucose was measured,
103
+ case group had a mean value of 86.1, controls had a mean value of
104
+ 82.2. Standard deviations were 2.09 and 2.49 respectively. Are these
105
+ data consistent with the null hypothesis that the parents diabetic
106
+ status does not affect their children's blood glucose levels?
107
+ Calculating the F statistic from the data gives a value of 36.01.
108
+
109
+ Draw samples from the distribution:
110
+
111
+ >>> import maxframe.tensor as mt
112
+
113
+ >>> dfnum = 1. # between group degrees of freedom
114
+ >>> dfden = 48. # within groups degrees of freedom
115
+ >>> s = mt.random.f(dfnum, dfden, 1000).execute()
116
+
117
+ The lower bound for the top 1% of the samples is :
118
+
119
+ >>> sorted(s)[-10]
120
+ 7.61988120985
121
+
122
+ So there is about a 1% chance that the F statistic will exceed 7.62,
123
+ the measured value is 36, so the null hypothesis is rejected at the 1%
124
+ level.
125
+ """
126
+ if dtype is None:
127
+ dtype = (
128
+ np.random.RandomState()
129
+ .f(handle_array(dfnum), handle_array(dfden), size=(0,))
130
+ .dtype
131
+ )
132
+ size = random_state._handle_size(size)
133
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
134
+ op = TensorF(seed=seed, size=size, gpu=gpu, dtype=dtype)
135
+ return op(dfnum, dfden, chunk_size=chunk_size)
@@ -0,0 +1,128 @@
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 TensorRandGamma(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["shape", "scale"]
27
+ _op_type_ = opcodes.RAND_GAMMA
28
+
29
+ _fields_ = "shape", "scale", "size"
30
+ shape = AnyField("shape")
31
+ scale = AnyField("scale")
32
+ _func_name = "gamma"
33
+
34
+ def __call__(self, shape, scale, chunk_size=None):
35
+ return self.new_tensor([shape, scale], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def gamma(
39
+ random_state, shape, scale=1.0, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from a Gamma distribution.
43
+
44
+ Samples are drawn from a Gamma distribution with specified parameters,
45
+ `shape` (sometimes designated "k") and `scale` (sometimes designated
46
+ "theta"), where both parameters are > 0.
47
+
48
+ Parameters
49
+ ----------
50
+ shape : float or array_like of floats
51
+ The shape of the gamma distribution. Should be greater than zero.
52
+ scale : float or array_like of floats, optional
53
+ The scale of the gamma distribution. Should be greater than zero.
54
+ Default is equal to 1.
55
+ size : int or tuple of ints, optional
56
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
57
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
58
+ a single value is returned if ``shape`` and ``scale`` are both scalars.
59
+ Otherwise, ``np.broadcast(shape, scale).size`` samples are drawn.
60
+ chunk_size : int or tuple of int or tuple of ints, optional
61
+ Desired chunk size on each dimension
62
+ gpu : bool, optional
63
+ Allocate the tensor on GPU if True, False as default
64
+ dtype : data-type, optional
65
+ Data-type of the returned tensor.
66
+
67
+ Returns
68
+ -------
69
+ out : Tensor or scalar
70
+ Drawn samples from the parameterized gamma distribution.
71
+
72
+ See Also
73
+ --------
74
+ scipy.stats.gamma : probability density function, distribution or
75
+ cumulative density function, etc.
76
+
77
+ Notes
78
+ -----
79
+ The probability density for the Gamma distribution is
80
+
81
+ .. math:: p(x) = x^{k-1}\frac{e^{-x/\theta}}{\theta^k\Gamma(k)},
82
+
83
+ where :math:`k` is the shape and :math:`\theta` the scale,
84
+ and :math:`\Gamma` is the Gamma function.
85
+
86
+ The Gamma distribution is often used to model the times to failure of
87
+ electronic components, and arises naturally in processes for which the
88
+ waiting times between Poisson distributed events are relevant.
89
+
90
+ References
91
+ ----------
92
+ .. [1] Weisstein, Eric W. "Gamma Distribution." From MathWorld--A
93
+ Wolfram Web Resource.
94
+ http://mathworld.wolfram.com/GammaDistribution.html
95
+ .. [2] Wikipedia, "Gamma distribution",
96
+ http://en.wikipedia.org/wiki/Gamma_distribution
97
+
98
+ Examples
99
+ --------
100
+ Draw samples from the distribution:
101
+
102
+ >>> import maxframe.tensor as mt
103
+
104
+ >>> shape, scale = 2., 2. # mean=4, std=2*sqrt(2)
105
+ >>> s = mt.random.gamma(shape, scale, 1000).execute()
106
+
107
+ Display the histogram of the samples, along with
108
+ the probability density function:
109
+
110
+ >>> import matplotlib.pyplot as plt
111
+ >>> import scipy.special as sps
112
+ >>> import numpy as np
113
+ >>> count, bins, ignored = plt.hist(s, 50, normed=True)
114
+ >>> y = bins**(shape-1)*(np.exp(-bins/scale) /
115
+ ... (sps.gamma(shape)*scale**shape))
116
+ >>> plt.plot(bins, y, linewidth=2, color='r')
117
+ >>> plt.show()
118
+ """
119
+ if dtype is None:
120
+ dtype = (
121
+ np.random.RandomState()
122
+ .gamma(handle_array(shape), handle_array(scale), size=(0,))
123
+ .dtype
124
+ )
125
+ size = random_state._handle_size(size)
126
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
127
+ op = TensorRandGamma(seed=seed, size=size, gpu=gpu, dtype=dtype)
128
+ return op(shape, scale, chunk_size=chunk_size)
@@ -0,0 +1,93 @@
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 TensorGeometric(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["p"]
27
+ _op_type_ = opcodes.RAND_GEOMETRIC
28
+
29
+ _fields_ = "p", "size"
30
+ p = AnyField("p")
31
+ _func_name = "geometric"
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 geometric(random_state, p, size=None, chunk_size=None, gpu=None, dtype=None):
38
+ """
39
+ Draw samples from the geometric distribution.
40
+
41
+ Bernoulli trials are experiments with one of two outcomes:
42
+ success or failure (an example of such an experiment is flipping
43
+ a coin). The geometric distribution models the number of trials
44
+ that must be run in order to achieve success. It is therefore
45
+ supported on the positive integers, ``k = 1, 2, ...``.
46
+
47
+ The probability mass function of the geometric distribution is
48
+
49
+ .. math:: f(k) = (1 - p)^{k - 1} p
50
+
51
+ where `p` is the probability of success of an individual trial.
52
+
53
+ Parameters
54
+ ----------
55
+ p : float or array_like of floats
56
+ The probability of success of an individual trial.
57
+ size : int or tuple of ints, optional
58
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
59
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
60
+ a single value is returned if ``p`` is a scalar. Otherwise,
61
+ ``mt.array(p).size`` samples are drawn.
62
+ chunk_size : int or tuple of int or tuple of ints, optional
63
+ Desired chunk size on each dimension
64
+ gpu : bool, optional
65
+ Allocate the tensor on GPU if True, False as default
66
+ dtype : data-type, optional
67
+ Data-type of the returned tensor.
68
+
69
+ Returns
70
+ -------
71
+ out : Tensor or scalar
72
+ Drawn samples from the parameterized geometric distribution.
73
+
74
+ Examples
75
+ --------
76
+ Draw ten thousand values from the geometric distribution,
77
+ with the probability of an individual success equal to 0.35:
78
+
79
+ >>> import maxframe.tensor as mt
80
+
81
+ >>> z = mt.random.geometric(p=0.35, size=10000)
82
+
83
+ How many trials succeeded after a single run?
84
+
85
+ >>> ((z == 1).sum() / 10000.).execute()
86
+ 0.34889999999999999 #random
87
+ """
88
+ if dtype is None:
89
+ dtype = np.random.RandomState().geometric(handle_array(p), size=(0,)).dtype
90
+ size = random_state._handle_size(size)
91
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
92
+ op = TensorGeometric(seed=seed, size=size, gpu=gpu, dtype=dtype)
93
+ return op(p, chunk_size=chunk_size)
@@ -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
+
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 TensorGumbel(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["loc", "scale"]
27
+ _op_type_ = opcodes.RAND_GUMBEL
28
+
29
+ _fields_ = "loc", "scale", "size"
30
+ loc = AnyField("loc")
31
+ scale = AnyField("scale")
32
+ _func_name = "gumbel"
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 gumbel(
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 Gumbel distribution.
43
+
44
+ Draw samples from a Gumbel distribution with specified location and
45
+ scale. For more information on the Gumbel distribution, see
46
+ Notes and References below.
47
+
48
+ Parameters
49
+ ----------
50
+ loc : float or array_like of floats, optional
51
+ The location of the mode of the distribution. Default is 0.
52
+ scale : float or array_like of floats, optional
53
+ The scale parameter of the distribution. 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 Gumbel distribution.
70
+
71
+ See Also
72
+ --------
73
+ scipy.stats.gumbel_l
74
+ scipy.stats.gumbel_r
75
+ scipy.stats.genextreme
76
+ weibull
77
+
78
+ Notes
79
+ -----
80
+ The Gumbel (or Smallest Extreme Value (SEV) or the Smallest Extreme
81
+ Value Type I) distribution is one of a class of Generalized Extreme
82
+ Value (GEV) distributions used in modeling extreme value problems.
83
+ The Gumbel is a special case of the Extreme Value Type I distribution
84
+ for maximums from distributions with "exponential-like" tails.
85
+
86
+ The probability density for the Gumbel distribution is
87
+
88
+ .. math:: p(x) = \frac{e^{-(x - \mu)/ \beta}}{\beta} e^{ -e^{-(x - \mu)/
89
+ \beta}},
90
+
91
+ where :math:`\mu` is the mode, a location parameter, and
92
+ :math:`\beta` is the scale parameter.
93
+
94
+ The Gumbel (named for German mathematician Emil Julius Gumbel) was used
95
+ very early in the hydrology literature, for modeling the occurrence of
96
+ flood events. It is also used for modeling maximum wind speed and
97
+ rainfall rates. It is a "fat-tailed" distribution - the probability of
98
+ an event in the tail of the distribution is larger than if one used a
99
+ Gaussian, hence the surprisingly frequent occurrence of 100-year
100
+ floods. Floods were initially modeled as a Gaussian process, which
101
+ underestimated the frequency of extreme events.
102
+
103
+ It is one of a class of extreme value distributions, the Generalized
104
+ Extreme Value (GEV) distributions, which also includes the Weibull and
105
+ Frechet.
106
+
107
+ The function has a mean of :math:`\mu + 0.57721\beta` and a variance
108
+ of :math:`\frac{\pi^2}{6}\beta^2`.
109
+
110
+ References
111
+ ----------
112
+ .. [1] Gumbel, E. J., "Statistics of Extremes,"
113
+ New York: Columbia University Press, 1958.
114
+ .. [2] Reiss, R.-D. and Thomas, M., "Statistical Analysis of Extreme
115
+ Values from Insurance, Finance, Hydrology and Other Fields,"
116
+ Basel: Birkhauser Verlag, 2001.
117
+
118
+ Examples
119
+ --------
120
+ Draw samples from the distribution:
121
+
122
+ >>> import maxframe.tensor as mt
123
+
124
+ >>> mu, beta = 0, 0.1 # location and scale
125
+ >>> s = mt.random.gumbel(mu, beta, 1000).execute()
126
+
127
+ Display the histogram of the samples, along with
128
+ the probability density function:
129
+
130
+ >>> import matplotlib.pyplot as plt
131
+ >>> import numpy as np
132
+ >>> count, bins, ignored = plt.hist(s, 30, normed=True)
133
+ >>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
134
+ ... * np.exp( -np.exp( -(bins - mu) /beta) ),
135
+ ... linewidth=2, color='r')
136
+ >>> plt.show()
137
+
138
+ Show how an extreme value distribution can arise from a Gaussian process
139
+ and compare to a Gaussian:
140
+
141
+ >>> means = []
142
+ >>> maxima = []
143
+ >>> for i in range(0,1000) :
144
+ ... a = mt.random.normal(mu, beta, 1000)
145
+ ... means.append(a.mean().execute())
146
+ ... maxima.append(a.max().execute())
147
+ >>> count, bins, ignored = plt.hist(maxima, 30, normed=True)
148
+ >>> beta = mt.std(maxima) * mt.sqrt(6) / mt.pi
149
+ >>> mu = mt.mean(maxima) - 0.57721*beta
150
+ >>> plt.plot(bins, ((1/beta)*mt.exp(-(bins - mu)/beta)
151
+ ... * mt.exp(-mt.exp(-(bins - mu)/beta))).execute(),
152
+ ... linewidth=2, color='r')
153
+ >>> plt.plot(bins, (1/(beta * mt.sqrt(2 * mt.pi))
154
+ ... * mt.exp(-(bins - mu)**2 / (2 * beta**2))).execute(),
155
+ ... linewidth=2, color='g')
156
+ >>> plt.show()
157
+ """
158
+ if dtype is None:
159
+ dtype = (
160
+ np.random.RandomState()
161
+ .gumbel(handle_array(loc), handle_array(scale), size=(0,))
162
+ .dtype
163
+ )
164
+ size = random_state._handle_size(size)
165
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
166
+ op = TensorGumbel(seed=seed, size=size, gpu=gpu, dtype=dtype)
167
+ return op(loc, scale, chunk_size=chunk_size)
@@ -0,0 +1,148 @@
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 TensorHypergeometric(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["ngood", "nbad", "nsample"]
27
+ _op_type_ = opcodes.RAND_HYPERGEOMETRIC
28
+
29
+ _fields_ = "ngood", "nbad", "nsample", "size"
30
+ ngood = AnyField("ngood")
31
+ nbad = AnyField("nbad")
32
+ nsample = AnyField("nsample")
33
+ _func_name = "hypergeometric"
34
+
35
+ def __call__(self, ngood, nbad, nsample, chunk_size=None):
36
+ return self.new_tensor([ngood, nbad, nsample], None, raw_chunk_size=chunk_size)
37
+
38
+
39
+ def hypergeometric(
40
+ random_state, ngood, nbad, nsample, size=None, chunk_size=None, gpu=None, dtype=None
41
+ ):
42
+ r"""
43
+ Draw samples from a Hypergeometric distribution.
44
+
45
+ Samples are drawn from a hypergeometric distribution with specified
46
+ parameters, ngood (ways to make a good selection), nbad (ways to make
47
+ a bad selection), and nsample = number of items sampled, which is less
48
+ than or equal to the sum ngood + nbad.
49
+
50
+ Parameters
51
+ ----------
52
+ ngood : int or array_like of ints
53
+ Number of ways to make a good selection. Must be nonnegative.
54
+ nbad : int or array_like of ints
55
+ Number of ways to make a bad selection. Must be nonnegative.
56
+ nsample : int or array_like of ints
57
+ Number of items sampled. Must be at least 1 and at most
58
+ ``ngood + nbad``.
59
+ size : int or tuple of ints, optional
60
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
61
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
62
+ a single value is returned if ``ngood``, ``nbad``, and ``nsample``
63
+ are all scalars. Otherwise, ``np.broadcast(ngood, nbad, nsample).size``
64
+ samples are drawn.
65
+ chunk_size : int or tuple of int or tuple of ints, optional
66
+ Desired chunk size on each dimension
67
+ gpu : bool, optional
68
+ Allocate the tensor on GPU if True, False as default
69
+ dtype : data-type, optional
70
+ Data-type of the returned tensor.
71
+
72
+ Returns
73
+ -------
74
+ out : Tensor or scalar
75
+ Drawn samples from the parameterized hypergeometric distribution.
76
+
77
+ See Also
78
+ --------
79
+ scipy.stats.hypergeom : probability density function, distribution or
80
+ cumulative density function, etc.
81
+
82
+ Notes
83
+ -----
84
+ The probability density for the Hypergeometric distribution is
85
+
86
+ .. math:: P(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}},
87
+
88
+ where :math:`0 \le x \le m` and :math:`n+m-N \le x \le n`
89
+
90
+ for P(x) the probability of x successes, n = ngood, m = nbad, and
91
+ N = number of samples.
92
+
93
+ Consider an urn with black and white marbles in it, ngood of them
94
+ black and nbad are white. If you draw nsample balls without
95
+ replacement, then the hypergeometric distribution describes the
96
+ distribution of black balls in the drawn sample.
97
+
98
+ Note that this distribution is very similar to the binomial
99
+ distribution, except that in this case, samples are drawn without
100
+ replacement, whereas in the Binomial case samples are drawn with
101
+ replacement (or the sample space is infinite). As the sample space
102
+ becomes large, this distribution approaches the binomial.
103
+
104
+ References
105
+ ----------
106
+ .. [1] Lentner, Marvin, "Elementary Applied Statistics", Bogden
107
+ and Quigley, 1972.
108
+ .. [2] Weisstein, Eric W. "Hypergeometric Distribution." From
109
+ MathWorld--A Wolfram Web Resource.
110
+ http://mathworld.wolfram.com/HypergeometricDistribution.html
111
+ .. [3] Wikipedia, "Hypergeometric distribution",
112
+ http://en.wikipedia.org/wiki/Hypergeometric_distribution
113
+
114
+ Examples
115
+ --------
116
+ Draw samples from the distribution:
117
+
118
+ >>> import maxframe.tensor as mt
119
+
120
+ >>> ngood, nbad, nsamp = 100, 2, 10
121
+ # number of good, number of bad, and number of samples
122
+ >>> s = mt.random.hypergeometric(ngood, nbad, nsamp, 1000)
123
+ >>> hist(s)
124
+ # note that it is very unlikely to grab both bad items
125
+
126
+ Suppose you have an urn with 15 white and 15 black marbles.
127
+ If you pull 15 marbles at random, how likely is it that
128
+ 12 or more of them are one color?
129
+
130
+ >>> s = mt.random.hypergeometric(15, 15, 15, 100000)
131
+ >>> (mt.sum(s>=12)/100000. + mt.sum(s<=3)/100000.).execute()
132
+ # answer = 0.003 ... pretty unlikely!
133
+ """
134
+ if dtype is None:
135
+ dtype = (
136
+ np.random.RandomState()
137
+ .hypergeometric(
138
+ handle_array(ngood),
139
+ handle_array(nbad),
140
+ handle_array(nsample),
141
+ size=(0,),
142
+ )
143
+ .dtype
144
+ )
145
+ size = random_state._handle_size(size)
146
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
147
+ op = TensorHypergeometric(seed=seed, size=size, gpu=gpu, dtype=dtype)
148
+ return op(ngood, nbad, nsample, chunk_size=chunk_size)