コード例 #1
0
def activate():
    global original_converter
    # If module is already activated, there is nothing to do
    if original_converter is not None:
        return

    original_converter = conversion.make_converter(
        'snapshot before pandas conversion', template=conversion.converter)
    numpy2ri.activate()
    new_converter = conversion.make_converter(
        'snapshot before pandas conversion', template=conversion.converter)
    numpy2ri.deactivate()

    for k, v in py2ri.registry.items():
        if k is object:
            continue
        new_converter.py2ri.register(k, v)

    for k, v in ri2ro.registry.items():
        if k is object:
            continue
        new_converter.ri2ro.register(k, v)

    for k, v in py2ro.registry.items():
        if k is object:
            continue
        new_converter.py2ro.register(k, v)

    for k, v in ri2py.registry.items():
        if k is object:
            continue
        new_converter.ri2py.register(k, v)

    conversion.converter = new_converter
    name, conversion.ri2ro, conversion.py2ri, conversion.py2ro, conversion.ri2py, lineage = new_converter
コード例 #2
0
def activate():
    global original_converter
    # If module is already activated, there is nothing to do
    if original_converter is not None: 
        return

    original_converter = conversion.make_converter('snapshot before pandas conversion',
                                                   template=conversion.converter)
    numpy2ri.activate()
    new_converter = conversion.make_converter('snapshot before pandas conversion',
                                              template=conversion.converter)
    numpy2ri.deactivate()

    for k,v in py2ri.registry.items():
        if k is object:
            continue
        new_converter.py2ri.register(k, v)

    for k,v in ri2ro.registry.items():
        if k is object:
            continue
        new_converter.ri2ro.register(k, v)
    
    for k,v in py2ro.registry.items():
        if k is object:
            continue
        new_converter.py2ro.register(k, v)

    for k,v in ri2py.registry.items():
        if k is object:
            continue
        new_converter.ri2py.register(k, v)

    conversion.converter = new_converter
    name, conversion.ri2ro, conversion.py2ri, conversion.py2ro, conversion.ri2py, lineage = new_converter
コード例 #3
0
ファイル: numpy2ri.py プロジェクト: scottcode/rpy2
def activate():
    global original_converter

    # If module is already activated, there is nothing to do
    if original_converter is not None: 
        return

    original_converter = conversion.converter
    new_converter = conversion.make_converter(template=original_converter)
    
    for k,v in py2ri.registry.items():
        if k is object:
            continue
        new_converter.py2ri.register(k, v)

    for k,v in ri2ro.registry.items():
        if k is object:
            continue
        new_converter.ri2ro.register(k, v)

    for k,v in py2ro.registry.items():
        if k is object:
            continue
        new_converter.py2ro.register(k, v)

    for k,v in ri2py.registry.items():
        if k is object:
            continue
        new_converter.ri2py.register(k, v)

    conversion.converter = new_converter
    conversion.ri2ro, conversion.py2ri, conversion.py2ro, conversion.ri2py = new_converter
コード例 #4
0
                                   ListVector,
                                   StrVector,
                                   IntVector,
                                   POSIXct)
from rpy2.rinterface import (IntSexpVector,
                             ListSexpVector)
original_converter = None 

# pandas is requiring numpy. We add the numpy conversion will be
# activate in the function activate() below
import rpy2.robjects.numpy2ri as numpy2ri


ISOdatetime = rinterface.baseenv['ISOdatetime']

converter = conversion.make_converter('original pandas conversion')
converter_name, py2ri, ri2ro, py2ro, ri2py, converter_lineage = converter

@py2ri.register(PandasDataFrame)
def py2ri_pandasdataframe(obj):
    od = OrderedDict()
    for name, values in obj.iteritems():
        if values.dtype.kind == 'O':
            od[name] = StrVector(values)
        else:
            od[name] = conversion.py2ri(values)
    return DataFrame(od)


@py2ri.register(PandasIndex)
def py2ri_pandasindex(obj):
コード例 #5
0
ファイル: pandas2ri.py プロジェクト: scottcode/rpy2
from pandas.core.index import Index as PandasIndex
from numpy import recarray

from collections import OrderedDict
from rpy2.robjects.vectors import DataFrame, Vector, ListVector, StrVector, IntVector, POSIXct

original_converter = None 

# pandas is requiring numpy. We add the numpy conversion will be
# activate in the function activate() below
import rpy2.robjects.numpy2ri as numpy2ri


ISOdatetime = rinterface.baseenv['ISOdatetime']

