Python wrapping of R climextRemes package
------------------------------------------
## Overview on how the Python package works
1. The climextremes package is just the `python_wrapper/climextremes/__init__.py` file. This gets run when package is loaded.
2. Next is an attempt to install the climextRemes R package, which should pull in the R package dependencies. Note that we try to get the version of climextRemes (R) that matches version of climextremes (python), but there is a fall-back.
3. assuming climextRemes installs, Python calls out to R to figure out where climextRemes_wrapper is and then imports everything from climextRemes_wrapper
4. climextRemes_wrapper goes through and creates Python fxns to wrap the R functions.
## Installation
See user-facing installation instructions in top-level README file of climextremes repository.
## Documentation
To make documentation:
1. Make sure climextremes (Python package, presumably using setup.py method) is installed first.
2. Put new version number into docs/build_sphinx_docs.sh (ideally I'd figure out how to leverage version.py).
3. One needs the Ubuntu latexmk package which is available for 18.04 but not for 16.04.
4. If Roxygen documentation in R package has been updated, make sure you've locally installed the up-to-date R package so don't get old help info from CRAN version of R package.
```
pip install sphinx
pip install sphinx-autodoc-annotation
cd docs
python make_docs.py
```
The `make_docs.py` script should create a documentation template and call `build_sphinx_docs.sh`. This script should then create the makefile and call make html and make latexpdf.
Note there are a couple warnings about formatting in fit_gev and fit_pot that I haven't been able to figure out.
```
/accounts/gen/vis/paciorek/.local/lib/python3.7/site-packages/climextremes/__init__.py:docstring of climextremes.fit_gev:84: WARNING: Block quote ends without a blank line; unexpected unindent.
/accounts/gen/vis/paciorek/.local/lib/python3.7/site-packages/climextremes/__init__.py:docstring of climextremes.fit_pot:100: WARNING: Block quote ends without a blank line; unexpected unindent.
```
## Building for installation via pip and conda.
See the README.md files in the pip and conda directories.
## Other notes
To update version number one should be able to change this in only python_wrapper/version.py.
The Python package should be OS- and Python3-version- independent. See more details here: https://www.anaconda.com/condas-new-noarch-packages/
To build the Python package see inst/pip/README.md or inst/conda/README.md.
When debugging, if needed one can directly modify contents of .py files in the installed R climextRemes package (e.g., ~/R/x86.../3.5/climextRemes/*)
numpy,pandas,rpy2,tzlocal apparently required in conda meta.yaml build: stanza. Not clear why but if try to only have python and setuptools in build: you get this:
```
Processing dependencies for climextremes==0.2.1rc8
Searching for tzlocal
Traceback (most recent call last):
File "setup.py", line 75, in <module>
install_requires=['numpy', 'pandas', 'rpy2', 'tzlocal'],
File "/accounts/gen/vis/paciorek/.conda/envs/climextremes_build_min/conda-bld/climextremes_1556215226148/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
return distutils.core.setup(**attrs)
```
Don't need compilers in dependencies as conda r package pulls them in, specific for an OS.
noarch version seems to be Python version independent (at least for Python 3).
conda R packages always installed from source.
r-rcpparmadillo avoids an issue with installing RcppArmadillo at run-time. RcppArmadillo is pulled in by climextRemes dependencies.
rpy2 pulls in Rcpp, which is needed for a climextRemes dependency.
Could try to set up build.sh and bld.bat to install R packages (including climextRemes) at install time, but might be harder to debug user issues.
When import climextremes, the code in `__init__.py` tries to install climextRemes. It can fail (e.g. I've seen download from cran.r-project.us fail) and in that case in line 91 of __init__.py it can be unable to find climextRemes_wrapper because `__climextRemes_python_path__` not set so it can't find it in the python dir in the installed R package.
Note that the code in climextRemes_wrapper.py could be in the Python package but as it is now the same Python wrapper can point to different R versions and we bundle the Python code with the R version.
The only thing permanent in inst/python_wrapper is `climextremes/__init__.py` (the actual Python package code), docs, setup.py and metadata files (COPYRIGHTS.txt, LICENSE.txt, version.py, README.md) . All the rest has been created during experiments with building the package.
Building package uses setup.py, which is the build script for setuptools.
conda-forge approach should be able to install from pypi tarball via staged recipe.
conda-forge recipe should be able to avoid usage of build.sh/bld.bat
In some cases if one doesn't force rpy2 >=2.9.4, Conda installation will pull in rpy2=2.8.5, r=3.3.1, and there will be problems. Not clear why.
As of August 2020, default Conda channel has rpy2 2.9.4 but pulls in pandas >= 1.0.0, which causes a run-time error because of an apparent rpy2-pandas incompatibility. conda-forge has new rpy2 but it doesn't seem possible to force use of a channel in the conda meta.yaml, nor does asking for rpy2 >=3.0.0 work when building the Conda package.
As of July 2022, I've modified the Conda deploy.sh to use `-c conda-forge` which allows me to build based on newer rpy2 and pandas, so removing the version specifications in meta.yaml.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
R 语言 climextRemes (107个子文件)
bld.bat 237B
CITATION 1KB
basic.css 14KB
alabaster.css 11KB
pygments.css 5KB
classic.css 4KB
custom.css 42B
default.css 28B
DESCRIPTION 1KB
ajax-loader.gif 673B
index.html 177KB
climextRemes_wrapper.html 98KB
climextremes.html 20KB
genindex.html 5KB
search.html 3KB
index.html 3KB
objects.inv 417B
jquery-3.5.1.js 281KB
jquery-3.2.1.js 262KB
jquery-3.1.0.js 258KB
jquery.js 87KB
underscore-1.13.1.js 67KB
underscore-1.3.1.js 34KB
websupport.js 25KB
underscore.js 19KB
searchtools.js 16KB
language_data.js 11KB
doctools.js 11KB
searchindex.js 8KB
sidebar.js 5KB
documentation_options.js 420B
LICENSE 381B
README.md 6KB
README.md 1KB
README.md 1KB
README.md 777B
MD5 7KB
NAMESPACE 735B
NEWS 6KB
climextremesDocumentation.pdf 256KB
comment-close.png 829B
comment-bright.png 756B
comment.png 641B
file.png 286B
down-pressed.png 222B
up-pressed.png 214B
up.png 203B
down.png 202B
plus.png 90B
minus.png 90B
climextRemes_wrapper.py 24KB
input_usage_examples.py 13KB
__init__.py 5KB
__init__.py 5KB
fit_pot_examples.py 5KB
setup.py 3KB
fit_gev_examples.py 2KB
calc_riskRatio_pot_examples.py 1KB
make_docs.py 944B
calc_riskRatio_gev_examples.py 919B
calc_riskRatio_binom_examples.py 902B
conf.py 613B
version.py 22B
__init__.cpython-38.pyc 4KB
__init__.cpython-37.pyc 4KB
__init__.cpython-35.pyc 3KB
risk_ratio.R 77KB
test-gev-pot.R 62KB
pot.R 47KB
gev.R 35KB
return_calcs.R 19KB
test-riskRatio.R 18KB
helper.R 10KB
auxil.R 5KB
test-declustering.R 3KB
test-parseParamInput.R 902B
climextRemes-package.R 879B
fit_pot.Rd 22KB
calc_riskRatio_pot.Rd 19KB
fit_gev.Rd 16KB
calc_riskRatio_gev.Rd 14KB
calc_riskRatio_binom.Rd 5KB
calc_logReturnProbDiff_fevd.Rd 2KB
calc_logReturnProb_fevd.Rd 2KB
calc_returnValueDiff_fevd.Rd 2KB
calc_logReturnPeriod_fevd.Rd 2KB
calc_returnValue_fevd.Rd 1KB
climextRemes.Rd 821B
remove_runs.Rd 671B
screen_within_block.Rd 635B
normalize.Rd 613B
index.rst 963B
deploy.sh 883B
build_sphinx_docs.sh 620B
build.sh 544B
calc_riskRatio_pot_args.txt 13KB
fit_pot_args.txt 9KB
calc_riskRatio_gev_args.txt 9KB
fit_gev_args.txt 7KB
LICENSE.txt 2KB
共 107 条
- 1
- 2
资源评论
Qinhappyspace
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图V15高级版编写,适合用于不带冷
- 环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点
- 基于原生HTML/CSS/JS的ICEUI高效前端框架设计源码
- 基于LeetCode每日一题的Java编程语言设计源码分享
- 基于C语言的C++兼容设计源码
- 开发板FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码, 方案为单FPGA方案才用底层verilog
- Python中的创意设计:用爱心图案绘制用户界面
- 基于Objective-C与多语言融合的BRAios场馆预定系统设计源码
- 基于JavaScript的考研自习室座位管理工具设计源码
- 嵌入式世界的核心:常见外设与驱动开发指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功