1 / 19

An Introduction

An Introduction. Dmitri Kavetski, Michael Leonard, Mark Thyer, June 2009. Introduction. Fortran 90/95 (F95) is a well established language many legacy programs written in F95 users may be attracted to F95 advantages (speed, memory, object handling, etc.)

pilis
Download Presentation

An Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An Introduction Dmitri Kavetski, Michael Leonard, Mark Thyer, June 2009

  2. Introduction • Fortran 90/95 (F95) is a well established language • many legacy programs written in F95 • users may be attracted to F95 advantages (speed, memory, object handling, etc.) • R is open-source graphical/statistical package • Many statistical algorithms • Good support for generating plots • Fast growing list of packages • RFortran is an open source software library that links to R from Fortran

  3. Motivation 1 – R Graphics • Fortran has very limited graphics functionality • This is especially frustrating when: • interactively analysing/simulating data • generating numerous diagnostic plots • Typically Fortran users dump outputs to file and plot later • RFortran provides Fortran users with ability to produce high quality R graphics directly from their code

  4. Motivation 2 – R Functions • Many researchers are releasing packages of their latest statistical/numerical algorithms work via the R platform • Number of R packages is constantly increasing • RFortran provides Fortran users with ability to utilise these algorithms in their own code • Enables researchers to trial and incorporate the latest algorithms • Expedites research results

  5. Why use RFortran? • Why not just use Fortran? • you want graphics or functions in R • Why not just use R then? • R is slower (scripted) • Large amount of F95 Legacy Code • Why not just plug a F95 DLL into R? • User convenience, DLLs can be tricky at times • Some programs are hard to package as DLLs • Aimed at users who have significant F95 code and wish to use some of R’s graphics and packages to make life a little easier!

  6. RFortran Overview • RFortran is a suite of modules that are compiled with a Fortran program • Uses the Component Object Model (COM) interface developed by Microsoft • RFortran is Windows only. • Currently can only be used with Compaq (CVF6.6) or Intel Visual Fortran (IVF) compiler • Planned to investigate if a compiler independent version can be developed

  7. Core Functionality • RFortran has 3 essential functions: • Rinit: initialise R, COM interface, etc. • Rput: put data/commands from F95 to R • Rget: get data from R into F95 • Numerous other functions for string handling, error logging, missing values, etc.

  8. Example: Simple Graph • Scenario: you have some data in F95 to plot • Initialise R (line 11) • Transfer some data to R (line 12) • Run a R commands (line 13,14)

  9. Example: Simple Graph • A basic plot

  10. Example: Graph using R Scripts • Scenario: Produce a higher quality graph using with R scripts • Load R script(s) (line 19) • Transfer data (line20 - 22) • Call the function in the script (line 23) 01 program AustraliaRainfall_ScriptedGraph ! Invoke an R script to make a plot. 02use RFortran ! Access RFortan 03implicit none 04integer :: i,j,ok 05real(8) :: x(178,139),lon(178),lat(139) ! Data,Longitude, Latitudes 06real(8) :: coast(61656,2) ! lat/lon coordinates of Aust. coastline ! read data here - full code provided at www.rfortran.org 17 lon = 112.0+(/(i,i=0,177)/)*0.25 ! 178 x 0.25 degree increments 18 lat= -44.5+(/(j,j=0,138)/)*0.25 ! 139 x 0.25 degree increments 19 ok = Rinit(Rfortran_ScriptPathIn='../../../Rscripts/tutorial_examples/') 20 ok = Rput("lat",lat); ok = Rput("lon",lon) !Rainfall grid lat/lon values 21 ok = Rput("coast",coast,mv=(coast<=-9999)) !Missing vals due to islands 22 ok = Rput("x",x,mv=(x<0)) !Missing vals due to ocean pixels 23 ok = Rput("AustraliaRainfall_ScriptedGraph(lat,lon,x,coast)")

  11. Example: Graph using R Scripts 01AustraliaRainfall_ScriptedGraph<-function(lat,lon,x,coast){ 02 image(lon,lat,x, xlab="Longitude",ylab="Latitude",cex.lab=1.5,cex.axis=1.5, 03 breaks=c(100,200,500,1000,2000,5000),col=topo.colors(5)[5:1]) 04contour(lon,lat,x,levels=c(100,200,500,1000,2000,5000),add=TRUE,labcex=1) 05lines(coast) 06 site.x<-c(115.9,138.6,147.3,145.0,151.0,153.1,130.9) 07 site.y<-c(-31.95,-34.92,-42.87,-37.78,-34.0,-27.48,-12.47) 08names<-c("Perth","Adelaide","Hobart","Melb.","Sydney","Brisbane","Darwin") 09 text(site.x,site.y,names,cex=1.2) 10 } • Scripting allows detailed command sequences Simple Graph HQ Graph using R Scripts

  12. Example: Using R Functions • Scenario: you want to exploit an R function • Initialise R (line 11) • Transfer some data to R (line 12) • Run some R command (line 13) • Get results back into F95 (line 14,15) • Use the results in F95 computations (line 18)

  13. Example: Using R Functions • The main point is getting data back to F95 • Intercept = 456.5 mm, Slope = 5.76 mm

  14. Feature List Core Functionality • Initialisation (Rinit) • Auto-opens R, COM interface and other set-up tasks • Transfer R commands to R From Fortran • Transfer variables between R and Fortran • Types supported: integer(2), integer(4), real(4), real(8), logical, character • Scalar, 1D, 2D and 3D arrays • For Rget allocatable arrays can be sized to match R variable • Errors – all error messages output to a log file • Notifies for syntax errors • When transfer variables from R to Fortran notifies for • Type, dimension and size mismatches - • Invalid values (NA, NaN, Inf) Enhanced Functionality - specialized Fortran functions that perform several tasks (e.g. plot data, add axis labels, legend etc) - full list available on www.rfortran.org

  15. Case Study 1 – BATEA • Used to automatically generate large numbers of diagnostic plots stored in a .pdf file

  16. Case Study 1 – BENEFITS • Removes tedium of writing/reading output files • Single pdf file with minimal user intervention simplifies archiving, enables quick comparison • Open source software means diagnostics can be shared between all users.

  17. Case Study 2 – Joint Probability • Used to exploit functionality in R to speed up research output • A catchment model is written in F90 with boundary values from a statistical model in R

  18. Case Study 2 – BENEFITS • Exploited strength of each platform, numerical model in F90, new statistical aspects in R (copula package) • Saved the user having to write a F90 copula package or port the F90 model to R. • Were able to quickly calibrate and evaluate different copula models without investing time. Important if you are not sure of usefulness.

  19. Summary • RFortran provides an easy-to-use useful means for linking to R • RFortran can have numerous benefits, primarily: • access to graphics facilities available • access to numerical/statistical algorithms • Current Status • Beta Release of Version 1.0 is currently available • Download installer from www.rfortran.org, test it and provide feedback. • Visit www.rfortran.org for further information • Information for Users • Feature List • Requirements • Download and Installation • Describes how to use RFortran • Tutorial examples (with source code) • FAQ • Other Information for Developers • How does RFortran Work, What is COM? etc

More Related