converter = conversion.make_converter()
py2ri, ri2ro, py2ro, ri2py = converter

@py2ri.register(PandasDataFrame)
def py2ri_pandasdataframe(obj):
    od = OrderedDict()
    for name, values in obj.iteritems():
        if values.dtype.kind == 'O':
            od[name] = StrVector(values)
        else:
            od[name] = conversion.py2ri(values)
    return DataFrame(od)


@py2ri.register(PandasIndex)
def py2ri_pandasindex(obj):
コード例 #6
0
    else:

        def __str__(self):
            return unicode_to_str(unicode(self), 'utf-8')


@generic
def pyconverter(pyobj):
    """Convert Python objects to R objects. Add types using the decorator:

    @pyconverter.when_type
    """
    return pyobj


converter = make_converter('ipython conversion', template=template_converter)


# The default conversion for lists is currently to make them an R list. That has
# some advantages, but can be inconvenient (and, it's inconsistent with the way
# python lists are automatically converted by numpy functions), so for
# interactive use in the rmagic, we call unlist, which converts lists to vectors
# **if the list was of uniform (atomic) type**.
@pyconverter.when_type(list)
def pyconverter_list(pyobj):
    # simplify2array is a utility function, but nice for us
    return ro.r.simplify2array(pyobj)


@magics_class
class RMagics(Magics):
コード例 #7
0
    # "V" -> special-cased below
    #FIXME: datetime64 ?
    #"datetime64":
    }

#FIXME: the following would need further thinking & testing on
#       32bits architectures
_kinds['float64'] = rinterface.REALSXP

_vectortypes = (rinterface.LGLSXP,
                rinterface.INTSXP,
                rinterface.REALSXP,
                rinterface.CPLXSXP,
                rinterface.STRSXP)

converter = conversion.make_converter('original numpy conversion')
converter_name, py2ri, ri2ro, py2ro, ri2py, converter_lineage = converter

@py2ri.register(numpy.ndarray)
def numpy2ri(o):
    """ Augmented conversion function, converting numpy arrays into
    rpy2.rinterface-level R structures. """
    if not o.dtype.isnative:
        raise(ValueError("Cannot pass numpy arrays with non-native byte orders at the moment."))

    # Most types map onto R arrays:
    if o.dtype.kind in _kinds:
        # "F" means "use column-major order"
        vec = SexpVector(o.ravel("F"), _kinds[o.dtype.kind])
        dim = SexpVector(o.shape, INTSXP)
        #FIXME: no dimnames ?
コード例 #8
0
import numpy

from collections import OrderedDict
from rpy2.robjects.vectors import (DataFrame, Vector, ListVector, StrVector,
                                   IntVector, POSIXct)
from rpy2.rinterface import (IntSexpVector, ListSexpVector)

original_converter = None

# pandas is requiring numpy. We add the numpy conversion will be
# activate in the function activate() below
import rpy2.robjects.numpy2ri as numpy2ri

ISOdatetime = rinterface.baseenv['ISOdatetime']

converter = conversion.make_converter('original pandas conversion')
converter_name, py2ri, ri2ro, py2ro, ri2py, converter_lineage = converter


@py2ri.register(PandasDataFrame)
def py2ri_pandasdataframe(obj):
    od = OrderedDict()
    for name, values in obj.iteritems():
        if values.dtype.kind == 'O':
            od[name] = StrVector(values)
        else:
            od[name] = conversion.py2ri(values)
    return DataFrame(od)


@py2ri.register(PandasIndex)
コード例 #9
0
ファイル: rmagic.py プロジェクト: tshealy/role-model-results
    if PY3:
        __str__ = __unicode__
    else:
        def __str__(self):
            return unicode_to_str(unicode(self), 'utf-8')

@generic
def pyconverter(pyobj):
    """Convert Python objects to R objects. Add types using the decorator:

    @pyconverter.when_type
    """
    return pyobj


converter = make_converter('ipython conversion',
                           template = template_converter)


# The default conversion for lists is currently to make them an R list. That has
# some advantages, but can be inconvenient (and, it's inconsistent with the way
# python lists are automatically converted by numpy functions), so for
# interactive use in the rmagic, we call unlist, which converts lists to vectors
# **if the list was of uniform (atomic) type**.
@pyconverter.when_type(list)
def pyconverter_list(pyobj):
    # simplify2array is a utility function, but nice for us
    return ro.r.simplify2array(pyobj)


@magics_class
class RMagics(Magics):