Giter VIP home page Giter VIP logo

kwb.abimo's Introduction

R-CMD-check pkgdown codecov Project Status CRAN_Status_Badge

kwb.abimo

R Package with functions for working with water balance model ABIMO https://www.berlin.de/umweltatlas/_assets/literatur/goedecke_et_al_abimo2019_doku.pdf

Installation

For details on how to install KWB-R packages checkout our installation tutorial.

### Optionally: specify GitHub Personal Access Token (GITHUB_PAT)
### See here why this might be important for you:
### https://kwb-r.github.io/kwb.pkgbuild/articles/install.html#set-your-github_pat

# Sys.setenv(GITHUB_PAT = "mysecret_access_token")

# Install package "remotes" from CRAN
if (! require("remotes")) {
  install.packages("remotes", repos = "https://cloud.r-project.org")
}

# Install KWB package 'kwb.abimo' from GitHub
remotes::install_github("KWB-R/kwb.abimo")

Documentation

Release: https://kwb-r.github.io/kwb.abimo

Development: https://kwb-r.github.io/kwb.abimo/dev

General Usage

Run Abimo with current data for Berlin as stored in this package

result <- kwb.abimo::run_abimo(input_data = kwb.abimo::abimo_input_2019)

Run Abimo with a given dbf file

result <- kwb.abimo::run_abimo(input_file = input_file)

Let Abimo calculate the "Bagrov curves"

library(ggplot2)

# Let Abimo.exe output results of the Bagrov calculation
bagrov_lines <- kwb.abimo::run_abimo_command_line("--write-bagrov-table")

# Convert the text lines to a data frame
bagrov <- read.table(text = bagrov_lines, header = TRUE, sep = ",")

# Plot the Bagrov data
ggplot(bagrov, aes(x = x, y = y, groups = factor(bag))) + geom_line()

kwb.abimo's People

Contributors

amatzi avatar hsonne avatar mrustl avatar

Watchers

 avatar  avatar  avatar  avatar

kwb.abimo's Issues

Fix warning docu mismatch for extdata_file()

Warning: Codoc mismatches from documentation object 'extdata_file':
extdata_file
  Code: function(..., must_exist = TRUE, dbg = FALSE)
  Docs: function(...)
  Argument names in code not in docs:
    must_exist dbg

https://github.com/KWB-R/kwb.abimo/runs/7011878517?check_suite_focus=true#step:9:67

due to:

#' @inheritParams kwb.utils::extdataFile

which seems not to correctly use the set parameters defined here:

https://github.com/KWB-R/kwb.utils/blob/2a6faaaefda4af9ad155e31dee0db551f18fdbf0/R/createFunctionExtdataFile.R#L58

Enhance installation docs

One could add that not only the "remotes" but also the "archive" package is required to install abimo :-)

feat: improve abimo_xml_evap()

