示例#1
0
from mars.dataframe.datasource.dataframe import from_pandas
from mars.dataframe.datasource.series import from_pandas as from_pandas_series
from mars.dataframe.arithmetic.tests.test_arithmetic import comp_func

binary_functions = dict(
    add=dict(func=operator.add, func_name='add', rfunc_name='radd'),
    subtract=dict(func=operator.sub, func_name='sub', rfunc_name='rsub'),
    multiply=dict(func=operator.mul, func_name='mul', rfunc_name='rmul'),
    floordiv=dict(func=operator.floordiv,
                  func_name='floordiv',
                  rfunc_name='rfloordiv'),
    truediv=dict(func=operator.truediv,
                 func_name='truediv',
                 rfunc_name='rtruediv'),
    power=dict(func=operator.pow, func_name='pow', rfunc_name='rpow'),
    equal=dict(func=comp_func('eq', 'eq'), func_name='eq', rfunc_name='eq'),
    not_equal=dict(func=comp_func('ne', 'ne'), func_name='ne',
                   rfunc_name='ne'),
    greater=dict(func=comp_func('gt', 'lt'), func_name='gt', rfunc_name='lt'),
    less=dict(func=comp_func('lt', 'gt'), func_name='lt', rfunc_name='gt'),
    greater_equal=dict(func=comp_func('ge', 'le'),
                       func_name='ge',
                       rfunc_name='le'),
    less_equal=dict(func=comp_func('le', 'ge'),
                    func_name='le',
                    rfunc_name='ge'),
    logical_and=dict(func=operator.and_,
                     func_name='__and__',
                     rfunc_name='__rand__'),
    logical_or=dict(func=operator.or_,
                    func_name='__or__',
示例#2
0
from mars.dataframe.arithmetic.tests.test_arithmetic import comp_func
from mars.tensor.datasource import array as from_array
from mars.utils import dataslots


@dataslots
@dataclass
class FunctionOptions:
    func: Callable
    func_name: str
    rfunc_name: str


binary_functions = dict(
    add=FunctionOptions(func=operator.add, func_name='add', rfunc_name='radd'),
    equal=FunctionOptions(func=comp_func('eq', 'eq'), func_name='eq', rfunc_name='eq'),
    logical_and=FunctionOptions(func=operator.and_, func_name='__and__', rfunc_name='__rand__'),
)


def to_boolean_if_needed(func_name, value, split_value=0.5):
    if func_name in ['__and__', '__or__', '__xor__']:
        return value > split_value
    else:
        return value


@pytest.mark.parametrize('func_name, func_opts', binary_functions.items())
def test_without_shuffle_execution(setup, func_name, func_opts):
    if func_opts.func_name in ['__and__', '__or__', '__xor__']:
        # FIXME bitwise logical operators behave differently with pandas when index is not aligned.
import numpy as np
import pandas as pd

from mars.tests.core import TestBase, parameterized, ExecutorForTest
from mars import tensor as mt
from mars.tensor.datasource import array as from_array
from mars.dataframe import to_datetime
from mars.dataframe.datasource.dataframe import from_pandas
from mars.dataframe.datasource.series import from_pandas as from_pandas_series
from mars.dataframe.arithmetic.tests.test_arithmetic import comp_func


binary_functions = dict(
    add=dict(func=operator.add, func_name='add', rfunc_name='radd'),
    equal=dict(func=comp_func('eq', 'eq'), func_name='eq', rfunc_name='eq'),
    logical_and=dict(func=operator.and_, func_name='__and__', rfunc_name='__rand__'),
)


@parameterized(**binary_functions)
class TestBinary(TestBase):
    def setUp(self):
        self.executor = ExecutorForTest()

    def to_boolean_if_needed(self, value, split_value=0.5):
        if self.func_name in ['__and__', '__or__', '__xor__']:
            return value > split_value
        else:
            return value