maxframe 2.0.0b2__cp37-cp37m-win32.whl → 2.3.0rc1__cp37-cp37m-win32.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.
- maxframe/__init__.py +1 -0
- maxframe/_utils.cp37-win32.pyd +0 -0
- maxframe/_utils.pyx +14 -1
- maxframe/codegen/core.py +9 -8
- maxframe/codegen/spe/core.py +1 -1
- maxframe/codegen/spe/dataframe/__init__.py +1 -0
- maxframe/codegen/spe/dataframe/accessors/base.py +18 -0
- maxframe/codegen/spe/dataframe/accessors/dict_.py +25 -130
- maxframe/codegen/spe/dataframe/accessors/list_.py +12 -48
- maxframe/codegen/spe/dataframe/accessors/struct_.py +28 -0
- maxframe/codegen/spe/dataframe/arithmetic.py +7 -2
- maxframe/codegen/spe/dataframe/groupby.py +88 -0
- maxframe/codegen/spe/dataframe/indexing.py +99 -4
- maxframe/codegen/spe/dataframe/merge.py +38 -1
- maxframe/codegen/spe/dataframe/misc.py +11 -33
- maxframe/codegen/spe/dataframe/reduction.py +32 -9
- maxframe/codegen/spe/dataframe/reshape.py +46 -0
- maxframe/codegen/spe/dataframe/sort.py +39 -18
- maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +9 -15
- maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +4 -7
- maxframe/codegen/spe/dataframe/tests/accessors/test_struct.py +75 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +20 -1
- maxframe/codegen/spe/dataframe/tests/indexing/test_loc.py +35 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +0 -32
- maxframe/codegen/spe/dataframe/tests/test_groupby.py +81 -18
- maxframe/codegen/spe/dataframe/tests/test_merge.py +27 -1
- maxframe/codegen/spe/dataframe/tests/test_reduction.py +13 -0
- maxframe/codegen/spe/dataframe/tests/test_reshape.py +79 -0
- maxframe/codegen/spe/dataframe/tests/test_sort.py +20 -0
- maxframe/codegen/spe/dataframe/tseries.py +9 -0
- maxframe/codegen/spe/learn/contrib/lightgbm.py +4 -3
- maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +2 -1
- maxframe/codegen/spe/learn/metrics/__init__.py +1 -1
- maxframe/codegen/spe/learn/metrics/_ranking.py +76 -0
- maxframe/codegen/spe/learn/metrics/pairwise.py +51 -0
- maxframe/codegen/spe/learn/metrics/tests/test_pairwise.py +36 -0
- maxframe/codegen/spe/learn/metrics/tests/test_ranking.py +59 -0
- maxframe/codegen/spe/tensor/__init__.py +3 -0
- maxframe/codegen/spe/tensor/datasource.py +1 -0
- maxframe/codegen/spe/tensor/fft.py +74 -0
- maxframe/codegen/spe/tensor/linalg.py +29 -2
- maxframe/codegen/spe/tensor/misc.py +79 -25
- maxframe/codegen/spe/tensor/spatial.py +45 -0
- maxframe/codegen/spe/tensor/statistics.py +44 -0
- maxframe/codegen/spe/tensor/tests/test_fft.py +64 -0
- maxframe/codegen/spe/tensor/tests/test_linalg.py +15 -1
- maxframe/codegen/spe/tensor/tests/test_misc.py +52 -2
- maxframe/codegen/spe/tensor/tests/test_spatial.py +33 -0
- maxframe/codegen/spe/tensor/tests/test_statistics.py +15 -1
- maxframe/codegen/spe/tests/test_spe_codegen.py +6 -12
- maxframe/codegen/spe/utils.py +2 -0
- maxframe/config/config.py +73 -9
- maxframe/config/tests/test_validators.py +13 -1
- maxframe/config/validators.py +49 -0
- maxframe/conftest.py +54 -17
- maxframe/core/accessor.py +2 -2
- maxframe/core/base.py +2 -1
- maxframe/core/entity/core.py +5 -0
- maxframe/core/entity/tileables.py +3 -1
- maxframe/core/graph/core.cp37-win32.pyd +0 -0
- maxframe/core/graph/entity.py +8 -3
- maxframe/core/mode.py +6 -1
- maxframe/core/operator/base.py +9 -2
- maxframe/core/operator/core.py +10 -2
- maxframe/core/operator/utils.py +13 -0
- maxframe/dataframe/__init__.py +12 -5
- maxframe/dataframe/accessors/__init__.py +1 -1
- maxframe/dataframe/accessors/compat.py +45 -0
- maxframe/dataframe/accessors/datetime_/__init__.py +4 -1
- maxframe/dataframe/accessors/dict_/contains.py +7 -16
- maxframe/dataframe/accessors/dict_/core.py +48 -0
- maxframe/dataframe/accessors/dict_/getitem.py +17 -21
- maxframe/dataframe/accessors/dict_/length.py +7 -16
- maxframe/dataframe/accessors/dict_/remove.py +6 -18
- maxframe/dataframe/accessors/dict_/setitem.py +8 -18
- maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +62 -22
- maxframe/dataframe/accessors/list_/__init__.py +2 -2
- maxframe/dataframe/accessors/list_/core.py +48 -0
- maxframe/dataframe/accessors/list_/getitem.py +12 -19
- maxframe/dataframe/accessors/list_/length.py +7 -16
- maxframe/dataframe/accessors/list_/tests/test_list_accessor.py +11 -9
- maxframe/dataframe/accessors/string_/__init__.py +4 -1
- maxframe/dataframe/accessors/struct_/__init__.py +37 -0
- maxframe/dataframe/accessors/struct_/accessor.py +39 -0
- maxframe/dataframe/accessors/struct_/core.py +43 -0
- maxframe/dataframe/accessors/struct_/dtypes.py +53 -0
- maxframe/dataframe/accessors/struct_/field.py +123 -0
- maxframe/dataframe/accessors/struct_/tests/__init__.py +13 -0
- maxframe/dataframe/accessors/struct_/tests/test_struct_accessor.py +91 -0
- maxframe/dataframe/arithmetic/__init__.py +18 -4
- maxframe/dataframe/arithmetic/between.py +106 -0
- maxframe/dataframe/arithmetic/dot.py +237 -0
- maxframe/dataframe/arithmetic/maximum.py +33 -0
- maxframe/dataframe/arithmetic/minimum.py +33 -0
- maxframe/dataframe/arithmetic/{around.py → round.py} +11 -7
- maxframe/dataframe/core.py +161 -224
- maxframe/dataframe/datasource/__init__.py +18 -0
- maxframe/dataframe/datasource/core.py +6 -0
- maxframe/dataframe/datasource/direct.py +57 -0
- maxframe/dataframe/datasource/from_dict.py +124 -0
- maxframe/dataframe/datasource/from_index.py +1 -1
- maxframe/dataframe/datasource/from_records.py +77 -0
- maxframe/dataframe/datasource/from_tensor.py +109 -41
- maxframe/dataframe/datasource/read_csv.py +21 -14
- maxframe/dataframe/datasource/read_odps_query.py +29 -6
- maxframe/dataframe/datasource/read_odps_table.py +32 -10
- maxframe/dataframe/datasource/read_parquet.py +38 -39
- maxframe/dataframe/datasource/tests/test_datasource.py +37 -0
- maxframe/dataframe/datastore/__init__.py +11 -1
- maxframe/dataframe/datastore/direct.py +268 -0
- maxframe/dataframe/datastore/to_csv.py +29 -41
- maxframe/dataframe/datastore/to_odps.py +36 -4
- maxframe/dataframe/extensions/__init__.py +20 -4
- maxframe/dataframe/extensions/apply_chunk.py +32 -6
- maxframe/dataframe/extensions/cartesian_chunk.py +153 -0
- maxframe/dataframe/extensions/collect_kv.py +126 -0
- maxframe/dataframe/extensions/extract_kv.py +177 -0
- maxframe/dataframe/extensions/flatjson.py +2 -1
- maxframe/dataframe/extensions/map_reduce.py +263 -0
- maxframe/dataframe/extensions/rebalance.py +62 -0
- maxframe/dataframe/extensions/tests/test_apply_chunk.py +9 -2
- maxframe/dataframe/extensions/tests/test_extensions.py +54 -0
- maxframe/dataframe/extensions/tests/test_map_reduce.py +135 -0
- maxframe/dataframe/groupby/__init__.py +17 -2
- maxframe/dataframe/groupby/aggregation.py +86 -49
- maxframe/dataframe/groupby/apply.py +1 -1
- maxframe/dataframe/groupby/apply_chunk.py +19 -5
- maxframe/dataframe/groupby/core.py +116 -16
- maxframe/dataframe/groupby/cum.py +4 -25
- maxframe/dataframe/groupby/expanding.py +264 -0
- maxframe/dataframe/groupby/fill.py +1 -1
- maxframe/dataframe/groupby/getitem.py +12 -5
- maxframe/dataframe/groupby/head.py +11 -1
- maxframe/dataframe/groupby/rank.py +136 -0
- maxframe/dataframe/groupby/rolling.py +206 -0
- maxframe/dataframe/groupby/shift.py +114 -0
- maxframe/dataframe/groupby/tests/test_groupby.py +0 -5
- maxframe/dataframe/indexing/__init__.py +22 -2
- maxframe/dataframe/indexing/droplevel.py +195 -0
- maxframe/dataframe/indexing/filter.py +169 -0
- maxframe/dataframe/indexing/get_level_values.py +76 -0
- maxframe/dataframe/indexing/iat.py +45 -0
- maxframe/dataframe/indexing/iloc.py +152 -12
- maxframe/dataframe/indexing/insert.py +46 -18
- maxframe/dataframe/indexing/loc.py +287 -7
- maxframe/dataframe/indexing/reindex.py +14 -5
- maxframe/dataframe/indexing/rename.py +6 -0
- maxframe/dataframe/indexing/rename_axis.py +2 -2
- maxframe/dataframe/indexing/reorder_levels.py +143 -0
- maxframe/dataframe/indexing/reset_index.py +33 -6
- maxframe/dataframe/indexing/sample.py +8 -0
- maxframe/dataframe/indexing/setitem.py +3 -3
- maxframe/dataframe/indexing/swaplevel.py +185 -0
- maxframe/dataframe/indexing/take.py +99 -0
- maxframe/dataframe/indexing/truncate.py +140 -0
- maxframe/dataframe/indexing/where.py +0 -11
- maxframe/dataframe/indexing/xs.py +148 -0
- maxframe/dataframe/merge/__init__.py +15 -1
- maxframe/dataframe/merge/append.py +97 -98
- maxframe/dataframe/merge/combine.py +244 -0
- maxframe/dataframe/merge/combine_first.py +120 -0
- maxframe/dataframe/merge/compare.py +387 -0
- maxframe/dataframe/merge/concat.py +183 -0
- maxframe/dataframe/merge/update.py +271 -0
- maxframe/dataframe/misc/__init__.py +28 -11
- maxframe/dataframe/misc/_duplicate.py +10 -4
- maxframe/dataframe/misc/apply.py +1 -1
- maxframe/dataframe/misc/check_unique.py +82 -0
- maxframe/dataframe/misc/clip.py +145 -0
- maxframe/dataframe/misc/describe.py +175 -9
- maxframe/dataframe/misc/drop.py +31 -0
- maxframe/dataframe/misc/drop_duplicates.py +2 -2
- maxframe/dataframe/misc/duplicated.py +2 -2
- maxframe/dataframe/misc/get_dummies.py +5 -1
- maxframe/dataframe/misc/infer_dtypes.py +251 -0
- maxframe/dataframe/misc/isin.py +2 -2
- maxframe/dataframe/misc/map.py +125 -18
- maxframe/dataframe/misc/repeat.py +159 -0
- maxframe/dataframe/misc/tests/test_misc.py +48 -3
- maxframe/dataframe/misc/to_numeric.py +3 -0
- maxframe/dataframe/misc/transform.py +12 -5
- maxframe/dataframe/misc/transpose.py +13 -1
- maxframe/dataframe/misc/valid_index.py +115 -0
- maxframe/dataframe/misc/value_counts.py +38 -4
- maxframe/dataframe/missing/checkna.py +14 -6
- maxframe/dataframe/missing/dropna.py +5 -0
- maxframe/dataframe/missing/fillna.py +1 -1
- maxframe/dataframe/missing/replace.py +7 -4
- maxframe/dataframe/reduction/__init__.py +35 -16
- maxframe/dataframe/reduction/aggregation.py +43 -14
- maxframe/dataframe/reduction/all.py +2 -2
- maxframe/dataframe/reduction/any.py +2 -2
- maxframe/dataframe/reduction/argmax.py +103 -0
- maxframe/dataframe/reduction/argmin.py +103 -0
- maxframe/dataframe/reduction/core.py +80 -24
- maxframe/dataframe/reduction/count.py +13 -9
- maxframe/dataframe/reduction/cov.py +166 -0
- maxframe/dataframe/reduction/cummax.py +2 -2
- maxframe/dataframe/reduction/cummin.py +2 -2
- maxframe/dataframe/reduction/cumprod.py +2 -2
- maxframe/dataframe/reduction/cumsum.py +2 -2
- maxframe/dataframe/reduction/custom_reduction.py +2 -2
- maxframe/dataframe/reduction/idxmax.py +185 -0
- maxframe/dataframe/reduction/idxmin.py +185 -0
- maxframe/dataframe/reduction/kurtosis.py +37 -30
- maxframe/dataframe/reduction/max.py +2 -2
- maxframe/dataframe/reduction/mean.py +9 -7
- maxframe/dataframe/reduction/median.py +2 -2
- maxframe/dataframe/reduction/min.py +2 -2
- maxframe/dataframe/reduction/mode.py +144 -0
- maxframe/dataframe/reduction/nunique.py +19 -11
- maxframe/dataframe/reduction/prod.py +18 -13
- maxframe/dataframe/reduction/reduction_size.py +2 -2
- maxframe/dataframe/reduction/sem.py +13 -9
- maxframe/dataframe/reduction/skew.py +31 -27
- maxframe/dataframe/reduction/str_concat.py +10 -7
- maxframe/dataframe/reduction/sum.py +18 -14
- maxframe/dataframe/reduction/tests/test_reduction.py +12 -0
- maxframe/dataframe/reduction/unique.py +20 -3
- maxframe/dataframe/reduction/var.py +16 -12
- maxframe/dataframe/reshape/__init__.py +38 -0
- maxframe/dataframe/{misc → reshape}/pivot.py +1 -0
- maxframe/dataframe/{misc → reshape}/pivot_table.py +1 -0
- maxframe/dataframe/reshape/unstack.py +114 -0
- maxframe/dataframe/sort/__init__.py +16 -1
- maxframe/dataframe/sort/argsort.py +68 -0
- maxframe/dataframe/sort/core.py +2 -1
- maxframe/dataframe/sort/nlargest.py +238 -0
- maxframe/dataframe/sort/nsmallest.py +228 -0
- maxframe/dataframe/sort/rank.py +147 -0
- maxframe/dataframe/statistics/__init__.py +3 -3
- maxframe/dataframe/statistics/corr.py +1 -0
- maxframe/dataframe/statistics/quantile.py +2 -2
- maxframe/dataframe/tests/test_typing.py +104 -0
- maxframe/dataframe/tests/test_utils.py +66 -2
- maxframe/dataframe/tseries/__init__.py +19 -0
- maxframe/dataframe/tseries/at_time.py +61 -0
- maxframe/dataframe/tseries/between_time.py +122 -0
- maxframe/dataframe/typing_.py +185 -0
- maxframe/dataframe/utils.py +125 -52
- maxframe/dataframe/window/aggregation.py +8 -4
- maxframe/dataframe/window/core.py +14 -1
- maxframe/dataframe/window/ewm.py +1 -3
- maxframe/dataframe/window/expanding.py +37 -35
- maxframe/dataframe/window/rolling.py +49 -39
- maxframe/dataframe/window/tests/test_expanding.py +1 -7
- maxframe/dataframe/window/tests/test_rolling.py +1 -1
- maxframe/env.py +7 -4
- maxframe/errors.py +2 -2
- maxframe/io/odpsio/schema.py +9 -3
- maxframe/io/odpsio/tableio.py +7 -2
- maxframe/io/odpsio/tests/test_schema.py +198 -83
- maxframe/learn/__init__.py +10 -2
- maxframe/learn/cluster/__init__.py +15 -0
- maxframe/learn/cluster/_kmeans.py +782 -0
- maxframe/learn/contrib/llm/core.py +18 -7
- maxframe/learn/contrib/llm/deploy/__init__.py +13 -0
- maxframe/learn/contrib/llm/deploy/config.py +221 -0
- maxframe/learn/contrib/llm/deploy/core.py +247 -0
- maxframe/learn/contrib/llm/deploy/framework.py +35 -0
- maxframe/learn/contrib/llm/deploy/loader.py +360 -0
- maxframe/learn/contrib/llm/deploy/tests/__init__.py +13 -0
- maxframe/learn/contrib/llm/deploy/tests/test_register_models.py +359 -0
- maxframe/learn/contrib/llm/models/__init__.py +1 -0
- maxframe/learn/contrib/llm/models/dashscope.py +12 -6
- maxframe/learn/contrib/llm/models/managed.py +76 -11
- maxframe/learn/contrib/llm/models/openai.py +72 -0
- maxframe/learn/contrib/llm/tests/__init__.py +13 -0
- maxframe/learn/contrib/llm/tests/test_core.py +34 -0
- maxframe/learn/contrib/llm/tests/test_openai.py +187 -0
- maxframe/learn/contrib/llm/tests/test_text_gen.py +155 -0
- maxframe/learn/contrib/llm/text.py +348 -42
- maxframe/learn/contrib/models.py +4 -1
- maxframe/learn/contrib/xgboost/classifier.py +2 -0
- maxframe/learn/contrib/xgboost/core.py +113 -4
- maxframe/learn/contrib/xgboost/predict.py +4 -2
- maxframe/learn/contrib/xgboost/regressor.py +5 -0
- maxframe/learn/contrib/xgboost/train.py +7 -2
- maxframe/learn/core.py +66 -0
- maxframe/learn/linear_model/_base.py +58 -1
- maxframe/learn/linear_model/_lin_reg.py +1 -1
- maxframe/learn/metrics/__init__.py +6 -0
- maxframe/learn/metrics/_classification.py +145 -0
- maxframe/learn/metrics/_ranking.py +477 -0
- maxframe/learn/metrics/_scorer.py +60 -0
- maxframe/learn/metrics/pairwise/__init__.py +21 -0
- maxframe/learn/metrics/pairwise/core.py +77 -0
- maxframe/learn/metrics/pairwise/cosine.py +115 -0
- maxframe/learn/metrics/pairwise/euclidean.py +176 -0
- maxframe/learn/metrics/pairwise/haversine.py +96 -0
- maxframe/learn/metrics/pairwise/manhattan.py +80 -0
- maxframe/learn/metrics/pairwise/pairwise.py +127 -0
- maxframe/learn/metrics/pairwise/pairwise_distances_topk.py +121 -0
- maxframe/learn/metrics/pairwise/rbf_kernel.py +51 -0
- maxframe/learn/metrics/tests/__init__.py +13 -0
- maxframe/learn/metrics/tests/test_scorer.py +26 -0
- maxframe/learn/preprocessing/_data/min_max_scaler.py +34 -23
- maxframe/learn/preprocessing/_data/standard_scaler.py +34 -25
- maxframe/learn/utils/__init__.py +2 -1
- maxframe/learn/utils/checks.py +1 -2
- maxframe/learn/utils/core.py +59 -0
- maxframe/learn/utils/extmath.py +79 -9
- maxframe/learn/utils/odpsio.py +262 -0
- maxframe/learn/utils/validation.py +2 -2
- maxframe/lib/compat.py +40 -0
- maxframe/lib/dtypes_extension/__init__.py +16 -1
- maxframe/lib/dtypes_extension/_fake_arrow_dtype.py +604 -0
- maxframe/lib/dtypes_extension/blob.py +304 -0
- maxframe/lib/dtypes_extension/dtypes.py +40 -0
- maxframe/lib/dtypes_extension/tests/test_blob.py +88 -0
- maxframe/lib/dtypes_extension/tests/test_dtypes.py +16 -1
- maxframe/lib/dtypes_extension/tests/test_fake_arrow_dtype.py +75 -0
- maxframe/lib/filesystem/_oss_lib/common.py +124 -50
- maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
- maxframe/lib/filesystem/_oss_lib/handle.py +21 -25
- maxframe/lib/filesystem/base.py +1 -1
- maxframe/lib/filesystem/core.py +1 -1
- maxframe/lib/filesystem/oss.py +115 -46
- maxframe/lib/filesystem/tests/test_oss.py +74 -36
- maxframe/lib/mmh3.cp37-win32.pyd +0 -0
- maxframe/lib/wrapped_pickle.py +10 -0
- maxframe/opcodes.py +41 -15
- maxframe/protocol.py +12 -0
- maxframe/remote/core.py +4 -0
- maxframe/serialization/__init__.py +11 -2
- maxframe/serialization/arrow.py +38 -13
- maxframe/serialization/blob.py +32 -0
- maxframe/serialization/core.cp37-win32.pyd +0 -0
- maxframe/serialization/core.pyx +39 -1
- maxframe/serialization/exception.py +2 -4
- maxframe/serialization/numpy.py +11 -0
- maxframe/serialization/pandas.py +46 -9
- maxframe/serialization/serializables/core.py +2 -2
- maxframe/serialization/tests/test_serial.py +31 -4
- maxframe/tensor/__init__.py +38 -8
- maxframe/tensor/arithmetic/__init__.py +19 -10
- maxframe/tensor/arithmetic/core.py +2 -2
- maxframe/tensor/arithmetic/iscomplexobj.py +53 -0
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +6 -9
- maxframe/tensor/core.py +6 -2
- maxframe/tensor/datasource/tests/test_datasource.py +2 -1
- maxframe/tensor/extensions/__init__.py +2 -0
- maxframe/tensor/extensions/apply_chunk.py +3 -3
- maxframe/tensor/extensions/rebalance.py +65 -0
- maxframe/tensor/fft/__init__.py +32 -0
- maxframe/tensor/fft/core.py +168 -0
- maxframe/tensor/fft/fft.py +112 -0
- maxframe/tensor/fft/fft2.py +118 -0
- maxframe/tensor/fft/fftfreq.py +80 -0
- maxframe/tensor/fft/fftn.py +123 -0
- maxframe/tensor/fft/fftshift.py +79 -0
- maxframe/tensor/fft/hfft.py +112 -0
- maxframe/tensor/fft/ifft.py +114 -0
- maxframe/tensor/fft/ifft2.py +115 -0
- maxframe/tensor/fft/ifftn.py +123 -0
- maxframe/tensor/fft/ifftshift.py +73 -0
- maxframe/tensor/fft/ihfft.py +93 -0
- maxframe/tensor/fft/irfft.py +118 -0
- maxframe/tensor/fft/irfft2.py +62 -0
- maxframe/tensor/fft/irfftn.py +114 -0
- maxframe/tensor/fft/rfft.py +116 -0
- maxframe/tensor/fft/rfft2.py +63 -0
- maxframe/tensor/fft/rfftfreq.py +87 -0
- maxframe/tensor/fft/rfftn.py +113 -0
- maxframe/tensor/indexing/fill_diagonal.py +1 -7
- maxframe/tensor/linalg/__init__.py +7 -0
- maxframe/tensor/linalg/_einsumfunc.py +1025 -0
- maxframe/tensor/linalg/cholesky.py +117 -0
- maxframe/tensor/linalg/einsum.py +339 -0
- maxframe/tensor/linalg/lstsq.py +100 -0
- maxframe/tensor/linalg/matrix_norm.py +75 -0
- maxframe/tensor/linalg/norm.py +249 -0
- maxframe/tensor/linalg/solve.py +72 -0
- maxframe/tensor/linalg/solve_triangular.py +2 -2
- maxframe/tensor/linalg/vector_norm.py +113 -0
- maxframe/tensor/misc/__init__.py +24 -1
- maxframe/tensor/misc/argwhere.py +72 -0
- maxframe/tensor/misc/array_split.py +46 -0
- maxframe/tensor/misc/broadcast_arrays.py +57 -0
- maxframe/tensor/misc/copyto.py +130 -0
- maxframe/tensor/misc/delete.py +104 -0
- maxframe/tensor/misc/dsplit.py +68 -0
- maxframe/tensor/misc/ediff1d.py +74 -0
- maxframe/tensor/misc/expand_dims.py +85 -0
- maxframe/tensor/misc/flip.py +90 -0
- maxframe/tensor/misc/fliplr.py +64 -0
- maxframe/tensor/misc/flipud.py +68 -0
- maxframe/tensor/misc/hsplit.py +85 -0
- maxframe/tensor/misc/insert.py +139 -0
- maxframe/tensor/misc/moveaxis.py +83 -0
- maxframe/tensor/misc/result_type.py +88 -0
- maxframe/tensor/misc/roll.py +124 -0
- maxframe/tensor/misc/rollaxis.py +77 -0
- maxframe/tensor/misc/shape.py +89 -0
- maxframe/tensor/misc/split.py +190 -0
- maxframe/tensor/misc/tile.py +109 -0
- maxframe/tensor/misc/vsplit.py +74 -0
- maxframe/tensor/reduction/array_equal.py +2 -1
- maxframe/tensor/sort/__init__.py +2 -0
- maxframe/tensor/sort/argpartition.py +98 -0
- maxframe/tensor/sort/partition.py +228 -0
- maxframe/tensor/spatial/__init__.py +15 -0
- maxframe/tensor/spatial/distance/__init__.py +17 -0
- maxframe/tensor/spatial/distance/cdist.py +421 -0
- maxframe/tensor/spatial/distance/pdist.py +398 -0
- maxframe/tensor/spatial/distance/squareform.py +153 -0
- maxframe/tensor/special/__init__.py +159 -21
- maxframe/tensor/special/airy.py +55 -0
- maxframe/tensor/special/bessel.py +199 -0
- maxframe/tensor/special/core.py +65 -4
- maxframe/tensor/special/ellip_func_integrals.py +155 -0
- maxframe/tensor/special/ellip_harm.py +55 -0
- maxframe/tensor/special/err_fresnel.py +223 -0
- maxframe/tensor/special/gamma_funcs.py +303 -0
- maxframe/tensor/special/hypergeometric_funcs.py +69 -0
- maxframe/tensor/special/info_theory.py +189 -0
- maxframe/tensor/special/misc.py +21 -0
- maxframe/tensor/statistics/__init__.py +6 -0
- maxframe/tensor/statistics/corrcoef.py +77 -0
- maxframe/tensor/statistics/cov.py +222 -0
- maxframe/tensor/statistics/digitize.py +126 -0
- maxframe/tensor/statistics/histogram.py +520 -0
- maxframe/tensor/statistics/median.py +85 -0
- maxframe/tensor/statistics/ptp.py +89 -0
- maxframe/tensor/utils.py +3 -3
- maxframe/tests/test_udf.py +61 -0
- maxframe/tests/test_utils.py +51 -6
- maxframe/tests/utils.py +0 -2
- maxframe/typing_.py +2 -0
- maxframe/udf.py +130 -9
- maxframe/utils.py +254 -27
- {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/METADATA +3 -3
- {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/RECORD +442 -264
- maxframe_client/fetcher.py +35 -4
- maxframe_client/session/odps.py +7 -2
- maxframe_client/session/task.py +8 -1
- maxframe_client/tests/test_fetcher.py +76 -3
- maxframe_client/tests/test_session.py +28 -1
- maxframe/dataframe/arrays.py +0 -864
- /maxframe/dataframe/{misc → reshape}/melt.py +0 -0
- /maxframe/dataframe/{misc → reshape}/stack.py +0 -0
- {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/WHEEL +0 -0
- {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ..utils import implement_scipy, infer_scipy_dtype
|
|
16
|
+
from .core import TensorSpecialMultiOp, _register_special_op
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_register_special_op
|
|
20
|
+
class TensorEllipHarm(TensorSpecialMultiOp):
|
|
21
|
+
_ARG_COUNT = 5
|
|
22
|
+
_func_name = "ellip_harm"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@implement_scipy("scipy.special.ellip_harm")
|
|
26
|
+
@infer_scipy_dtype("scipy.special.ellip_harm")
|
|
27
|
+
def ellip_harm(h2, k2, n, p, s, signm=1, signn=1, **kwargs):
|
|
28
|
+
op = TensorEllipHarm(**kwargs)
|
|
29
|
+
return op(h2, k2, n, p, s, signm, signn)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@_register_special_op
|
|
33
|
+
class TensorEllipHarm2(TensorSpecialMultiOp):
|
|
34
|
+
_ARG_COUNT = 5
|
|
35
|
+
_func_name = "ellip_harm_2"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@implement_scipy("scipy.special.ellip_harm_2")
|
|
39
|
+
@infer_scipy_dtype("scipy.special.ellip_harm_2")
|
|
40
|
+
def ellip_harm_2(h2, k2, n, p, s, **kwargs):
|
|
41
|
+
op = TensorEllipHarm2(**kwargs)
|
|
42
|
+
return op(h2, k2, n, p, s)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@_register_special_op
|
|
46
|
+
class TensorEllipNormal(TensorSpecialMultiOp):
|
|
47
|
+
_ARG_COUNT = 4
|
|
48
|
+
_func_name = "ellip_normal"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@implement_scipy("scipy.special.ellip_normal")
|
|
52
|
+
@infer_scipy_dtype("scipy.special.ellip_normal")
|
|
53
|
+
def ellip_normal(h2, k2, n, p, **kwargs):
|
|
54
|
+
op = TensorEllipNormal(**kwargs)
|
|
55
|
+
return op(h2, k2, n, p)
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ..arithmetic.utils import arithmetic_operator
|
|
16
|
+
from ..utils import implement_scipy, infer_scipy_dtype
|
|
17
|
+
from .core import (
|
|
18
|
+
TensorSpecialMultiOp,
|
|
19
|
+
TensorSpecialUnaryOp,
|
|
20
|
+
TensorSpecialUnaryTupleOp,
|
|
21
|
+
_register_special_op,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_register_special_op
|
|
26
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
27
|
+
class TensorErf(TensorSpecialUnaryOp):
|
|
28
|
+
_func_name = "erf"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@_register_special_op
|
|
32
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
33
|
+
class TensorErfc(TensorSpecialUnaryOp):
|
|
34
|
+
_func_name = "erfc"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@_register_special_op
|
|
38
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
39
|
+
class TensorErfcx(TensorSpecialUnaryOp):
|
|
40
|
+
_func_name = "erfcx"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@_register_special_op
|
|
44
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
45
|
+
class TensorErfi(TensorSpecialUnaryOp):
|
|
46
|
+
_func_name = "erfi"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@_register_special_op
|
|
50
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
51
|
+
class TensorErfinv(TensorSpecialUnaryOp):
|
|
52
|
+
_func_name = "erfinv"
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@_register_special_op
|
|
56
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
57
|
+
class TensorErfcinv(TensorSpecialUnaryOp):
|
|
58
|
+
_func_name = "erfcinv"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@_register_special_op
|
|
62
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
63
|
+
class TensorWofz(TensorSpecialUnaryOp):
|
|
64
|
+
_func_name = "wofz"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@_register_special_op
|
|
68
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
69
|
+
class TensorDawsn(TensorSpecialUnaryOp):
|
|
70
|
+
_func_name = "dawsn"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@_register_special_op
|
|
74
|
+
class TensorFresnel(TensorSpecialUnaryTupleOp):
|
|
75
|
+
_func_name = "fresnel"
|
|
76
|
+
_n_outputs = 2
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@_register_special_op
|
|
80
|
+
class TensorModFresnelP(TensorSpecialUnaryTupleOp):
|
|
81
|
+
_func_name = "modfresnelp"
|
|
82
|
+
_n_outputs = 2
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@_register_special_op
|
|
86
|
+
class TensorModFresnelM(TensorSpecialUnaryTupleOp):
|
|
87
|
+
_func_name = "modfresnelm"
|
|
88
|
+
_n_outputs = 2
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@_register_special_op
|
|
92
|
+
class TensorVoigtProfile(TensorSpecialMultiOp):
|
|
93
|
+
_ARG_COUNT = 3
|
|
94
|
+
_func_name = "voigt_profile"
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@implement_scipy("scipy.special.erf")
|
|
98
|
+
@infer_scipy_dtype("scipy.special.erf")
|
|
99
|
+
def erf(x, out=None, where=None, **kwargs):
|
|
100
|
+
"""
|
|
101
|
+
Returns the error function of complex argument.
|
|
102
|
+
|
|
103
|
+
It is defined as ``2/sqrt(pi)*integral(exp(-t**2), t=0..z)``.
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
x : Tensor
|
|
108
|
+
Input tensor.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
res : Tensor
|
|
113
|
+
The values of the error function at the given points `x`.
|
|
114
|
+
|
|
115
|
+
See Also
|
|
116
|
+
--------
|
|
117
|
+
erfc, erfinv, erfcinv, wofz, erfcx, erfi
|
|
118
|
+
|
|
119
|
+
Notes
|
|
120
|
+
-----
|
|
121
|
+
The cumulative of the unit normal distribution is given by
|
|
122
|
+
``Phi(z) = 1/2[1 + erf(z/sqrt(2))]``.
|
|
123
|
+
|
|
124
|
+
References
|
|
125
|
+
----------
|
|
126
|
+
.. [1] https://en.wikipedia.org/wiki/Error_function
|
|
127
|
+
.. [2] Milton Abramowitz and Irene A. Stegun, eds.
|
|
128
|
+
Handbook of Mathematical Functions with Formulas,
|
|
129
|
+
Graphs, and Mathematical Tables. New York: Dover,
|
|
130
|
+
1972. http://www.math.sfu.ca/~cbm/aands/page_297.htm
|
|
131
|
+
.. [3] Steven G. Johnson, Faddeeva W function implementation.
|
|
132
|
+
http://ab-initio.mit.edu/Faddeeva
|
|
133
|
+
|
|
134
|
+
Examples
|
|
135
|
+
--------
|
|
136
|
+
>>> import maxframe.tensor as mt
|
|
137
|
+
>>> from maxframe.tensor import special
|
|
138
|
+
>>> import matplotlib.pyplot as plt
|
|
139
|
+
>>> x = mt.linspace(-3, 3)
|
|
140
|
+
>>> plt.plot(x, special.erf(x))
|
|
141
|
+
>>> plt.xlabel('$x$')
|
|
142
|
+
>>> plt.ylabel('$erf(x)$')
|
|
143
|
+
>>> plt.show()
|
|
144
|
+
"""
|
|
145
|
+
op = TensorErf(**kwargs)
|
|
146
|
+
return op(x, out=out, where=where)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@implement_scipy("scipy.special.erfc")
|
|
150
|
+
@infer_scipy_dtype("scipy.special.erfc")
|
|
151
|
+
def erfc(x, out=None, where=None, **kwargs):
|
|
152
|
+
op = TensorErfc(**kwargs)
|
|
153
|
+
return op(x, out=out, where=where)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
@implement_scipy("scipy.special.erfcx")
|
|
157
|
+
@infer_scipy_dtype("scipy.special.erfcx")
|
|
158
|
+
def erfcx(x, out=None, where=None, **kwargs):
|
|
159
|
+
op = TensorErfcx(**kwargs)
|
|
160
|
+
return op(x, out=out, where=where)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
@implement_scipy("scipy.special.erfi")
|
|
164
|
+
@infer_scipy_dtype("scipy.special.erfi")
|
|
165
|
+
def erfi(x, out=None, where=None, **kwargs):
|
|
166
|
+
op = TensorErfi(**kwargs)
|
|
167
|
+
return op(x, out=out, where=where)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@implement_scipy("scipy.special.erfinv")
|
|
171
|
+
@infer_scipy_dtype("scipy.special.erfinv")
|
|
172
|
+
def erfinv(x, out=None, where=None, **kwargs):
|
|
173
|
+
op = TensorErfinv(**kwargs)
|
|
174
|
+
return op(x, out=out, where=where)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
@implement_scipy("scipy.special.erfcinv")
|
|
178
|
+
@infer_scipy_dtype("scipy.special.erfcinv")
|
|
179
|
+
def erfcinv(x, out=None, where=None, **kwargs):
|
|
180
|
+
op = TensorErfcinv(**kwargs)
|
|
181
|
+
return op(x, out=out, where=where)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
@implement_scipy("scipy.special.wofz")
|
|
185
|
+
@infer_scipy_dtype("scipy.special.wofz")
|
|
186
|
+
def wofz(x, out=None, where=None, **kwargs):
|
|
187
|
+
op = TensorWofz(**kwargs)
|
|
188
|
+
return op(x, out=out, where=where)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
@implement_scipy("scipy.special.dawsn")
|
|
192
|
+
@infer_scipy_dtype("scipy.special.dawsn")
|
|
193
|
+
def dawsn(x, out=None, where=None, **kwargs):
|
|
194
|
+
op = TensorDawsn(**kwargs)
|
|
195
|
+
return op(x, out=out, where=where)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
@implement_scipy("scipy.special.fresnel")
|
|
199
|
+
@infer_scipy_dtype("scipy.special.fresnel", multi_outputs=True)
|
|
200
|
+
def fresnel(x, out=None, **kwargs):
|
|
201
|
+
op = TensorFresnel(**kwargs)
|
|
202
|
+
return op(x, out=out)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
@implement_scipy("scipy.special.modfresnelp")
|
|
206
|
+
@infer_scipy_dtype("scipy.special.modfresnelp", multi_outputs=True)
|
|
207
|
+
def modfresnelp(x, out=None, **kwargs):
|
|
208
|
+
op = TensorModFresnelP(**kwargs)
|
|
209
|
+
return op(x, out=out)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
@implement_scipy("scipy.special.modfresnelm")
|
|
213
|
+
@infer_scipy_dtype("scipy.special.modfresnelm", multi_outputs=True)
|
|
214
|
+
def modfresnelm(x, out=None, **kwargs):
|
|
215
|
+
op = TensorModFresnelM(**kwargs)
|
|
216
|
+
return op(x, out=out)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@implement_scipy("scipy.special.voigt_profile")
|
|
220
|
+
@infer_scipy_dtype("scipy.special.voigt_profile")
|
|
221
|
+
def voigt_profile(x, sigma, gamma, **kwargs):
|
|
222
|
+
op = TensorVoigtProfile(**kwargs)
|
|
223
|
+
return op(x, sigma, gamma)
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ..arithmetic.utils import arithmetic_operator
|
|
16
|
+
from ..utils import implement_scipy, infer_scipy_dtype
|
|
17
|
+
from .core import (
|
|
18
|
+
TensorSpecialBinOp,
|
|
19
|
+
TensorSpecialMultiOp,
|
|
20
|
+
TensorSpecialUnaryOp,
|
|
21
|
+
_register_special_op,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class NoOrderSpecialMixin:
|
|
26
|
+
@classmethod
|
|
27
|
+
def _get_func(cls, xp):
|
|
28
|
+
func = super()._get_func(xp)
|
|
29
|
+
|
|
30
|
+
def _wrapped(*args, **kw):
|
|
31
|
+
kw.pop("order", None)
|
|
32
|
+
return func(*args, **kw)
|
|
33
|
+
|
|
34
|
+
return _wrapped
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@_register_special_op
|
|
38
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
39
|
+
class TensorGamma(TensorSpecialUnaryOp):
|
|
40
|
+
_func_name = "gamma"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@implement_scipy("scipy.special.gamma")
|
|
44
|
+
@infer_scipy_dtype("scipy.special.gamma")
|
|
45
|
+
def gamma(x, **kwargs):
|
|
46
|
+
op = TensorGamma(**kwargs)
|
|
47
|
+
return op(x)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@_register_special_op
|
|
51
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
52
|
+
class TensorGammaln(TensorSpecialUnaryOp):
|
|
53
|
+
_func_name = "gammaln"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@implement_scipy("scipy.special.gammaln")
|
|
57
|
+
@infer_scipy_dtype("scipy.special.gammaln")
|
|
58
|
+
def gammaln(x, out=None, where=None, **kwargs):
|
|
59
|
+
"""
|
|
60
|
+
Logarithm of the absolute value of the Gamma function.
|
|
61
|
+
|
|
62
|
+
Parameters
|
|
63
|
+
----------
|
|
64
|
+
x : array-like
|
|
65
|
+
Values on the real line at which to compute ``gammaln``
|
|
66
|
+
out : Tensor, None, or tuple of Tensor and None, optional
|
|
67
|
+
A location into which the result is stored. If provided, it must have
|
|
68
|
+
a shape that the inputs broadcast to. If not provided or `None`,
|
|
69
|
+
a freshly-allocated tensor is returned. A tuple (possible only as a
|
|
70
|
+
keyword argument) must have length equal to the number of outputs.
|
|
71
|
+
where : array_like, optional
|
|
72
|
+
Values of True indicate to calculate the ufunc at that position, values
|
|
73
|
+
of False indicate to leave the value in the output alone.
|
|
74
|
+
**kwargs
|
|
75
|
+
|
|
76
|
+
Returns
|
|
77
|
+
-------
|
|
78
|
+
gammaln : Tensor
|
|
79
|
+
Values of ``gammaln`` at x.
|
|
80
|
+
|
|
81
|
+
See Also
|
|
82
|
+
--------
|
|
83
|
+
gammasgn : sign of the gamma function
|
|
84
|
+
loggamma : principal branch of the logarithm of the gamma function
|
|
85
|
+
|
|
86
|
+
Notes
|
|
87
|
+
-----
|
|
88
|
+
When used in conjunction with `gammasgn`, this function is useful
|
|
89
|
+
for working in logspace on the real axis without having to deal with
|
|
90
|
+
complex numbers, via the relation ``exp(gammaln(x)) = gammasgn(x)*gamma(x)``.
|
|
91
|
+
|
|
92
|
+
For complex-valued log-gamma, use `loggamma` instead of `gammaln`.
|
|
93
|
+
"""
|
|
94
|
+
op = TensorGammaln(**kwargs)
|
|
95
|
+
return op(x, out=out, where=where)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@_register_special_op
|
|
99
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
100
|
+
class TensorLogGamma(TensorSpecialUnaryOp):
|
|
101
|
+
_func_name = "loggamma"
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
@implement_scipy("scipy.special.loggamma")
|
|
105
|
+
@infer_scipy_dtype("scipy.special.loggamma")
|
|
106
|
+
def loggamma(x, **kwargs):
|
|
107
|
+
op = TensorLogGamma(**kwargs)
|
|
108
|
+
return op(x)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@_register_special_op
|
|
112
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
113
|
+
class TensorGammaSgn(TensorSpecialUnaryOp):
|
|
114
|
+
_func_name = "gammasgn"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@implement_scipy("scipy.special.gammasgn")
|
|
118
|
+
@infer_scipy_dtype("scipy.special.gammasgn")
|
|
119
|
+
def gammasgn(x, **kwargs):
|
|
120
|
+
op = TensorGammaSgn(**kwargs)
|
|
121
|
+
return op(x)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
@_register_special_op
|
|
125
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
126
|
+
class TensorGammaInc(TensorSpecialBinOp):
|
|
127
|
+
_func_name = "gammainc"
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@implement_scipy("scipy.special.gammainc")
|
|
131
|
+
@infer_scipy_dtype("scipy.special.gammainc")
|
|
132
|
+
def gammainc(a, b, **kwargs):
|
|
133
|
+
op = TensorGammaInc(**kwargs)
|
|
134
|
+
return op(a, b)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
@_register_special_op
|
|
138
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
139
|
+
class TensorGammaIncInv(TensorSpecialBinOp):
|
|
140
|
+
_func_name = "gammaincinv"
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
@implement_scipy("scipy.special.gammaincinv")
|
|
144
|
+
@infer_scipy_dtype("scipy.special.gammaincinv")
|
|
145
|
+
def gammaincinv(a, b, **kwargs):
|
|
146
|
+
op = TensorGammaIncInv(**kwargs)
|
|
147
|
+
return op(a, b)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@_register_special_op
|
|
151
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
152
|
+
class TensorGammaIncc(TensorSpecialBinOp):
|
|
153
|
+
_func_name = "gammaincc"
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
@implement_scipy("scipy.special.gammainc")
|
|
157
|
+
@infer_scipy_dtype("scipy.special.gammainc")
|
|
158
|
+
def gammaincc(a, b, **kwargs):
|
|
159
|
+
op = TensorGammaIncc(**kwargs)
|
|
160
|
+
return op(a, b)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
@_register_special_op
|
|
164
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
165
|
+
class TensorGammaInccInv(TensorSpecialBinOp):
|
|
166
|
+
_func_name = "gammainccinv"
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
@implement_scipy("scipy.special.gammainccinv")
|
|
170
|
+
@infer_scipy_dtype("scipy.special.gammainccinv")
|
|
171
|
+
def gammainccinv(a, b, **kwargs):
|
|
172
|
+
op = TensorGammaInccInv(**kwargs)
|
|
173
|
+
return op(a, b)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@_register_special_op
|
|
177
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
178
|
+
class TensorBeta(TensorSpecialBinOp):
|
|
179
|
+
_func_name = "beta"
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@implement_scipy("scipy.special.beta")
|
|
183
|
+
@infer_scipy_dtype("scipy.special.beta")
|
|
184
|
+
def beta(a, b, out=None, **kwargs):
|
|
185
|
+
op = TensorBeta(**kwargs)
|
|
186
|
+
return op(a, b, out=out)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
@_register_special_op
|
|
190
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
191
|
+
class TensorBetaLn(TensorSpecialBinOp):
|
|
192
|
+
_func_name = "betaln"
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@implement_scipy("scipy.special.betaln")
|
|
196
|
+
@infer_scipy_dtype("scipy.special.betaln")
|
|
197
|
+
def betaln(a, b, out=None, **kwargs):
|
|
198
|
+
op = TensorBetaLn(**kwargs)
|
|
199
|
+
return op(a, b, out=out)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
@_register_special_op
|
|
203
|
+
class TensorBetaInc(TensorSpecialMultiOp):
|
|
204
|
+
_ARG_COUNT = 3
|
|
205
|
+
_func_name = "betainc"
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@implement_scipy("scipy.special.betainc")
|
|
209
|
+
@infer_scipy_dtype("scipy.special.betainc")
|
|
210
|
+
def betainc(a, b, x, out=None, **kwargs):
|
|
211
|
+
op = TensorBetaInc(**kwargs)
|
|
212
|
+
return op(a, b, x, out=out)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
@_register_special_op
|
|
216
|
+
class TensorBetaIncInv(TensorSpecialMultiOp):
|
|
217
|
+
_ARG_COUNT = 3
|
|
218
|
+
_func_name = "betaincinv"
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
@implement_scipy("scipy.special.betaincinv")
|
|
222
|
+
@infer_scipy_dtype("scipy.special.betaincinv")
|
|
223
|
+
def betaincinv(a, b, y, out=None, **kwargs):
|
|
224
|
+
op = TensorBetaIncInv(**kwargs)
|
|
225
|
+
return op(a, b, y, out=out)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
@_register_special_op
|
|
229
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
230
|
+
class TensorPsi(TensorSpecialUnaryOp):
|
|
231
|
+
_func_name = "psi"
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
@implement_scipy("scipy.special.psi")
|
|
235
|
+
@infer_scipy_dtype("scipy.special.psi")
|
|
236
|
+
def psi(x, out=None, **kwargs):
|
|
237
|
+
op = TensorPsi(**kwargs)
|
|
238
|
+
return op(x, out=out)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
@_register_special_op
|
|
242
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
243
|
+
class TensorRGamma(TensorSpecialUnaryOp):
|
|
244
|
+
_func_name = "rgamma"
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
@implement_scipy("scipy.special.rgamma")
|
|
248
|
+
@infer_scipy_dtype("scipy.special.rgamma")
|
|
249
|
+
def rgamma(x, out=None, **kwargs):
|
|
250
|
+
op = TensorRGamma(**kwargs)
|
|
251
|
+
return op(x, out=out)
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
@_register_special_op
|
|
255
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
256
|
+
class TensorPolyGamma(NoOrderSpecialMixin, TensorSpecialBinOp):
|
|
257
|
+
_func_name = "polygamma"
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@implement_scipy("scipy.special.polygamma")
|
|
261
|
+
@infer_scipy_dtype("scipy.special.polygamma")
|
|
262
|
+
def polygamma(a, b, **kwargs):
|
|
263
|
+
op = TensorPolyGamma(**kwargs)
|
|
264
|
+
return op(a, b)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
@_register_special_op
|
|
268
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
269
|
+
class TensorMultiGammaLn(NoOrderSpecialMixin, TensorSpecialBinOp):
|
|
270
|
+
_func_name = "multigammaln"
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@implement_scipy("scipy.special.multigammaln")
|
|
274
|
+
@infer_scipy_dtype("scipy.special.multigammaln")
|
|
275
|
+
def multigammaln(a, b, **kwargs):
|
|
276
|
+
op = TensorMultiGammaLn(**kwargs)
|
|
277
|
+
return op(a, b)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
@_register_special_op
|
|
281
|
+
@arithmetic_operator(sparse_mode="unary")
|
|
282
|
+
class TensorDiGamma(TensorSpecialUnaryOp):
|
|
283
|
+
_func_name = "digamma"
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
@implement_scipy("scipy.special.digamma")
|
|
287
|
+
@infer_scipy_dtype("scipy.special.digamma")
|
|
288
|
+
def digamma(x, out=None, **kwargs):
|
|
289
|
+
op = TensorDiGamma(**kwargs)
|
|
290
|
+
return op(x, out=out)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
@_register_special_op
|
|
294
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
295
|
+
class TensorPoch(TensorSpecialBinOp):
|
|
296
|
+
_func_name = "poch"
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
@implement_scipy("scipy.special.poch")
|
|
300
|
+
@infer_scipy_dtype("scipy.special.poch")
|
|
301
|
+
def poch(a, b, **kwargs):
|
|
302
|
+
op = TensorPoch(**kwargs)
|
|
303
|
+
return op(a, b)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Copyright 1999-2025 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ..arithmetic.utils import arithmetic_operator
|
|
16
|
+
from ..utils import implement_scipy, infer_scipy_dtype
|
|
17
|
+
from .core import TensorSpecialBinOp, TensorSpecialMultiOp, _register_special_op
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_register_special_op
|
|
21
|
+
class TensorHYP2F1(TensorSpecialMultiOp):
|
|
22
|
+
_ARG_COUNT = 4
|
|
23
|
+
_func_name = "hyp2f1"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@implement_scipy("scipy.special.hyp2f1")
|
|
27
|
+
@infer_scipy_dtype("scipy.special.hyp2f1")
|
|
28
|
+
def hyp2f1(a, b, c, z, **kwargs):
|
|
29
|
+
op = TensorHYP2F1(**kwargs)
|
|
30
|
+
return op(a, b, c, z)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@_register_special_op
|
|
34
|
+
class TensorHYP1F1(TensorSpecialMultiOp):
|
|
35
|
+
_ARG_COUNT = 3
|
|
36
|
+
_func_name = "hyp1f1"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@implement_scipy("scipy.special.hyp1f1")
|
|
40
|
+
@infer_scipy_dtype("scipy.special.hyp1f1")
|
|
41
|
+
def hyp1f1(a, b, x, out=None, **kwargs):
|
|
42
|
+
op = TensorHYP1F1(**kwargs)
|
|
43
|
+
return op(a, b, x, out=out)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@_register_special_op
|
|
47
|
+
class TensorHYPERU(TensorSpecialMultiOp):
|
|
48
|
+
_ARG_COUNT = 3
|
|
49
|
+
_func_name = "hyperu"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@implement_scipy("scipy.special.hyperu")
|
|
53
|
+
@infer_scipy_dtype("scipy.special.hyperu")
|
|
54
|
+
def hyperu(a, b, x, out=None, **kwargs):
|
|
55
|
+
op = TensorHYPERU(**kwargs)
|
|
56
|
+
return op(a, b, x, out=out)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@_register_special_op
|
|
60
|
+
@arithmetic_operator(sparse_mode="binary_and")
|
|
61
|
+
class TensorHYP0F1(TensorSpecialBinOp):
|
|
62
|
+
_func_name = "hyp0f1"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@implement_scipy("scipy.special.hyp0f1")
|
|
66
|
+
@infer_scipy_dtype("scipy.special.hyp0f1")
|
|
67
|
+
def hyp0f1(v, z, out=None, **kwargs):
|
|
68
|
+
op = TensorHYP0F1(**kwargs)
|
|
69
|
+
return op(v, z, out=out)
|