by using xml2/rvest to modify the potential evatranspiration (as required for https://github.com/KWB-R/urbanAnnualRunoff/blob/dev/vignettes/workflow_beijing.Rmd) as current approach misses one row <item bezirke="1,5,6,7,11"

 ```
    </section>
    <section name="PotentielleVerdunstung">

        <item bezirke="15,16,18,19,20"     etp="807.767283333333" etps="606.903833333333" />
        <item bezirke="8,9,10,12,21,22,23" etp="807.767283333333" etps="606.903833333333" />
        <item bezirke="13,14,17"           etp="807.767283333333" etps="606.903833333333" />
        <item bezirke="2,3,4"              etp="807.767283333333" etps="606.903833333333" />
        <item bezirke="1,5,6,7,11"         etp="774" etps="606" />

        <!-- das ist der default wert (Bezirk=0) -->
        <item etp="807.767283333333" etps="606.903833333333" />

    </section>

    </section>

Fix installation of Abimo

If Abimo was not installed before, there is no chance that it succeeds currently.

Easy fix for Windows:
The script checks for version 3.3.0, but then installs 3.2.2, see https://github.com/KWB-R/kwb.abimo/blob/master/R/install_abimo.R#L22
I would advise to use a "global-ish" variable to store the "recommended" version to avoid these problem in the future.

Also, it enforces a "win64" platform, which is problematic to be ran on a server (Linux) or a Mac OS software. See https://github.com/KWB-R/kwb.abimo/blob/master/R/install_abimo.R#L16
Ideally, the original packages Abimo should be available for all main platforms.

In the meantime, the R package should identify the operating system using something like https://stat.ethz.ch/R-manual/R-devel/library/base/html/Sys.info.html and for non-windows platform warn that it cannot be installed automatically but hint that the software should be built from source and then linked with the fitting suffix in the R-site-library folder.

Create wrapper function to run Abimo.exe

This should be possible:

# Define some reference input file
input_file <- "~/qt-projects/abimo/data/abimo_2019_mitstrassen.dbf"

# Define some reference config file
config_file <- "~/qt-projects/abimo/data/config.xml"

# Read input data from reference file
input_data <- foreign::read.dbf(input_file)

# Read configuration file into list
config <- read_config(config_file)

# Modify the input data by modifying the data frame...
# Take care! Make sure that integer columns keep integer, therefore use "L" here!
input_data$REGENJA <- 600L

# Modify the configuration by modifying the list...
config$Infiltrationsfaktoren$Dachflaechen <- 0.2

# Either run Abimo by giving the paths to the files
result1 <- run_abimo(input_file = input_file, config_file = config_file)

# Or run Abimo by giving the R data structures
result2 <- run_abimo(input_data = input_data, config = config)

# In each case, the result is a data frame, containing the data from the dbf 
# file that was written by the Abimo executable

Extra feature to validate the Bagrov calculation

# Let Abimo.exe output results of the Bagrov calculation
bagrov_lines <- kwb.abimo::run_abimo_command_line("--write-bagrov-table")

# Convert the text lines to a data frame
bagrov <- read.table(text = bagrov_lines, header = TRUE, sep = ",")

Allow usage of non-Windows path

UNIX (Linux and Mac OS) paths is using "/" as separator, unlike Windows which uses "\"

Unfortunately, the R package is using a "fullWinPath" function which does not handle other platform than window. For example, see https://github.com/KWB-R/kwb.abimo/blob/master/R/run_abimo.R#L53

This way, a path input_file <- '/Users/matthieu/dev/kwb.abimo/data/abimo_input_2019.rda' becomes Usersmatthieudevkwb.abimodataabimo_input_2019.rda and it fails...

feat: add "data" from amatzi/abimo (with history)

and put in subfolder inst/extdata with the code below:

# source: http://st-on-it.blogspot.com/2010/01/how-to-move-folders-between-git.html
# First of all you need to have a clean clone of the source repository so we didn't screw the things up.

git clone https://github.com/amatzi/abimo

cd abimo
# After that you need to do some preparations on the source repository, nuking all the entries except the folder you need to move. Use the following command

git filter-branch --subdirectory-filter data -- -- all

# This will nuke all the other entries and their history, creating a clean git repository that contains only data and history from the directory you need. If you need to move several folders, you have to collect them in a single directory using the git mv command.

# You also might need to move all your content into some directory so it didn't conflict with the new repository when you merge it. Use commands like that

mkdir -p inst/extdata
git mv * inst/extdata/

# Once you've done commit your changes, but don't push!

git commit -m "Collected the data I need to move"

# This is all about the source repository preparations.
# Now go to your destination repository
cd .. 

git clone https://github.com/kwb-r/kwb.abimo

cd kwb.abimo/

# And here is the trick. You need to connect your source repository as a remote using a local reference.

git remote add abimo ../abimo/

# After that simply fetch the remote source, create a branch and merge it with the destination repository in usual way

git fetch abimo
git branch abimo remotes/abimo/master

git merge abimo --allow-unrelated-histories

# This is pretty much it, all your code and history were moved from one repository to another. All you need is to clean up a bit and push the changes to the server

git remote rm abimo
git branch -d abimo

git push origin master

# That's all. After that you can nuke the temporary source repository.

https://gist.github.com/trongthanh/2779392

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.