Source code for biokit.rtools.session

# -*- python -*-
#
#  This file is part of biokit software
#
#  Copyright (c) 2014-
#
#  File author(s): Thomas Cokelaer <cokelaer@ebi.ac.uk>
#
#  Distributed under the GPLv3 License.
#  See accompanying file LICENSE.txt or copy at
#      http://www.gnu.org/licenses/gpl-3.0.html
#
#  website: https://github.com/biokit
#
##############################################################################
from biokit.rtools import pyper

__all__ = ['RSession']


[docs]class RSession(pyper.R): """Interface to a R session This class uses the pyper package to provide an access to R (via a subprocess). You can call R script and get back the results into the session as Python objects. Returned objects may be transformed into numpy arrays or Pandas datafranes. Here is a very simple example but any complex R scripts can be provided inside the :meth:`run` method:: from biokit.rtools import RSession session = RSession() session.run("mylist = c(1,2,3)") a = session("mylist") # access to the R object a.sum() # a is numpy array There are different ways to access to the R object:: # getter session['a'] # method-wise: session.get('a') # attribute: session.a For now, this is just to inherit from **pyper.R** class but there is no additional features. This is to create a common API. """ def __init__(self, RExecutable='R', max_len=1000, use_dict=None, host='localhost', user=None, ssh='ssh', verbose=False, return_err=True): """ :param str RCMD: the name of the R executable :param max_len: define the upper limitation for the length of command string. A command string will be passed to R by a temporary file if it is longer than this value. :param host: The computer name (or IP) on which the R interpreter is installed. The value "localhost" means that the R locates on the the localhost computer. On POSIX systems (including Cygwin environment on Windows), it is possible to use R on a remote computer if the command "ssh" works. To do that, the user need set this value, and perhaps the parameter "user". :param user: The user name on the remote computer. This value need to be set only if the user name is different on the remote computer. In interactive environment, the password can be input by the user if prompted. If running in a program, the user need to be able to login without typing password! (i.e., you need to set your SSH keys) :param ssh: The program to login to remote computer. :param kargs: must be empty. Error raised otherwise """ from easydev import cmd_exists if host == 'localhost' and cmd_exists(RExecutable) is False: raise Exception('Could not find the R executable %s in your path' % RExecutable) super(RSession, self).__init__(RCMD=RExecutable, max_len=max_len, use_dict=use_dict, host=host, user=user, ssh=ssh, return_err=return_err, dump_stdout=verbose)
[docs] def get_version(self): """Return the R version""" return self.version
def __repr__(self): txt = "Rsession information:" txt += "\nverbosity: " + str(self.verbose) txt += "\ndump_stdout: " + str(self.dump_stdout) txt += "\ndebug mode: " + str(self._DEBUG_MODE) return txt