RCaller

RCaller: A Java package for interfacing R - Published in JOSS (2020)

https://github.com/jbytecode/rcaller

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

java r

Keywords from Contributors

pde hydrology cryptocurrencies meshes ecology graph-algorithms benchmarking generative-models network-analysis simulations

Scientific Fields

Economics Social Sciences - 60% confidence
Earth and Environmental Sciences Physical Sciences - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

A Java library for calling R.

Basic Info
Statistics
  • Stars: 76
  • Watchers: 12
  • Forks: 39
  • Open Issues: 4
  • Releases: 6
Topics
java r
Created almost 11 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct

README.md

Overview

Join the chat at https://gitter.im/jbytecode/rcaller Build Status Test Status Maven Central status DOI

RCaller is a software library which is developed to simplify calling R from Java. Despite it is not the most efficient way of calling R codes from Java, it is very simple to use and its learning curve is steep. It successfully simplifies and wraps type conversations and makes variables in each languages accessible between platforms. With the calling sequential commands facility, the performance is not lost through a single external process. Although R is single-threaded, multiple R processes can be created and handled by multiple RCaller instances in Java. A Servlet based application can instantiate many RCaller objects as well as it can use a single object by using sequential command invocation ability. The former use multiple environments which do not share the same variable pool, whereas, the latter shares a mutual variable pool and clients can communicate as well. RCaller is written purely in Java and it does not depend on any external libraries, that is, it is ready to run in any machines that Java and R installed. Simulation studies show that the other libraries such as Rserve and rJava outperform the RCaller by means of interaction times. As a result of this, RCaller is not suitable for the projectts which have many clients that request relatively single and small computations. [RCaller: A Software Library for Calling R from Java - M. Hakan Satman]

Official publication

Official publication in JOSS

RCaller3 Documentation

Who uses RCaller?

RCaller is a production ready library for calling R functions from within Java. If you are developing Java software that needs enhanced statistical calculations, RCaller is a practical solution to integrate these languages. R has many well-tested and matured packages for automatic time series model selection, clustering, segmentation and classification, non-linear and robust regression estimations, data and text mining, linear and non-linear programming, generating plots, function optimization besides other research tools. RCaller brings all of the functionality that R serves in Java. Easy installation and integration steps and steep learning curve make RCaller a suitable solution. RCaller's computation overhead is generating XML files in R side and parsing XML to Java objects in Java side.

Dependencies

RCaller compiled jar library requires JRE (v11 or higher) and R installed in the runtime environment. If you want to compile from source, JDK (v11 or higher) and Maven (or Gradle) are also required for building process. Maven is responsible for downloading and install additional Java dependencies defined in pom file. RCaller does not use any version specific property of R.

Usage

It is recommended to take a look at the existing tests and examples

Here is a set of selected examples:

Performance details

RCaller uses XML for reading R output by default. This is lightweight but not very fast way. For speeding up the IO, install R arrow package and add dependencies org.apache.arrow:arrow-vector and org.apache.arrow:arrow-memory-netty to your Java projectt. RCaller will use Arrow format automatically if it is available both in R and Java.

Errors handling can impact performance in online mode and is disabled by default. Use RCaller.runAndReturnResultOnline(String var, boolean addTryCatch) method with addTryCatch = true for throwing R exceptions to Java.

API Docs

Here is the auto-generated Javadocs.

Building and Installing RCaller

There are many options to integrate RCaller with a Java projectt. First option is to download pre-compiled jar file and add it to the classpath or pom.xml. pre-compiled jar files are here.

The second option is to compile from source. R should be installed to run tests. After building process, if everything is okay, a jar file is located in the target directory.

BASH $ git clone https://github.com/jbytecode/rcaller.git $ cd RCaller $ mvn package

The last option is to use maven dependency:

XML <dependency> <groupId>com.github.jbytecode</groupId> <artifactId>RCaller</artifactId> <version>4.0.2</version> </dependency>

The RCaller is located in the Maven Central Repository.

Benchmarks

You can test the performance of the library using the benchmark tool hosted here. This file tests costs of passing vectors and matrices from Java to R and vice versa.

Join us

If you want to join us, please follow the community guidelines here. We look forward to seeing your contributions.

Citation

Please refer to citation information given in file bibtex in your publications.

Owner

  • Name: Mehmet Hakan Satman
  • Login: jbytecode
  • Kind: user
  • Location: Istanbul
  • Company: Istanbul University

Professor of Numerical Methods

JOSS Publication

