Anyway, a new version 0.24 of Finance::YahooQuote which addresses the issue that required upload 0.23 yesterday is now in the Debian queue and on CPAN and my local yahooquote page. This time it may even work. A big thanks to the CPAN Testers for getting me reports on this one too.
Which lead the automated Perl test scripts to remind me for a few days now that the full company name for symbol IBM no longer corresponded to what I had encoded. Not really a bug, but a failure in tests anyway.
So without further ado: a new version 0.23 of Finance::YahooQuote which addressed this issue is now in the Debian queue and on CPAN and my local yahooquote page.
This release combines a number of under-the-hood fixes and enhancements with one bug fix:
Rcpp:::LdFlags()
helper function to dynamically provide
linker options for packages using
Rcpp now defaults
to static linking on OS X as well. For installation from source dynamic
linking always worked, but not for binary installation (as e.g. from
CRAN). As on the other platforms,
this default can be overridden. Thanks to the
phylobase
team for patient help in tracking this down.[]
should now be faster due to some
enhancements in the internal representations.configure
now has a command-line option (as well as an
environment variable) to select support for the draft of the upcoming C++0x
standard.Rcpp.package.skeleton()
, modelled after
package.skeleton()
in R itself, helps to set up a new package
with support for using
Rcpp.As always, full details are in the ChangeLog on the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page
This versions brings a few cleanups due to minor
Rcpp changes (in
essence: we now define the macro R_NO_REMAP
before including R's
headers and this separate non-namespaced functions like error()
or length()
out into prefixed-versions Rf_error()
and Rf_length()
which is a good thing).
It also adds a number of calendaring and holiday utilities that Khanh just added: tests for weekend, holiday, endOfMonth as well dayCount, date advancement and year fraction functions commonly used in fixed income.
Full changelog details, examples and more details about this package are at my RQuantLib page.
A lot of the momentum for the new API is continuing, thanks in large part to Romain. A number of new classes have been added, and existing ones have been enhanced. There are more unit tests than ever, and more documentation. We have better build support (with g++ version detection so that we can add some C++0x support where available) and a new examples sub-directory.
We did take one toy away, though. The Doxygen-generated docs were getting so big that we decided to keep them out of the source tarball. (And arguably, they are also too volatile.) We still have the browseable html docs as well as the pdf version (now at over 300 pages!). And we added zip archives of the docs in html, latex, and man format for download.
As always, full details are in the ChangeLog on the Rcpp page. Questions, comments etc: bring them to the rcpp-devel mailing list off the R-Forge page
This is a maintenance release building on the recent
0.2.0 release
which added Windows support (provided you use the Rtools toolchain for
Windows). In this release, we changed the startup initialization so that
interactive()
comes out FALSE (just as we had done for
littler just yesterday)
and with that no longer call Rf_KillAllDevices()
from the destructor as we may not have
had devices in the first place. A few minor things were tweaked around the
code organisation and build process, see the ChangeLog for details.
The new release should hit CRAN mirrors tomorrow, and is (as always) available from my machine too.
littler provides r
(pronounced littler), a shebang / scripting / quick eval / pipelining
front-end to the the R language and system.
This version adds a few minor behind-the-scenes improvements:
interactive()
now evaluates to false as you'd expect in a
non-interactive scripting front-end. To restore the previous behaviour,
new switches -i
or --interactive
have been added.
install.r
and update.r
received an update based on lessons learned from the R 2.10.0 roll-out and
package rebuilding.
As usual, our code is available via our svn archive or from tarballs off my littler page and the local directory here. A fresh package is in Debian's incoming queue and will hit mirrors shortly.
A lot has changed under the hood since 0.7.0, and this is the first release that really reflects many of Romain's additions. Some of the changes are
Rcpp::RObject
that replaces
RcppSexp
(which is still provided for compatibility); it
provides basic R object handling and other new classes derive from it.Rcpp::RObject
has real simple wrappers for object creation and a SEXP
operator for transfer back to R that make simple interfaces even easier.Rcpp::Evaluator
and
Rcpp::Environment
for expression evaluation and R environment
access, respectively.Rcpp::XPtr
for external pointer access and management.RUnit
package, and several new examples.inline (>= 0.3.4)
as our patch is now part of the current
inline package
as mentioned <here.
PKG_CPPFLAGS
,
PKG_CXXFLAGS
, and
PKG_LIBS
which I had mentioned recently
here
and
here.
There is also a brand-new and shiny
R-Forge project
for it.
A new release of Rcpp will probably follow in due course as we can now depend on this new inline version; Romain has also put nice new code in around exceptions and we may add some more on external pointers. Good times ...
Date_Calc
now really wants a reference to store
error codes, so we supply one. I also changed the FX code to use
OandA ad there are often issues with
Yahoo's FX data. The version 0.8.9 is now in
Debian, at
CPAN and on my
beancounter page here.
The biggest news is that we now support builds on Windows -- if and only
if you use the R toolchain -- more on that below. Since I had first released
RInside people
had emailed about support on Windows. However, Richard Holbrey deserves
special mention as he actually sat down and tried to build it. Over a few
email exchanges we made decent progress, but stalled. More recently, I
sat down and had another go and lo and behold, it works. This required a few
#ifdef
statements here and there, as well as a function
setenv()
which Windows does not have -- Richard kindly helped
here and borrowed most of the code from R itself.
Now, to make this plain: you need gcc
(as this is how R
itself is built). This gcc compiler is the native compiler on Linux and OS X.
But on Windows this requires installing the
Rtools compiled by Duncan Murdoch
as detailed in the
The Windows Toolset
appendix to the R Installation manual. Do not, I repeat, do not report an
error if you fail to build this with another compiler as this is not supported.
That said, if you have the proper tools, things are peachy. Install the
package, change into the examples
directory installed with it
and say make
(or on Windows: make -f Makefile.win
).
That's it -- now run the examples (which on Windows will most likely require
setting the environment variable R_HOME
). Now you can run
simple examples like the one from the
previous
blog post or any of the other ones.
Happy embedding!
The following R code defines a character
variable gslrng
. This variable contains a short C++ code
segment, which is then transformed by the function cfunction
into a function of two arguments assigned to funx
:
## now use Rcpp to pass down a parameter for the seed, and a vector size gslrng <- ' int seed = RcppSexp(s).asInt(); int len = RcppSexp(n).asInt(); gsl_rng *r; gsl_rng_env_setup(); std::vector<double> v(len); r = gsl_rng_alloc (gsl_rng_default); gsl_rng_set (r, (unsigned long) seed); for (int i=0; i<len; i++) { v[i] = gsl_rng_get (r); } gsl_rng_free(r); return RcppSexp(v).asSexp(); ' ## turn into a function that R can call ## compileargs redundant on Debian/Ubuntu as gsl headers are found anyway funx <- cfunction(signature(s="numeric", n="numeric"), gslrng, includes="#include <gsl/gsl_rng.h>", Rcpp=TRUE, cppargs="-I/usr/include", libargs="-lgsl -lgslcblas") print(funx(0, 5))
The signature
argument to cfunction
defines two
variables s
and n
-- which the C++ function then
reads in from R and converts to two integers seed
and
len
.
seed
is used to initialize the random-number generator, and
len
draws are then taken and stored in the STL vector
v
which returned at the end.
As the R level, we now have a function of two arguments returning a vector of RNG draws of the given lenth and using the given seed.
Also note how we tell cfunction
to add the GSL include line,
specify that we want to compile and link against Rcpp and provide
-I
and -L
arguments to compile and link with the
GSL. (The include statement is not needed as the compiler would have found them
in /usr/include
anyway, but it shows how to set this if needed.)
Finally, we simply call our freshly compiled, linked and loaded C++ function with arguments zero for the seed and five for the length, and print the results vector returned to R from C++.
This release has a couple new features :
cfunction
from Oleg Sklyar's excellent
inline package
has been imported and adapted. This means simple C++ programs can be defined in an R character
vector and passed to cfunction
which will create a complete file that it then
compiles, links and loads --- giving you access to compiled C++ code right from the R prompt
without having to worry about compiler flags, linker options, ... Better still, we extended
this to not only support Rcpp but
any external library via addtional header / linker arguments that will be passed to R via
the PKG_CPPFLAGS
, PKG_CXXFLAGS
and PKG_LIBS
environment
variables.
RcppSexp
for simple int, double or std::string scalars as well as vectors; this is particularly
useful for the inline support.
Full changelog details, examples and more details about this package are at my RQuantLib page.
Makevars.win
(used on that other OS) to the new file layout.
So 0.6.8 went onto CRAN and into Debian earlier in the day. Beside the aforementioned fix, I also split off a more class headers and implementations into their own files but changed no actual functionality.
As always, more details are at the Rcpp page.
One change is that a new type RcppList
was added which allows us
to build R 'list' types in C++. In particular, this makes it possible to have
data structures of different types and dimensions. We had not previously
accomodated this as our data structures where more regularised (i.e. think
matrices or vectors of various types). The need for this came out of the work with the
recently started RProtoBuf package which interfaces the Google
ProtoBuf library. The incredible Romain François has joined the
project and added a number of nice tricks; this will need another blogpost
sooner rather than later. In the meantime, check out the RProtoBuf pages at R-Forge.
Another small change was the addition of a self-contained example of a function callback from C++ into R which wasn't all that well documented before; this was in response to a user request.
Finally, I started RcppList
as a first step in reorganising the
code a little better and split the class header and body off into separate
files. This required changes to the infrastrucure files
Makevars
, cleanup
, ... and I promptly forgot the
Makevars.win
Windoze variant which will require a 0.6.8 release
real soon.
As always, all the details (including the full ChangeLog) are at the local RPostgreSQL page, the RPostgreSQL package page at CRAN and of course the Google Code repository for RPostgreSQL.
This is a maintenance and bug fix release that addresses four of the seven issue at the Google Code page. Two more are really enhancement requests for which we encourage patches as we are unlikely to have to write them, and the last issue I have been unable to replicate.
This release has benefitted greatly from the generous help of Neil Tiffin who now looks after all things OS X and keeps a good eye on the Google Code site (where I had, ahem. overlooked the existence of these open issue tickets for a few months), Joe Conway who we can count on for hard-core PostgreSQL issues as well as Jeff Horner for general R, DBI and database smarts.
Some more details (including the full ChangeLog) are at the local RPostgreSQL page, the RPostgreSQL package page at CRAN and of course the Google Code repository for RPostgreSQL.
However, today I committed a new example to SVN archive at R-Forge. It is based on this thread on r-devel. Abhijit Bera tries to do this in C, but to me his questions provide rather clear motivation for showing how much simpler things can be via C++ and the Rcpp classes along with RInside. Using a small example, the task was to pass a weight vector to a portfolio solver from the Rmetrics package fPortfolio and to then access the computed solution. The original poster struggled with access from C to the S4 classes used by fPortfolio and could not set the weights. But when using RInside, we simply pass a C++ vector of weights down to R, solve the problem and pass a solution vector back using the handy evaluation of R expressions:
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*- // // Another simple example inspired by an r-devel mail by Abhijit Bera // // Copyright (C) 2009 Dirk Eddelbuettel and GPL'ed #include "RInside.h" // for the embedded R via RInside #include "Rcpp.h" // for the R / Cpp interface used for transfer #include <iomanip> int main(int argc, char *argv[]) { try { RInside R(argc, argv); // create an embedded R instance SEXP ans; std::string txt = "suppressMessages(library(fPortfolio))"; if (R.parseEvalQ(txt)) // load library, no return value throw std::runtime_error("R cannot evaluate '" + txt + "'"); txt = "lppData <- 100 * LPP2005.RET[, 1:6]; " "ewSpec <- portfolioSpec(); " "nAssets <- ncol(lppData); "; if (R.parseEval(txt, ans)) // prepare problem throw std::runtime_error("R cannot evaluate '" + txt + "'"); const double dvec[6] = { 0.1, 0.1, 0.1, 0.1, 0.3, 0.3 }; // choose any weights you want const std::vector<double> w(dvec, &dvec[6]); R.assign( w, "weightsvec"); // assign STL vector to R's 'weightsvec' variable txt = "setWeights(ewSpec) <- weightsvec"; if (R.parseEvalQ(txt)) // evaluate assignment throw std::runtime_error("R cannot evaluate '" + txt + "'"); txt = "ewPortfolio <- feasiblePortfolio(data = lppData, spec = ewSpec, constraints = \"LongOnly\"); " "print(ewPortfolio); " "vec <- getCovRiskBudgets(ewPortfolio@portfolio)"; if (R.parseEval(txt, ans)) // assign covRiskBudget weights to ans throw std::runtime_error("R cannot evaluate '" + txt + "'"); RcppVector<double> V(ans); // convert SEXP variable to an RcppMatrix R.parseEval("names(vec)", ans); // assign columns names to ans RcppStringVector names(ans); for (int i=0; i<names.size(); i++) { std::cout << std::setw(16) << names(i) << "\t" << std::setw(11) << V(i) << "\n"; } } catch(std::exception& ex) { std::cerr << "Exception caught: " << ex.what() << std::endl; } catch(...) { std::cerr << "Unknown exception caught" << std::endl; } exit(0); }
The new package will appear shortly on its CRAN page; the R-Forge page has access to the Subversion repo etc and otherwise there's always my local my local digest page.
Oh, and 0.3.1 was never blogged about as it was just a maintenance release that added a single cast and an edit to the DESCRIPTION file.
This release improves on the build process and should work on any sane Unix-alike operating system. A few more examples were added or extended. Details and the full ChangeLog are on my RInside page, and there is now a RInside page on CRAN as well.
src/Makefile.win
to the new and enlarged set of source files.
The proper fix (of using wildcards and implicit rules) was simple, and Uwe
Ligges kindly rebuilt RQuantLib on the Windows builder for CRAN using an
updated Makefile so that binaries for Windows will be available. This fix
will also be in the next upload. Should you need
it in the meantime, here is a
link to the new version directly from SVN.
This version, the first in a new '0.3.*' release series, contains all the work that Khanh Nguyen did during his Google Summer of Code participation which I had mentioned a while back and for which I acted as mentor.
And Khanh did great. We now have a lot more Fixed Income functionality; I include the full ChangeLog entry below. I also added some simple calendaring support and the odd fix here or there while mentoring. All of this had been available while technically 'in progress' thanks to support provided by the R-Forge project hosting where SVN checkouts as well as nightly binaries are provided. A few more details are on the RQuantLib page and I hope to add a few more examples.
As promised, the ChangeLog entry:
2009-09-05 Dirk Eddelbuettel* DESCRIPTION: Release 0.3.0 reflecting all the excellent Google Summer of Code 2009 work by Khanh Nguyen as well as other small enhancements [ Changes by Khanh Nguyen below ] * R/bond.R: Added pricing functionality for various new instrument * R/discount.R: Idem * src/bonds.cpp: Idem * src/discount.cpp: Idem * src/utils.cpp: Idem * man/Bond.Rd: Added documentaiont for new functions * man/CallableBond.Rd: Idem * man/ConvertibleFixedCouponBond.Rd: Idem * man/ConvertibleFloatingCouponBond.Rd: Idem * man/ConvertibleZeroCouponBond.Rd: Idem * man/Enum.Rd: Idem * man/FittedBondCurve.Rd: Idem * man/FixedRateBond.Rd: Idem * man/FixedRateBondCurve.Rd: Idem * man/FixedRateBondPriceByYield.Rd: Idem * man/FixedRateBondYield.Rd: Idem * man/FloatingRateBond.Rd: Idem * man/ZeroCouponBond.Rd: Idem * man/ZeroPriceByYield.Rd: Idem * man/ZeroYield.Rd: Idem * rests/RQuantLib.R: Added tests for new functions * rests/RQuantLib.Rout.save: Added tests ouput for new functions [ Changes by Dirk Eddelbuettel below ] * man/BondUtilities.Rd: Added documentation for new function * R/calendars.R: Add support to access QuantLib calendars from R * src/calendars.cpp Idem * man/Calendars.Rd: Idem * src/bonds.cpp: Small C++ fixes to suppres g++ warnings * INDEX: Updated via 'R CMD build --force' * inst/QuantLib-License.txt: Updated to version from QL 0.9.7
randomSequence
. Thanks for Lynn Amon for spotting this.
The new package is available here and should appear on CRAN shortly.
While the diffstat
output that will appear in
cranberries may look impressive,
it stems chiefly from updating the Doxygen documentation of the C++ classes.
Only one small feature was added: one can now test via exists()
whether a named parameter exists in an instance of the RcppParams
class.
This releases owes a big Thank you! to Miguel Lechón who not only noticed errant behaviour and occassional segfaults with overly long commands sent to the embedded R, but even traced it to an oversight of mine in a simple memory buffer class and provided the one-line fix to reset a pointer! Much appreciated, especially as I got his mail two days before I talked about Rcpp and RInside at UseR! 2009 . The other changes are mostly cleanups, additions of two more test examples (to replicate the bug report) and some minor additions of a few new assign() functions to pass data between C++ and the embedded R session.
std::
in a number of
variable declarations and a few member function calls -- so this is
definitely a minor maintenance release. New source and binary packages have
already been pushed to CRAN and
Debian.
This version changes how use the std
namespace: all usage is now
properly prefixed. Likewise, we now define R_NO_REMAP
to not
let R define utility functions as length()
or
error()
which occassionally creates trouble with other include
files -- so now use the more explicit forms Rf_length()
,
Rf_error()
etc. Also, starting from this release, C++ class
documentation created by Doxygen is included; it can also be seen from my box
as both browsable
html and a pdf file.
Lastly, this version also adds a minor correction to the Windows build
(spotted by Uwe and Simon).
RInside makes it easy to embed R into your own C++ application by hiding the nitty gritty of initializing an R interpreter behind a simple abstraction. More information is at a (currently pretty simple) RInside page, and you may want to look at the related Rcpp and possibly littler projects. The former is helpful for data exchange, and the latter provided my first real use of R embedding which in some ways also lead to RInside.
This version adds two new command-line switches:
-t
selects per-session temporary directories in the same way
as R does (with thanks to Paul Gilbert
for the suggestion), and
-q
skips autoloading of default libraries at startup for another
small yet noticeable gain in startup speed (with thanks to Simon Urbanek).
As usual, our code in our svn archive, on my r page, and in the local directory here. A fresh package is in Debian's incoming queue, and Jeff's littler page at Vanderbilt should reflect the new release soon too.
This version adds a fix to the OS X installation (thanks to Simon Urbanek), adds some 'view-only' classes for R vectors, matrices and string vectors (kindly suggested/provided by David Reiss) as well two shorter helper functions to derive compilation and linker flags for packages using Rcpp.
.Call()
interface provided by R.
Rcpp provides matching C++ classes for a large number of basic R data types. Hence, a package author can keep his data in normal R data structure without having to worry about translation or transfer to C++. At the same time, the data structures can be accessed as easily at the C++ level, and used in the normal manner.
The mapping of data types works in both directions. It is as straightforward to pass data from R to C++, as it is it return data from C++ to R.
Rcpp was initially written by Dominick Samperi to in the context of the RQuantLib package and later released on its own, but had not seen any releases in twenty-four months. I have substantially expanded the documentation, simplified the build structure yet made it easier to use Rcpp from other packages, and started to add some new classes (notably microsecond time types). Rcpp is supported on Windows, Linux and Mac OS X (with special thanks to Simon for some extended help).
More information for Rcpp can be found at the package homepage, the R-forge repository or the package CRAN page.
Version 0.1.0 extends the functionality of the dieharder
function quite substantially and catches up to a number of recent changes in
DieHarder. In particular:
dieharder()
generator selection changes along the same line as
in the DieHarder release: ids 1 to 200 are reserved for GNU GSL
geneators, ids 201 to 400 for Dieharder, 401 to 500 for GNU R,
501 to 600 are hardware-based and ids over 600 are for user-contributed
generators
dieharder()
now supports new arguments 'inputfile' (for file_input
and file_input_raw) and 'ntuple' (for tests with variable bit length)
dieharder()
now also supports the 'rgb', 'sts' and 'user' tests
dieharder()
now returns multiple Kuiper KS p-values for those tests
that generate multiple p-values
dieharderGenerators()
now returns a data.frame with two columns
'names' and 'ids' and generators can be selected via either a
a name (as e.g. 'mt19937') or a numeric id (e.g. 16)
dieharderTests()
was added and also returns a data.frame with
names and ids permitting a similar selection via test name or
via test id.
This new version should show up at CRAN and its mirrors in due course, in the meantime sources are also RDieHarder page.
The only new feature is due to a suggestion by Paul Gilbert: r now reports
the value of the optional status
variable when calling
q()
at the end of a script:
$ r -e'q(status=42)'; echo $?
42
This can be very useful to signal exit codes and branching on those in
other scripts or Makefile. We also applied a patch to manual page which adds
some examples there (thanks, Seb!) and made some small changes to tests and
examples.
As usual, our code in our svn archive, on my r page, and in the local directory here. A fresh package is in Debian's incoming queue, and Jeff's littler page at Vanderbilt should reflect the new release soon too.
src/curves.cpp
were needed.
This new version 0.2.9 is currently in the queue at R's master CRAN host and should hit the CRAN
mirrors shortly; likewise the Debian package has
been uploaded and should also propagate to Debian mirrors in due course. As
usual, source are also available locally on my
site. Lastly, RQuantLib is
hosted on
R-Forge and potential contributors are encouraged to register at R-Forge
and to get in touch -- this is a great way to learn how to combine C++ and
R.
In a nutshell,
Ra provides
a modified
R engine
so that code preceded by all jit(1)
function call, using his
jit
package from the CRAN archive, will
run faster due to just-in-time compilation of loops and arithmetic
expressions.
Ra offers to pick the low-hanging fruit for users as loops can be a bottleneck. Of course, as shown in Stephen's case study, using appropriate vectorised expression will often be faster still. That said, for a certain class of problems, Ra should offer a decent speed boost.
Debian users can now just say
sudo apt-get install r-base-core-ra r-cran-jitas the Ra and jit packages in Debian's unstable distribution (and in the case of jit, even in testing).
Lastly, version 1.1.0 of Ra was released by Stephen yesterday and is now also in Debian unstable.
And as of today, a new package r-cran-getopt is in Debian.
It provides Allen Day's recently released package
getopt from
CRAN which provides a new function getopt
.
Given a suitable data structure that provides long and short-form command-line option names, whether
arguments are mandatory, optional or not required (as for flags), and a data-type,
getopt
munges the command-line arguments supplied by the user and fills a new variable
opt
accordingly. If a fifth columns with help text is provided, a usage string can be
generated as well.
Thanks to Allen for writing getopt, for accepting a quick two-line patch extending support from Rscript to littler, and for fixing one or two minor bugs. Thanks also to the Debian ftpmasters for adding r-cran-getopt within a few days.
PGAPack has also been in or around Debian for a rather long time, but it suffered from benign neglect in the last few years. Some of this came to the fore in this bugreport which lead to my offer to the then-maintainer Andreas to help on the relicencing request. After all, Argonne Labs is just a few miles from where I live, and I had already spent a little bit of time polishing and upgrading the package for my own exploratory use.
So I called Rusty Lust, head of the Mathematics and Computer Science section at Argonne to try to sort this out. He was sympathetic and put me in email contact with David Levine. As we are all somewhat busy, this dragged on for a little longer than we thought --- but as of today, about and a half years later, we have a new and shiny PGAPack 1.1 release, or around twelve years after the initial 1.0 version came out.
I have done a fair amount of polishing: there are now two library packages for serial use (i.e. for debugging) as well as parallel use via MPI. We use Open MPI where available and LAM where not. All open Debian bugs have been addressed. One minor issue in the postscript documentation remains as David can no longer locate his LaTeX sources; I may just have to extract the text and re-latex this from scratch to update it. One day.
Anyway, for full reference, the changelog entry is below. The package is currently in the NEW queue (as the new sub-package require manual inspection and approval) but should hit mirrors in a couple of days.
My thanks to the two previous Debian maintainers; to Rusty Lusk for helping with the from the end MSC department at Argonne Labs and for suggesting the rather liberal and easy MPICH2 license (and he happens to be one of the MPICH2 authors); and of course to David Levine for writing PGAPack in the first place, for agreeing to relicense it and giving valuable feedback on my repackaging of what is now version 1.1 on the MCS ftp server at Argonne --- this library has held up really well over the years; let's hope it will find more good use going forward.
pgapack (1.1-1) unstable; urgency=low * Really good news: The MCS divsion of Argonne National Laboratories has agreed to relicense pgapack using the MPICH2 license. So pgapack is now Free Software and can move into Debian's main archive! Our thanks go to David Levine and Rusty Lusk to make this possible. * New maintainer, following Andreas' offer dated 2006-10-04 in #379388 * debian/control: Change section to math (Closes: #379388) * Added new brinary packages libpgapack-mpi1 and libpgapack-serial1 * The MPI package is configured using Open MPI where available and LAM where not. * debian/control: Changed Build-Depends: to use OpenMPI where available, and LAM otherwise. * Finally acknowledges old NMUs (Closes: #379168,#359549) * source/integer.c: Apply patch for one-off error (Closes: #333381) * source/report.c: Do not unconditionally print at generation 1 * debian/rules: Remove a bashism (Closes: #379168) * debian/rules: Install examples directly (Closes: #134331) * debian/control: libpgapack-lam1 Depends on lam4 (Closes: #60376) * debian/rules: Rewritten using debhelper * debian/control: Added Build-Depends: section for debhelper * No longer install mpi.h in /usr/include (Closes: #404027) * debian/control: Updated Standards-Version: to current version * man/man1/PGAGetCharacterAllele.1: fix whatis entry (lintian) -- Dirk EddelbuettelMon, 10 Mar 2008 18:03:34 -0500
-l
(with long form --packages
)
to load packages into the R
session. This is useful when you have
data-processing one-liners as it does away with the explicit
library(foo)
inside your actual R expression. For added
bonus, library()
is wrapped in a
suppressMessage()
call.--no-restore
option is now passed to the embedded
R session.--help
was improved.bootstrap
, the wrapper around
autotools
and friends.
update.r
was improved.
Rscript
in the timing tests.
As usual, our code in our svn archive, on my r page, and in the local directory here. A fresh package is in Debian's incoming queue, and Jeff's littler page at Vanderbilt should reflect the new release soon too.
As QuantLib is approaching its 1.0 release, a few API changes requires updates to basically all of RQuantLib's C++ source files. Luckily most changes were minor. At the same time, we also generalised the Binary (aks Digital) option pricer to allow for a 'binType' argument (with values 'cash', 'asset' or 'gap' for CashOrNothing, AssetOrNothing or Gap digitals) as well as an 'excType' argument to switch between European and American exercise. Dominick made a small change to the DiscountCurve object to seamlessly pass a switch variable indicating whether we have 'flat' curves or not.
Another change was the addition of formal unit tests using the RUnit from CRAN (which we happened to have added to Debian recently in the wave of new RMetrics packages). We use the scheme initially proposed by Gregor Gojanc and extended by Martin Maechler for RMetrics that allows the unit tests to be run from both the source and the installed package which is nice. As QuantLib itself has a massive amount of unit tests in its code; I am hoping to add more and more of those into RQuantLib itself as we add more functionality.
On that front, more exciting news: RQuantLib is now hosted on R-Forge. Potential contributors are encouraged to register at R-Forge and to get in touch -- this is a great way to learn about combining C++ and R.
To wrap up, the new version 0.2.8 is currently in the queue at R's master CRAN host and should hit the CRAN mirrors shortly; likewise the Debian package has been uploaded and should also propagate to Debian mirrors in due course. As usual, source are also available locally on my site.
Rmetrics now comprosises over twenty individual packages. Eleven new packages were added in the 260.72 release for R 2.6.0, and they required eight other new packages from CRAN. While I would have preferred a more spread-out approach than the shotgun approach of having to introduce all these new packages at once (which took the last four weeks), I am in support of the reorganisation which should make maintenance more easy going forward.
So to get all of these packages onto a Debian box, a quick sudo apt-get
install r-cran-rmetrics
is all it takes. Currently supported only in
the always-fresh unstable flavour, but hopefully soon in testing
too.
A big Thank You goes to the Debian FTPmasters. Of the 20-some packages that I added to Debian during this Rmetrics expansion, many were added within a day or two.
Lastly, thanks also to Florian Hahne, Robert Gentleman and Elijah Wright for much appreciated help with R's Rgraphviz and graph packages to create the chart above. It only takes a handful of lines to create the basic graph, and another few lines for the colours and titles. The code is available on request, of course, but you need the current development versions of the BioConductor packages Rgraphviz and graph (which are not in Debian yet).
"approx"
argument to format date differences. Adding
this in the five calls across beancounter
and
BeanCounter.pm
is the main change in version 0.8.8 which is now
in Debian's incoming area, uploaded to CPAN and onto the beancounter
page here.
After some discussions on and around the debian-science list, a new maintainer group was formed on Alioth under the pkg-openmpi name. Tilman Koschnick (who had already helped Florian with patches), Manuel Prinz, Sylvestre Ledru and myself have gotten things in good enough shape in reasonably short time. And I have just uploaded a lintian-clean package set openmpi_1.2.3-0 to Debian, where it is expected to sit in the NEW queue for a little bit before moving on to the archive proper. The changelog entry (which will appear here eventually) shows twelve bugs closed.
Our plan is to provide a stable and well maintained MPI implementation for Debian. OpenMPI is the designated successor to LAM, and apart from MPICH2, everybody seems to have thrown their weight behind OpenMPI. So we will try to work with the other MPI maintainers to come up with sensible setups, alternatives priorities and the likes. If you are interested in MPI and would like to help, come join us at the Alioth project pkg-openmpi.
Last but not least, thanks to Florian for the initial packaging, and to Clint Adams, Mark Hymers, Andreas Barth, and Steve Langasek (twice even) for NMUs.
As usual, littler can be found in the GoogleCode svn archive, on my r page and in the local directory, and soon on Jeff's littler page at Vanderbilt. The Debian package has been uploaded as well (and has been built again the new R version 2.5.0 that was released yesterday).
This required some minor changes by Dominick in the Bermudan pricer, and we made some small updates in other place. All in all just a regular maintenance release. The new version 0.2.6 has now been uploaded to both R's master CRAN host and Debian, and is also available locally here.
Data scraping via tools like my Finance::YahooQuote, and those that use it such as my Beancounter toolkit, are therefore inoperational. As a first quick fix, apply the following patch to YahooQuote.pm:
--- YahooQuote.pm.orig 2005-07-17 13:10:20.000000000 -0500 +++ YahooQuote.pm 2007-02-22 18:50:07.000000000 -0600 @@ -34,7 +34,7 @@ $VERSION = '0.21'; ## these variables govern what type of quote the modules is retrieving -$QURLbase = "http://quote.yahoo.com/d?f="; +$QURLbase = "http://download.finance.yahoo.com/d/quotes.csvr?e=.csv&f="; $QURLformat = "snl1d1t1c1p2va2bapomwerr1dyj1x"; # default up to 0.19 $QURLextended = "s7t8e7e8e9r6r7r5b4p6p5j4m3m4"; # new in 0.20 $QURLrealtime = "b2b3k2k1c6m2j3"; # also new in 0.20I will hope to have a first new package out later.
tempfile()
, added checks for
the upcoming R 2.5.0, and made tests in tests/
use a path of
As usual, everything is in our svn archive, on my r page, and in the local directory here. A fresh package is in Debian's incoming queue, and Jeff's littler page at Vanderbilt should reflect the new release soon too.
The principal change is an added initialization to prevent the reported segfault,
as well as a small improvement to the update.r
script (which
makes it easy to keep your CRAN
packages up-to-date). I use littler all-day-long at work, and have found it
rather reliable and easy, including during upgrades of the underlying R
version.
This version is a simple maintenance release that adds a call of
path.expand()
around the optional file argument so that things
like ~
get expanded by R. My thanks to Jarek Tuszynski and Tom
Bloemberg for the suggestion.