[Robast-commits] r293 - in pkg/RobLoxBioC: . R inst inst/scripts man
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Tue Apr 21 20:02:54 CEST 2009
Author: stamats
Date: 2009-04-21 20:02:54 +0200 (Tue, 21 Apr 2009)
New Revision: 293
Added:
pkg/RobLoxBioC/R/AffySimStudyFunction.R
pkg/RobLoxBioC/man/AffySimStudy.Rd
Removed:
pkg/RobLoxBioC/inst/scripts/AffySimStudyFunction.R
Modified:
pkg/RobLoxBioC/DESCRIPTION
pkg/RobLoxBioC/NAMESPACE
pkg/RobLoxBioC/inst/NEWS
pkg/RobLoxBioC/inst/scripts/AffySimStudy.R
pkg/RobLoxBioC/inst/scripts/IlluminaExample.R
pkg/RobLoxBioC/man/0RobLoxBioC-package.Rd
pkg/RobLoxBioC/man/KolmogorovMinDist.Rd
pkg/RobLoxBioC/man/robloxbioc.Rd
Log:
moved function AffySimStudy from folder inst/scripts to folder R as exported and documented function to perform Monte-Carlo studies.
Modified: pkg/RobLoxBioC/DESCRIPTION
===================================================================
--- pkg/RobLoxBioC/DESCRIPTION 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/DESCRIPTION 2009-04-21 18:02:54 UTC (rev 293)
@@ -5,7 +5,7 @@
Description: Functions for the determination of optimally robust
influence curves and estimators for preprocessing omics data,
in particular gene expression data.
-Depends: R(>= 2.8.1), methods, Biobase, affy, beadarray, distr
+Depends: R(>= 2.8.1), methods, Biobase, affy, beadarray, distr, RobLox, lattice, RColorBrewer
Author: Matthias Kohl <Matthias.Kohl at stamats.de>
Maintainer: Matthias Kohl <Matthias.Kohl at stamats.de>
LazyLoad: yes
Modified: pkg/RobLoxBioC/NAMESPACE
===================================================================
--- pkg/RobLoxBioC/NAMESPACE 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/NAMESPACE 2009-04-21 18:02:54 UTC (rev 293)
@@ -1,3 +1,4 @@
import("methods")
exportMethods("robloxbioc", "KolmogorovMinDist")
+export("AffySimStudy")
Added: pkg/RobLoxBioC/R/AffySimStudyFunction.R
===================================================================
--- pkg/RobLoxBioC/R/AffySimStudyFunction.R (rev 0)
+++ pkg/RobLoxBioC/R/AffySimStudyFunction.R 2009-04-21 18:02:54 UTC (rev 293)
@@ -0,0 +1,119 @@
+###############################################################################
+## Function to perform simulation study comparing Tukey's biweight with
+## rmx estimators
+###############################################################################
+AffySimStudy <- function(n, M, eps, seed = 123, eps.lower = 0, eps.upper = 0.05,
+ steps = 3L, fsCor = TRUE, contD,
+ plot1 = FALSE, plot2 = FALSE, plot3 = FALSE){
+ stopifnot(n >= 3)
+ stopifnot(eps >= 0, eps <= 0.5)
+ if(plot1){
+ from <- min(-6, q(contD)(1e-15))
+ to <- max(6, q(contD)(1-1e-15))
+ curve(pnorm, from = from, to = to, lwd = 2, n = 201,
+ main = "Comparison: ideal vs. real", ylab = "cdf")
+ fun <- function(x) (1-eps)*pnorm(x) + eps*p(contD)(x)
+ curve(fun, from = from, to = to, add = TRUE, col = "orange",
+ lwd = 2, n = 201, ylab = "cdf")
+ legend("topleft", legend = c("ideal", "real"),
+ fill = c("black", "orange"))
+ }
+
+ set.seed(seed)
+ r <- rbinom(n*M, prob = eps, size = 1)
+ Mid <- rnorm(n*M)
+ Mcont <- r(contD)(n*M)
+ Mre <- matrix((1-r)*Mid + r*Mcont, ncol = n)
+ ind <- rowSums(matrix(r, ncol = n)) >= n/2
+ while(any(ind)){
+ M1 <- sum(ind)
+ cat("Samples to re-simulate:\t", M1, "\n")
+ r <- rbinom(n*M1, prob = eps, size = 1)
+ Mid <- rnorm(n*M1)
+ Mcont <- r(contD)(n*M1)
+ Mre[ind,] <- (1-r)*Mid + r*Mcont
+ ind[ind] <- rowSums(matrix(r, ncol = n)) >= n/2
+ }
+ rm(Mid, Mcont, r, ind)
+
+
+ if(plot2){
+ ind <- sample(1:M, min(M, 20))
+ if(plot1) dev.new()
+ print(
+ stripplot(rep(1:20, each = 20) ~ as.vector(Mre[ind,]),
+ ylab = "samples", xlab = "x", pch = 20,
+ main = "Randomly chosen samples")
+ )
+ }
+
+ ## ML-estimator: mean and sd
+ Mean <- rowMeans(Mre)
+ Sd <- sqrt(rowMeans((Mre-Mean)^2))
+ ## Median and MAD
+ Median <- rowMedians(Mre)
+ Mad <- rowMedians(abs(Mre - Median))/qnorm(0.75)
+ ## Tukey 1-step + MAD
+ Tukey <- apply(Mre, 1, function(x) tukey.biweight(x))
+ Tukey <- cbind(Tukey, Mad)
+
+ ## Radius-minimax estimator
+ RadMinmax <- estimate(rowRoblox(Mre, eps.lower = eps.lower,
+ eps.upper = eps.upper, k = steps,
+ fsCor = fsCor))
+
+ if(plot3){
+ Ergebnis1 <- list(Mean, Median, Tukey[,1], RadMinmax[,1])
+ Ergebnis2 <- list(Sd, Mad, Tukey[,2], RadMinmax[,2])
+ myCol <- brewer.pal(4, "Dark2")
+ if(plot1 || plot2) dev.new()
+ layout(matrix(c(1, 1, 1, 1, 3, 2, 2, 2, 2, 3), ncol = 2))
+ boxplot(Ergebnis1, col = myCol, pch = 20, main = "Location")
+ abline(h = 0)
+ boxplot(Ergebnis2, col = myCol, pch = 20, main = "Scale")
+ abline(h = 1)
+ op <- par(mar = rep(2, 4))
+ plot(c(0,1), c(1, 0), type = "n", axes = FALSE)
+ legend("center", c("ML", "Med/MAD", "biweight", "rmx"),
+ fill = myCol, ncol = 5, cex = 1.5)
+ on.exit(par(op))
+ }
+
+ ## ML-estimator
+ MSE1.1 <- n*mean(Mean^2)
+ ## Median + MAD
+ MSE2.1 <- n*mean(Median^2)
+ ## Tukey
+ MSE3.1 <- n*mean(Tukey[,1]^2)
+ ## Radius-minimax
+ MSE4.1 <- n*mean(RadMinmax[,1]^2)
+ empMSE <- data.frame(ML = MSE1.1, Med = MSE2.1, Tukey = MSE3.1, "rmx" = MSE4.1)
+ rownames(empMSE) <- "n x empMSE (loc)"
+ relMSE <- empMSE[1,]/empMSE[1,4]
+ empMSE <- rbind(empMSE, relMSE)
+ rownames(empMSE)[2] <- "relMSE (loc)"
+
+ ## ML-estimator
+ MSE1.2 <- n*mean((Sd-1)^2)
+ ## Median + MAD
+ MSE2.2 <- n*mean((Mad-1)^2)
+ ## Tukey
+ MSE3.2 <- MSE2.2
+ ## Radius-minimax
+ MSE4.2 <- n*mean((RadMinmax[,2]-1)^2)
+ empMSE <- rbind(empMSE, c(MSE1.2, MSE2.2, MSE3.2, MSE4.2))
+ rownames(empMSE)[3] <- "n x empMSE (scale)"
+ relMSE <- empMSE[3,]/empMSE[3,4]
+ empMSE <- rbind(empMSE, relMSE)
+ rownames(empMSE)[4] <- "relMSE (scale)"
+ empMSE <- rbind(empMSE, c(MSE1.1 + MSE1.2, MSE2.1 + MSE2.2, MSE3.1 + MSE3.2,
+ MSE4.1 + MSE4.2))
+ rownames(empMSE)[5] <- "n x empMSE (loc + scale)"
+ relMSE <- empMSE[5,]/empMSE[5,4]
+ empMSE <- rbind(empMSE, relMSE)
+ rownames(empMSE)[6] <- "relMSE (loc + scale)"
+
+ empMSE
+}
+
+
Modified: pkg/RobLoxBioC/inst/NEWS
===================================================================
--- pkg/RobLoxBioC/inst/NEWS 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/inst/NEWS 2009-04-21 18:02:54 UTC (rev 293)
@@ -7,6 +7,8 @@
#######################################
+ added finite-sample correction
+ handle cases with sample size <= 2 and contamination eps = 0
++ moved function AffySimStudy from folder inst/scripts to folder R as
+ exported and documented function to perform Monte-Carlo studies.
#######################################
version 0.3
Modified: pkg/RobLoxBioC/inst/scripts/AffySimStudy.R
===================================================================
--- pkg/RobLoxBioC/inst/scripts/AffySimStudy.R 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/inst/scripts/AffySimStudy.R 2009-04-21 18:02:54 UTC (rev 293)
@@ -2,14 +2,6 @@
## Simulation study comparing Tukey's biweight with the rmx estimator
###############################################################################
-library(affy)
-library(RobLox)
-library(distr)
-library(RColorBrewer)
-
-## Load function AffySimStudy which is in file "AffySimStudyFunction.R"
-source(file = "AffySimStudyFunction.R")
-
## fixed variables
n <- 11
M <- 1e5
Deleted: pkg/RobLoxBioC/inst/scripts/AffySimStudyFunction.R
===================================================================
--- pkg/RobLoxBioC/inst/scripts/AffySimStudyFunction.R 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/inst/scripts/AffySimStudyFunction.R 2009-04-21 18:02:54 UTC (rev 293)
@@ -1,130 +0,0 @@
-###############################################################################
-## Function to perform simulation study comparing Tukey's biweight with the
-## rmx estimator
-###############################################################################
-
-## n: sample size
-## M: Monte Carlo replications
-## eps: amount of contamination
-## seed: seed for simulations
-## eps.lower: eps.lower for rmx estimator
-## eps.upper: eps.upper for rmx estimator
-## steps: number of steps used for estimator construction
-## fsCor: perform finite-sample correction
-## contD: contaminating distribution
-## plot1: plot densities of ideal and real situation
-## plot2: plot 20 randomly chosen samples out of the M samples
-## plot3: boxplots of the estimates
-AffySimStudy <- function(n, M, eps, seed = 123, eps.lower = 0, eps.upper = 0.2,
- steps = 3, fsCor = TRUE, contD,
- plot1 = TRUE, plot2 = FALSE, plot3 = TRUE){
- if(plot1){
- from <- min(-6, q(contD)(1e-15))
- to <- max(6, q(contD)(1-1e-15))
- curve(dnorm, from = from, to = to, lwd = 2, n = 201,
- main = "Comparison: ideal vs. real")
- fun <- function(x) (1-eps)*dnorm(x)+eps*d(contD)(x)
- curve(fun, from = from, to = to, add = TRUE, col = "orange",
- lwd = 2, n = 201)
- legend("topleft", legend = c("ideal", "real"),
- fill = c("black", "orange"))
- }
-
- set.seed(seed)
- r <- rbinom(n*M, prob = eps, size = 1)
- Mid <- rnorm(n*M)
- Mcont <- r(contD)(n*M)
- Mre <- matrix((1-r)*Mid + r*Mcont, ncol = n)
- ind <- rowSums(matrix(r, ncol = n)) >= n/2
- while(any(ind)){
- M1 <- sum(ind)
- cat("Samples to re-simulate:\t", M1, "\n")
- r <- rbinom(n*M1, prob = eps, size = 1)
- Mid <- rnorm(n*M1)
- Mcont <- r(contD)(n*M1)
- Mre[ind,] <- (1-r)*Mid + r*Mcont
- ind[ind] <- rowSums(matrix(r, ncol = n)) >= n/2
- }
-
-
- if(plot2){
- library(lattice)
- ind <- sample(1:M, 20)
- if(plot1) dev.new()
- print(
- stripplot(rep(1:20, each = 20) ~ as.vector(Mre[ind,]),
- ylab = "samples", xlab = "x", pch = 20,
- main = "Randomly chosen samples")
- )
- }
-
- ## ML-estimator: mean and sd
- Mean <- rowMeans(Mre)
- Sd <- sqrt(rowMeans((Mre-Mean)^2))
- ## Median and MAD
- Median <- rowMedians(Mre)
- Mad <- rowMedians(abs(Mre - Median))/qnorm(0.75)
- ## Tukey 1-step + MAD
- Tukey <- apply(Mre, 1, function(x) tukey.biweight(x))
- Tukey <- cbind(Tukey, Mad)
-
- ## Radius-minimax estimator
- RadMinmax <- estimate(rowRoblox(Mre, eps.lower = eps.lower,
- eps.upper = eps.upper, k = steps,
- fsCor = fsCor))
-
- if(plot3){
- Ergebnis1 <- list(Mean, Median, Tukey[,1], RadMinmax[,1])
- Ergebnis2 <- list(Sd, Mad, Tukey[,2], RadMinmax[,2])
- myCol <- brewer.pal(4, "Dark2")
- if(plot1 || plot2) dev.new()
- layout(matrix(c(1, 1, 1, 1, 3, 2, 2, 2, 2, 3), ncol = 2))
- boxplot(Ergebnis1, col = myCol, pch = 20, main = "Location")
- abline(h = 0)
- boxplot(Ergebnis2, col = myCol, pch = 20, main = "Scale")
- abline(h = 1)
- op <- par(mar = rep(2, 4))
- plot(c(0,1), c(1, 0), type = "n", axes = FALSE)
- legend("center", c("ML", "Med/MAD", "biweight", "rmx"),
- fill = myCol, ncol = 5, cex = 1.5)
- par(op)
- }
-
- ## ML-estimator
- MSE1.1 <- n*mean(Mean^2)
- ## Median + MAD
- MSE2.1 <- n*mean(Median^2)
- ## Tukey
- MSE3.1 <- n*mean(Tukey[,1]^2)
- ## Radius-minimax
- MSE4.1 <- n*mean(RadMinmax[,1]^2)
- empMSE <- data.frame(ML = MSE1.1, Med = MSE2.1, Tukey = MSE3.1, "rmx" = MSE4.1)
- rownames(empMSE) <- "n x empMSE (loc)"
- relMSE <- empMSE[1,]/empMSE[1,4]
- empMSE <- rbind(empMSE, relMSE)
- rownames(empMSE)[2] <- "relMSE (loc)"
-
- ## ML-estimator
- MSE1.2 <- n*mean((Sd-1)^2)
- ## Median + MAD
- MSE2.2 <- n*mean((Mad-1)^2)
- ## Tukey
- MSE3.2 <- MSE2.2
- ## Radius-minimax
- MSE4.2 <- n*mean((RadMinmax[,2]-1)^2)
- empMSE <- rbind(empMSE, c(MSE1.2, MSE2.2, MSE3.2, MSE4.2))
- rownames(empMSE)[3] <- "n x empMSE (scale)"
- relMSE <- empMSE[3,]/empMSE[3,4]
- empMSE <- rbind(empMSE, relMSE)
- rownames(empMSE)[4] <- "relMSE (scale)"
- empMSE <- rbind(empMSE, c(MSE1.1 + MSE1.2, MSE2.1 + MSE2.2, MSE3.1 + MSE3.2,
- MSE4.1 + MSE4.2))
- rownames(empMSE)[5] <- "n x empMSE (loc + scale)"
- relMSE <- empMSE[5,]/empMSE[5,4]
- empMSE <- rbind(empMSE, relMSE)
- rownames(empMSE)[6] <- "relMSE (loc + scale)"
-
- empMSE
-}
-
-
Modified: pkg/RobLoxBioC/inst/scripts/IlluminaExample.R
===================================================================
--- pkg/RobLoxBioC/inst/scripts/IlluminaExample.R 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/inst/scripts/IlluminaExample.R 2009-04-21 18:02:54 UTC (rev 293)
@@ -19,8 +19,36 @@
## http://www.compbio.group.cam.ac.uk/Resources/spike/index.html
###############################################################################
+## Load the required packages
+library(beadarray)
+library(gplots)
+library(RColorBrewer)
+library(RobLoxBioC)
+
+
+###########################################################
+## Read targets information
+targets <- read.table("./SpikeInData/spike_targets.txt",header=TRUE)
+arraynms <- as.character(targets$ArrayNo)
+
+## Use sharpened, subtracted data from text files
+spikeInData <- readIllumina(path = "./SpikeInData", arrayNames=arraynms[1:2],
+ useImages=FALSE, textType=".csv")
+#save(spikeInData, compress = TRUE, file = "spikeInData.RData")
+#load(file = "spikeInData.RData")
+
+## takes more than 100 min on Intel P9500 (64bit Linux, 4 GByte RAM)
+system.time(minKD <- KolmogorovMinDist(spikeInData, Norm(), imagesPerArray = 2))
+save(minKD, compress = TRUE, file = "minKD_Illumina.RData")
+
+## load the results from R-forge ...
+con <- url("http://robast.r-forge.r-project.org/data/minKD_hgu95a.RData")
+load(file = con)
+close(con)
+
+
###############################################################################
-## This example is based on the R code of Mark Dunning and Matt Ritchie
+## The following example is based on the R code of Mark Dunning and Matt Ritchie
## available under
## http://www.compbio.group.cam.ac.uk/Resources/spike/scripts/Analysis.R
##
@@ -36,12 +64,6 @@
## Mark Dunning and Matt Ritchie
########################################
-## Load the required packages
-library(beadarray)
-library(gplots)
-library(RColorBrewer)
-library(RobLoxBioC)
-
###############################################################################
## Extract all *.zip file to directory "SpikeInData".
## Copy spike_targets.txt to directory "SpikeInData".
Modified: pkg/RobLoxBioC/man/0RobLoxBioC-package.Rd
===================================================================
--- pkg/RobLoxBioC/man/0RobLoxBioC-package.Rd 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/man/0RobLoxBioC-package.Rd 2009-04-21 18:02:54 UTC (rev 293)
@@ -14,7 +14,7 @@
Package: \tab RobLoxBioC\cr
Version: \tab 0.4 \cr
Date: \tab 2009-04-21 \cr
-Depends: \tab R (>= 2.8.1), methods, Biobase, affy, beadarray, distr\cr
+Depends: \tab R (>= 2.8.1), methods, Biobase, affy, beadarray, distr, RobLox, lattice, RColorBrewer\cr
LazyLoad: \tab yes\cr
License: \tab LGPL-3\cr
URL: \tab http://robast.r-forge.r-project.org/\cr
@@ -28,6 +28,9 @@
Kohl, M. (2005) \emph{Numerical Contributions to the Asymptotic Theory of Robustness}.
Bayreuth: Dissertation.
+ Kohl M. and Deigner H.P. (2009). Using infinitesimally robust estimators for
+ preprocessing gene expression data. In preparation.
+
Rieder, H. (1994) \emph{Robust Asymptotic Statistics}. New York: Springer.
Rieder, H., Kohl, M. and Ruckdeschel, P. (2008) The Costs of not Knowing
Added: pkg/RobLoxBioC/man/AffySimStudy.Rd
===================================================================
--- pkg/RobLoxBioC/man/AffySimStudy.Rd (rev 0)
+++ pkg/RobLoxBioC/man/AffySimStudy.Rd 2009-04-21 18:02:54 UTC (rev 293)
@@ -0,0 +1,58 @@
+\name{AffySimStudy}
+\Rdversion{1.1}
+\alias{AffySimStudy}
+\title{Perform Monte-Carlo Study comparing Tukey's biweight and rmx estimators.}
+\description{
+ The function can be used to perform Monte-Carlo studies comparing Tukey's
+ biweight and rmx estimators for normal location and scale. In addition,
+ maximum likelihood (ML) estimators (mean and sd) and median and MAD are
+ computed. The comparison is based on the empirical MSE.
+}
+\usage{
+AffySimStudy(n, M, eps, seed = 123, eps.lower = 0, eps.upper = 0.05, steps = 3L,
+ fsCor = TRUE, contD, plot1 = FALSE, plot2 = FALSE, plot3 = FALSE)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+ \item{n}{integer; sample size, should be at least 3.}
+ \item{M}{integer; Monte-Carlo replications.}
+ \item{eps}{amount of contamination in [0, 0.5].}
+ \item{seed}{random seed.}
+ \item{eps.lower}{used by rmx estimator.}
+ \item{eps.upper}{used by rmx estimator.}
+ \item{steps}{integer; steps used for estimator construction.}
+ \item{fsCor}{logical; use finite-sample correction.}
+ \item{contD}{object of class \code{"UnivariateDistribution"}; contaminating distribution.}
+ \item{plot1}{logical; plot cdf of ideal and real distribution.}
+ \item{plot2}{logical; plot 20 (or M if M < 20) randomly selected samples.}
+ \item{plot3}{logical; generate boxplots of the results.}
+}
+\details{
+Normal location and scale with mean = 0 and sd = 1 is used as ideal model (without
+restriction due to equivariance).
+
+Since there is no estimator which yields reliable results if 50 percent or more of the
+observations are contaminated, we use a modification where we re-simulate all samples
+including at least 50 percent contaminated data.
+
+We use funtion \code{\link[RobLox]{rowRoblox}} for the computation of the rmx estimator.
+}
+\value{Data.frame including empirical MSE (standardized by sample size n) and
+relMSE with respect to the rmx estimator.
+}
+\references{
+ Affymetrix, Inc. (2002). \emph{Statistical Algorithms Description Document}.
+ Affymetrix, Santa Clara.
+
+ Kohl M. and Deigner H.P. (2009). Using infinitesimally robust estimators for
+ preprocessing gene expression data. In preparation.
+}
+\author{Matthias Kohl \email{Matthias.Kohl at stamats.de}}
+%\note{}
+\seealso{\code{\link[RobLox]{rowRoblox}}}
+\examples{
+AffySimStudy(n = 11, M = 100, eps = 0.02, contD = Norm(mean = 0, sd = 3),
+ plot1 = TRUE, plot2 = TRUE, plot3 = TRUE)
+}
+\concept{Monte-Carlo study}
+\keyword{robust}
Modified: pkg/RobLoxBioC/man/KolmogorovMinDist.Rd
===================================================================
--- pkg/RobLoxBioC/man/KolmogorovMinDist.Rd 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/man/KolmogorovMinDist.Rd 2009-04-21 18:02:54 UTC (rev 293)
@@ -55,6 +55,9 @@
\references{
Huber, P.J. (1981) \emph{Robust Statistics}. New York: Wiley.
+ Kohl M. and Deigner H.P. (2009). Using infinitesimally robust estimators for
+ preprocessing gene expression data. In preparation.
+
Rieder, H. (1994) \emph{Robust Asymptotic Statistics}. New York: Springer.
}
\author{Matthias Kohl \email{Matthias.Kohl at stamats.de}}
Modified: pkg/RobLoxBioC/man/robloxbioc.Rd
===================================================================
--- pkg/RobLoxBioC/man/robloxbioc.Rd 2009-04-21 16:50:26 UTC (rev 292)
+++ pkg/RobLoxBioC/man/robloxbioc.Rd 2009-04-21 18:02:54 UTC (rev 293)
@@ -108,6 +108,9 @@
Kohl, M. (2005) \emph{Numerical Contributions to the Asymptotic Theory of Robustness}.
Bayreuth: Dissertation.
+ Kohl M. and Deigner H.P. (2009). Using infinitesimally robust estimators for
+ preprocessing gene expression data. In preparation.
+
Rieder, H. (1994) \emph{Robust Asymptotic Statistics}. New York: Springer.
Rieder, H., Kohl, M. and Ruckdeschel, P. (2008) The Costs of not Knowing
More information about the Robast-commits
mailing list