maxframe 0.1.0b5__cp39-cp39-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-39-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-39-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-39-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-39-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,192 @@
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 Float64Field, NDArrayField, StringField
21
+ from ..utils import gen_random_seeds
22
+ from .core import TensorDistribution, TensorRandomOperatorMixin
23
+
24
+
25
+ class TensorMultivariateNormal(TensorDistribution, TensorRandomOperatorMixin):
26
+ _op_type_ = opcodes.RAND_MULTIVARIATE_NORMAL
27
+
28
+ _fields_ = "mean", "cov", "size", "check_valid", "tol"
29
+ mean = NDArrayField("mean")
30
+ cov = NDArrayField("cov")
31
+ check_valid = StringField("check_valid")
32
+ tol = Float64Field("tol")
33
+ _func_name = "multivariate_normal"
34
+
35
+ def __call__(self, chunk_size=None):
36
+ N = self.mean.size
37
+ if self.size is None:
38
+ shape = (N,)
39
+ else:
40
+ try:
41
+ shape = tuple(self.size) + (N,)
42
+ except TypeError:
43
+ shape = (self.size, N)
44
+
45
+ return self.new_tensor(None, shape, raw_chunk_size=chunk_size)
46
+
47
+
48
+ def multivariate_normal(
49
+ random_state,
50
+ mean,
51
+ cov,
52
+ size=None,
53
+ check_valid=None,
54
+ tol=None,
55
+ chunk_size=None,
56
+ gpu=None,
57
+ dtype=None,
58
+ ):
59
+ """
60
+ Draw random samples from a multivariate normal distribution.
61
+
62
+ The multivariate normal, multinormal or Gaussian distribution is a
63
+ generalization of the one-dimensional normal distribution to higher
64
+ dimensions. Such a distribution is specified by its mean and
65
+ covariance matrix. These parameters are analogous to the mean
66
+ (average or "center") and variance (standard deviation, or "width,"
67
+ squared) of the one-dimensional normal distribution.
68
+
69
+ Parameters
70
+ ----------
71
+ mean : 1-D array_like, of length N
72
+ Mean of the N-dimensional distribution.
73
+ cov : 2-D array_like, of shape (N, N)
74
+ Covariance matrix of the distribution. It must be symmetric and
75
+ positive-semidefinite for proper sampling.
76
+ size : int or tuple of ints, optional
77
+ Given a shape of, for example, ``(m,n,k)``, ``m*n*k`` samples are
78
+ generated, and packed in an `m`-by-`n`-by-`k` arrangement. Because
79
+ each sample is `N`-dimensional, the output shape is ``(m,n,k,N)``.
80
+ If no shape is specified, a single (`N`-D) sample is returned.
81
+ check_valid : { 'warn', 'raise', 'ignore' }, optional
82
+ Behavior when the covariance matrix is not positive semidefinite.
83
+ tol : float, optional
84
+ Tolerance when checking the singular values in covariance matrix.
85
+ chunk_size : int or tuple of int or tuple of ints, optional
86
+ Desired chunk size on each dimension
87
+ gpu : bool, optional
88
+ Allocate the tensor on GPU if True, False as default
89
+ dtype : data-type, optional
90
+ Data-type of the returned tensor.
91
+
92
+ Returns
93
+ -------
94
+ out : Tensor
95
+ The drawn samples, of shape *size*, if that was provided. If not,
96
+ the shape is ``(N,)``.
97
+
98
+ In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
99
+ value drawn from the distribution.
100
+
101
+ Notes
102
+ -----
103
+ The mean is a coordinate in N-dimensional space, which represents the
104
+ location where samples are most likely to be generated. This is
105
+ analogous to the peak of the bell curve for the one-dimensional or
106
+ univariate normal distribution.
107
+
108
+ Covariance indicates the level to which two variables vary together.
109
+ From the multivariate normal distribution, we draw N-dimensional
110
+ samples, :math:`X = [x_1, x_2, ... x_N]`. The covariance matrix
111
+ element :math:`C_{ij}` is the covariance of :math:`x_i` and :math:`x_j`.
112
+ The element :math:`C_{ii}` is the variance of :math:`x_i` (i.e. its
113
+ "spread").
114
+
115
+ Instead of specifying the full covariance matrix, popular
116
+ approximations include:
117
+
118
+ - Spherical covariance (`cov` is a multiple of the identity matrix)
119
+ - Diagonal covariance (`cov` has non-negative elements, and only on
120
+ the diagonal)
121
+
122
+ This geometrical property can be seen in two dimensions by plotting
123
+ generated data-points:
124
+
125
+ >>> mean = [0, 0]
126
+ >>> cov = [[1, 0], [0, 100]] # diagonal covariance
127
+
128
+ Diagonal covariance means that points are oriented along x or y-axis:
129
+
130
+ >>> import matplotlib.pyplot as plt
131
+ >>> import maxframe.tensor as mt
132
+ >>> x, y = mt.random.multivariate_normal(mean, cov, 5000).T
133
+ >>> plt.plot(x.execute(), y.execute(), 'x')
134
+ >>> plt.axis('equal')
135
+ >>> plt.show()
136
+
137
+ Note that the covariance matrix must be positive semidefinite (a.k.a.
138
+ nonnegative-definite). Otherwise, the behavior of this method is
139
+ undefined and backwards compatibility is not guaranteed.
140
+
141
+ References
142
+ ----------
143
+ .. [1] Papoulis, A., "Probability, Random Variables, and Stochastic
144
+ Processes," 3rd ed., New York: McGraw-Hill, 1991.
145
+ .. [2] Duda, R. O., Hart, P. E., and Stork, D. G., "Pattern
146
+ Classification," 2nd ed., New York: Wiley, 2001.
147
+
148
+ Examples
149
+ --------
150
+ >>> mean = (1, 2)
151
+ >>> cov = [[1, 0], [0, 1]]
152
+ >>> x = mt.random.multivariate_normal(mean, cov, (3, 3))
153
+ >>> x.shape
154
+ (3, 3, 2)
155
+
156
+ The following is probably true, given that 0.6 is roughly twice the
157
+ standard deviation:
158
+
159
+ >>> list(((x[0,0,:] - mean) < 0.6).execute())
160
+ [True, True]
161
+ """
162
+ mean = np.asarray(mean)
163
+ cov = np.asarray(cov)
164
+
165
+ if mean.ndim != 1:
166
+ raise ValueError("mean must be 1 dimensional")
167
+ if cov.ndim != 2:
168
+ raise ValueError("cov must be 1 dimensional")
169
+ if len(set(mean.shape + cov.shape)) != 1:
170
+ raise ValueError("mean and cov must have same length")
171
+
172
+ if dtype is None:
173
+ small_kw = {}
174
+ if check_valid:
175
+ small_kw["check_valid"] = check_valid
176
+ if tol:
177
+ small_kw["tol"] = tol
178
+ dtype = np.random.multivariate_normal(mean, cov, size=(0,), **small_kw).dtype
179
+
180
+ size = random_state._handle_size(size)
181
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
182
+ op = TensorMultivariateNormal(
183
+ mean=mean,
184
+ cov=cov,
185
+ size=size,
186
+ check_valid=check_valid,
187
+ tol=tol,
188
+ seed=seed,
189
+ gpu=gpu,
190
+ dtype=dtype,
191
+ )
192
+ return op(chunk_size=chunk_size)
@@ -0,0 +1,125 @@
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 TensorNegativeBinomial(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["n", "p"]
27
+ _op_type_ = opcodes.RAND_NEGATIVE_BINOMIAL
28
+
29
+ _fields_ = "n", "p", "size"
30
+ n = AnyField("n")
31
+ p = AnyField("p")
32
+ _func_name = "negative_binomial"
33
+
34
+ def __call__(self, n, p, chunk_size=None):
35
+ return self.new_tensor([n, p], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def negative_binomial(
39
+ random_state, n, p, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from a negative binomial distribution.
43
+
44
+ Samples are drawn from a negative binomial distribution with specified
45
+ parameters, `n` trials and `p` probability of success where `n` is an
46
+ integer > 0 and `p` is in the interval [0, 1].
47
+
48
+ Parameters
49
+ ----------
50
+ n : int or array_like of ints
51
+ Parameter of the distribution, > 0. Floats are also accepted,
52
+ but they will be truncated to integers.
53
+ p : float or array_like of floats
54
+ Parameter of the distribution, >= 0 and <=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 ``n`` and ``p`` are both scalars.
59
+ Otherwise, ``np.broadcast(n, p).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 negative binomial distribution,
71
+ where each sample is equal to N, the number of trials it took to
72
+ achieve n - 1 successes, N - (n - 1) failures, and a success on the,
73
+ (N + n)th trial.
74
+
75
+ Notes
76
+ -----
77
+ The probability density for the negative binomial distribution is
78
+
79
+ .. math:: P(N;n,p) = \binom{N+n-1}{n-1}p^{n}(1-p)^{N},
80
+
81
+ where :math:`n-1` is the number of successes, :math:`p` is the
82
+ probability of success, and :math:`N+n-1` is the number of trials.
83
+ The negative binomial distribution gives the probability of n-1
84
+ successes and N failures in N+n-1 trials, and success on the (N+n)th
85
+ trial.
86
+
87
+ If one throws a die repeatedly until the third time a "1" appears,
88
+ then the probability distribution of the number of non-"1"s that
89
+ appear before the third "1" is a negative binomial distribution.
90
+
91
+ References
92
+ ----------
93
+ .. [1] Weisstein, Eric W. "Negative Binomial Distribution." From
94
+ MathWorld--A Wolfram Web Resource.
95
+ http://mathworld.wolfram.com/NegativeBinomialDistribution.html
96
+ .. [2] Wikipedia, "Negative binomial distribution",
97
+ http://en.wikipedia.org/wiki/Negative_binomial_distribution
98
+
99
+ Examples
100
+ --------
101
+ Draw samples from the distribution:
102
+
103
+ A real world example. A company drills wild-cat oil
104
+ exploration wells, each with an estimated probability of
105
+ success of 0.1. What is the probability of having one success
106
+ for each successive well, that is what is the probability of a
107
+ single success after drilling 5 wells, after 6 wells, etc.?
108
+
109
+ >>> import maxframe.tensor as mt
110
+
111
+ >>> s = mt.random.negative_binomial(1, 0.1, 100000)
112
+ >>> for i in range(1, 11):
113
+ ... probability = (mt.sum(s<i) / 100000.).execute()
114
+ ... print i, "wells drilled, probability of one success =", probability
115
+ """
116
+ if dtype is None:
117
+ dtype = (
118
+ np.random.RandomState()
119
+ .negative_binomial(handle_array(n), handle_array(p), size=(0,))
120
+ .dtype
121
+ )
122
+ size = random_state._handle_size(size)
123
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
124
+ op = TensorNegativeBinomial(size=size, seed=seed, gpu=gpu, dtype=dtype)
125
+ return op(n, p, chunk_size=chunk_size)
@@ -0,0 +1,132 @@
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 TensorNoncentralChisquare(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["df", "nonc"]
27
+ _op_type_ = opcodes.RAND_NONCENTRAL_CHISQURE
28
+
29
+ _fields_ = "df", "nonc", "size"
30
+ df = AnyField("df")
31
+ nonc = AnyField("nonc")
32
+ _func_name = "noncentral_chisquare"
33
+
34
+ def __call__(self, df, nonc, chunk_size=None):
35
+ return self.new_tensor([df, nonc], None, raw_chunk_size=chunk_size)
36
+
37
+
38
+ def noncentral_chisquare(
39
+ random_state, df, nonc, size=None, chunk_size=None, gpu=None, dtype=None
40
+ ):
41
+ r"""
42
+ Draw samples from a noncentral chi-square distribution.
43
+
44
+ The noncentral :math:`\chi^2` distribution is a generalisation of
45
+ the :math:`\chi^2` distribution.
46
+
47
+ Parameters
48
+ ----------
49
+ df : float or array_like of floats
50
+ Degrees of freedom, should be > 0.
51
+ nonc : float or array_like of floats
52
+ Non-centrality, should be non-negative.
53
+ size : int or tuple of ints, optional
54
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
55
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
56
+ a single value is returned if ``df`` and ``nonc`` are both scalars.
57
+ Otherwise, ``mt.broadcast(df, nonc).size`` samples are drawn.
58
+ chunk_size : int or tuple of int or tuple of ints, optional
59
+ Desired chunk size on each dimension
60
+ gpu : bool, optional
61
+ Allocate the tensor on GPU if True, False as default
62
+ dtype : data-type, optional
63
+ Data-type of the returned tensor.
64
+
65
+ Returns
66
+ -------
67
+ out : Tensor or scalar
68
+ Drawn samples from the parameterized noncentral chi-square distribution.
69
+
70
+ Notes
71
+ -----
72
+ The probability density function for the noncentral Chi-square
73
+ distribution is
74
+
75
+ .. math:: P(x;df,nonc) = \sum^{\infty}_{i=0}
76
+ \frac{e^{-nonc/2}(nonc/2)^{i}}{i!}
77
+ \P_{Y_{df+2i}}(x),
78
+
79
+ where :math:`Y_{q}` is the Chi-square with q degrees of freedom.
80
+
81
+ In Delhi (2007), it is noted that the noncentral chi-square is
82
+ useful in bombing and coverage problems, the probability of
83
+ killing the point target given by the noncentral chi-squared
84
+ distribution.
85
+
86
+ References
87
+ ----------
88
+ .. [1] Delhi, M.S. Holla, "On a noncentral chi-square distribution in
89
+ the analysis of weapon systems effectiveness", Metrika,
90
+ Volume 15, Number 1 / December, 1970.
91
+ .. [2] Wikipedia, "Noncentral chi-square distribution"
92
+ http://en.wikipedia.org/wiki/Noncentral_chi-square_distribution
93
+
94
+ Examples
95
+ --------
96
+ Draw values from the distribution and plot the histogram
97
+
98
+ >>> import matplotlib.pyplot as plt
99
+ >>> import maxframe.tensor as mt
100
+ >>> values = plt.hist(mt.random.noncentral_chisquare(3, 20, 100000).execute(),
101
+ ... bins=200, normed=True)
102
+ >>> plt.show()
103
+
104
+ Draw values from a noncentral chisquare with very small noncentrality,
105
+ and compare to a chisquare.
106
+
107
+ >>> plt.figure()
108
+ >>> values = plt.hist(mt.random.noncentral_chisquare(3, .0000001, 100000).execute(),
109
+ ... bins=mt.arange(0., 25, .1).execute(), normed=True)
110
+ >>> values2 = plt.hist(mt.random.chisquare(3, 100000).execute(),
111
+ ... bins=mt.arange(0., 25, .1).execute(), normed=True)
112
+ >>> plt.plot(values[1][0:-1], values[0]-values2[0], 'ob')
113
+ >>> plt.show()
114
+
115
+ Demonstrate how large values of non-centrality lead to a more symmetric
116
+ distribution.
117
+
118
+ >>> plt.figure()
119
+ >>> values = plt.hist(mt.random.noncentral_chisquare(3, 20, 100000).execute(),
120
+ ... bins=200, normed=True)
121
+ >>> plt.show()
122
+ """
123
+ if dtype is None:
124
+ dtype = (
125
+ np.random.RandomState()
126
+ .noncentral_chisquare(handle_array(df), handle_array(nonc), size=(0,))
127
+ .dtype
128
+ )
129
+ size = random_state._handle_size(size)
130
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
131
+ op = TensorNoncentralChisquare(size=size, seed=seed, gpu=gpu, dtype=dtype)
132
+ return op(df, nonc, chunk_size=chunk_size)
@@ -0,0 +1,126 @@
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 TensorNoncentralF(TensorDistribution, TensorRandomOperatorMixin):
26
+ _input_fields_ = ["dfnum", "dfden", "nonc"]
27
+ _op_type_ = opcodes.RAND_NONCENTRAL_F
28
+
29
+ _fields_ = "dfnum", "dfden", "nonc", "size"
30
+ dfnum = AnyField("dfnum")
31
+ dfden = AnyField("dfden")
32
+ nonc = AnyField("nonc")
33
+ _func_name = "noncentral_f"
34
+
35
+ def __call__(self, dfnum, dfden, nonc, chunk_size=None):
36
+ return self.new_tensor([dfnum, dfden, nonc], None, raw_chunk_size=chunk_size)
37
+
38
+
39
+ def noncentral_f(
40
+ random_state, dfnum, dfden, nonc, size=None, chunk_size=None, gpu=None, dtype=None
41
+ ):
42
+ """
43
+ Draw samples from the noncentral F distribution.
44
+
45
+ Samples are drawn from an F distribution with specified parameters,
46
+ `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
47
+ freedom in denominator), where both parameters > 1.
48
+ `nonc` is the non-centrality parameter.
49
+
50
+ Parameters
51
+ ----------
52
+ dfnum : float or array_like of floats
53
+ Numerator degrees of freedom, should be > 0.
54
+ dfden : float or array_like of floats
55
+ Denominator degrees of freedom, should be > 0.
56
+ nonc : float or array_like of floats
57
+ Non-centrality parameter, the sum of the squares of the numerator
58
+ means, should be >= 0.
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 ``dfnum``, ``dfden``, and ``nonc``
63
+ are all scalars. Otherwise, ``np.broadcast(dfnum, dfden, nonc).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 noncentral Fisher distribution.
76
+
77
+ Notes
78
+ -----
79
+ When calculating the power of an experiment (power = probability of
80
+ rejecting the null hypothesis when a specific alternative is true) the
81
+ non-central F statistic becomes important. When the null hypothesis is
82
+ true, the F statistic follows a central F distribution. When the null
83
+ hypothesis is not true, then it follows a non-central F statistic.
84
+
85
+ References
86
+ ----------
87
+ .. [1] Weisstein, Eric W. "Noncentral F-Distribution."
88
+ From MathWorld--A Wolfram Web Resource.
89
+ http://mathworld.wolfram.com/NoncentralF-Distribution.html
90
+ .. [2] Wikipedia, "Noncentral F-distribution",
91
+ http://en.wikipedia.org/wiki/Noncentral_F-distribution
92
+
93
+ Examples
94
+ --------
95
+ In a study, testing for a specific alternative to the null hypothesis
96
+ requires use of the Noncentral F distribution. We need to calculate the
97
+ area in the tail of the distribution that exceeds the value of the F
98
+ distribution for the null hypothesis. We'll plot the two probability
99
+ distributions for comparison.
100
+
101
+ >>> import maxframe.tensor as mt
102
+ >>> import matplotlib.pyplot as plt
103
+
104
+ >>> dfnum = 3 # between group deg of freedom
105
+ >>> dfden = 20 # within groups degrees of freedom
106
+ >>> nonc = 3.0
107
+ >>> nc_vals = mt.random.noncentral_f(dfnum, dfden, nonc, 1000000)
108
+ >>> NF = np.histogram(nc_vals.execute(), bins=50, normed=True) # TODO(jisheng): implement mt.histogram
109
+ >>> c_vals = mt.random.f(dfnum, dfden, 1000000)
110
+ >>> F = np.histogram(c_vals.execute(), bins=50, normed=True)
111
+ >>> plt.plot(F[1][1:], F[0])
112
+ >>> plt.plot(NF[1][1:], NF[0])
113
+ >>> plt.show()
114
+ """
115
+ if dtype is None:
116
+ dtype = (
117
+ np.random.RandomState()
118
+ .noncentral_f(
119
+ handle_array(dfnum), handle_array(dfden), handle_array(nonc), size=(0,)
120
+ )
121
+ .dtype
122
+ )
123
+ size = random_state._handle_size(size)
124
+ seed = gen_random_seeds(1, random_state.to_numpy())[0]
125
+ op = TensorNoncentralF(size=size, seed=seed, gpu=gpu, dtype=dtype)
126
+ return op(dfnum, dfden, nonc, chunk_size=chunk_size)