As you know, the core of the SwissQuantumPi simulator has been written in R language. R provides a lot of advantages in terms of performance, code quality and available scientific libraries. But it can be hard and dry for the regular programmer and most of quantum geeks are rather Python addicts. Moreover there are a lot of quantum Python libraries and code samples available.
So let’s try to provide a Python interface to our quantum simulator.
rpy2 is running an embedded R, providing access to it from Python using R’s own C-API through either:
- a high-level interface making R functions an objects just like Python functions and providing a seamless conversion to numpy and pandas data structures
- a low-level interface closer to the C-API
It is also providing features for when working with
jupyter notebooks or
Installing should be as easy as:
sudo apt-get install libffi-dev pip install rpy2
rpy2 provides the
pytest scripts for testing the installation. But these scripts are installed in
'/home/pi/.local/bin' which is not on
PATH. Consider adding this directory to
PATH, by modifying environment variables in
Then test your
rpy2 installation by typing:
pytest --pyargs 'rpy2.tests'
You should get no error message. Eventually, type also:
python -m rpy2.situation
This utility module is included to report what
rpy2’s environment. You should get something like that:
rpy2 version: 3.3.2 Python version: 3.7.3 (default, Dec 20 2019, 18:57:59) [GCC 8.3.0] Looking for R's HOME: Environment variable R_HOME: None Calling `R RHOME`: /usr/lib/R Environment variable R_LIBS_USER: None R's additions to LD_LIBRARY_PATH: /usr/lib/R/lib:/usr/lib/arm-linux-gnueabihf:/usr/lib/jvm/default-java/lib/server R version: In the PATH: R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" Loading R library from rpy2: OK Additional directories to load R packages from: None C extension compilation: include: ['/usr/share/R/include'] libraries: ['R', 'pcre', 'lzma', 'bz2', 'z', 'rt', 'dl', 'm', 'icuuc', 'icui18n'] library_dirs: ['/usr/lib/R/lib'] extra_compile_args:  extra_link_args: ['-Wl,--export-dynamic', '-fopenmp', '-Wl,-z,relro']
rpy2 is running an embedded R. The object
rpy2.robjects.r can be used as rudimentary communication channel between Python and R.
If you want to use the constant pi in R, you have to type:
> pi  3.141593
Within Python, using rpy2, you have to type:
import rpy2.robjects as robjects