RCaller: A Java package for interfacing R
Published
November 10, 2020
Volume 5, Issue 55, Page 2722
Authors
Mehmet Hakan Satman ORCID
Department of Econometrics, Istanbul University, Istanbul, Turkey
Kopilov Aleksandr ORCID
Department of Mathematical Optimization and Modeling, BIA-Technologies, Saint Petersburg, Russian Federation
Editor
Mikkel Meyer Andersen ORCID
Tags
statistics data science

GitHub Events

Total
  • Watch event: 4
  • Push event: 5
  • Pull request event: 2
  • Fork event: 1
Last Year
  • Watch event: 4
  • Push event: 5
  • Pull request event: 2
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 440
  • Total Committers: 28
  • Avg Commits per committer: 15.714
  • Development Distribution Score (DDS): 0.457
Past Year
  • Commits: 6
  • Committers: 2
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.167
Top Committers
Name Email Commits
mhsatman m****n@g****m 239
Paul Curcean c****l@g****m 97
Kopilov Aleksandr k****d@g****m 44
jbytecode 7
Alexander Bondarev a****v@t****m 5
hako h****o@h****p 4
Paul Curcean p****l@b****t 4
mbatchkarov m****v@g****m 4
Manuel Muradas m****s@d****r 4
oem o****m@o****r 3
simon.carter s****r@e****k 3
hako = 3
Volker Boerchers v****s 3
dependabot[bot] 4****] 2
SKYLAKE-2016\celthana g****k@g****m 2
kstarosta k@k****e 2
info i****o@i****r 2
hako h****o@h****p 2
mbatchkarov m****v@l****t 1
jbytecode j****e@l****t 1
hako h****o@l****2 1
Paul Curcean p****n@i****t 1
Luke Lai L****i 1
Edinei Piovesan e****e@g****m 1
Making GitHub Delicious i****n@w****o 1
The Gitter Badger b****r@g****m 1
marecabo 2****o 1
stevensotelo s****t@h****m 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 37
  • Total pull requests: 32
  • Average time to close issues: 10 months
  • Average time to close pull requests: 20 days
  • Total issue authors: 25
  • Total pull request authors: 15
  • Average comments per issue: 4.73
  • Average comments per pull request: 0.81
  • Merged pull requests: 30
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 day
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • jbytecode (5)
  • wongjoel (3)
  • VineelaKantamneni (3)
  • mullon-ch (3)
  • dieresys (2)
  • xin-huang (2)
  • d0dge (1)
  • Georim (1)
  • TomDePauw (1)
  • benleblanket (1)
  • bclarens (1)
  • limhi (1)
  • fbastian (1)
  • antonkulaga (1)
  • choweiyuan (1)
Pull Request Authors
  • Kopilov (11)
  • jbytecode (3)
  • dependabot[bot] (3)
  • dieresys (2)
  • mirasrael (2)
  • sjcetx (2)
  • wongjoel (2)
  • waffle-iron (1)
  • gitter-badger (1)
  • vboerchers (1)
  • marecabo (1)
  • ksfx (1)
  • heebtob (1)
  • limhi (1)
  • edineipiovesan (1)
Top Labels
Issue Labels
help wanted (1) discussion (1) question (1)
Pull Request Labels
dependencies (3) java (2)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total docker downloads: 33
  • Total dependent packages: 3
  • Total dependent repositories: 59
  • Total versions: 7
repo1.maven.org: com.github.jbytecode:RCaller

RCaller is a software library which simplifies performing data analysis and statistical calculations in Java using R. The details are hidden from users including transferring data between platforms, function calls, and retrieving results.

  • Versions: 7
  • Dependent Packages: 3
  • Dependent Repositories: 59
  • Docker Downloads: 33
Rankings
Dependent repos count: 2.8%
Docker downloads count: 6.0%
Average: 16.2%
Dependent packages count: 17.6%
Forks count: 25.4%
Stargazers count: 29.1%
Last synced: 4 months ago

Dependencies

RCaller/build.gradle maven
  • org.apache.commons:commons-lang3 3.12.0 implementation
  • junit:junit 4.13.2 testImplementation
RCaller/pom.xml maven
  • org.apache.arrow:arrow-vector [5.0.0,) provided
  • org.apache.commons:commons-lang3 3.12.0
  • junit:junit 4.13.2 test
  • org.apache.arrow:arrow-memory-netty [5.0.0,) test
.github/workflows/maven_build.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v1 composite
.github/workflows/maven_test.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v1 composite