[Rsiena-commits] r231 - in pkg: RSiena RSiena/R RSiena/inst/doc RSiena/man RSiena/tests RSienaTest RSienaTest/R RSienaTest/doc RSienaTest/inst/doc RSienaTest/man

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sat Jun 15 23:01:06 CEST 2013


Author: tomsnijders
Date: 2013-06-15 23:01:05 +0200 (Sat, 15 Jun 2013)
New Revision: 231

Modified:
   pkg/RSiena/DESCRIPTION
   pkg/RSiena/R/globals.r
   pkg/RSiena/R/initializeFRAN.r
   pkg/RSiena/R/phase1.r
   pkg/RSiena/R/phase2.r
   pkg/RSiena/R/phase3.r
   pkg/RSiena/R/print01Report.r
   pkg/RSiena/R/sienaGOF.r
   pkg/RSiena/R/sienaTimeTest.r
   pkg/RSiena/R/sienaprint.r
   pkg/RSiena/changeLog
   pkg/RSiena/inst/doc/RSiena.bib
   pkg/RSiena/inst/doc/RSiena_Manual.pdf
   pkg/RSiena/inst/doc/RSiena_Manual.tex
   pkg/RSiena/man/RSiena-package.Rd
   pkg/RSiena/man/coCovar.Rd
   pkg/RSiena/man/coDyadCovar.Rd
   pkg/RSiena/man/plot.sienaTimeTest.Rd
   pkg/RSiena/man/sienaAlgorithmCreate.Rd
   pkg/RSiena/man/sienaCompositionChange.Rd
   pkg/RSiena/man/sienaDependent.Rd
   pkg/RSiena/man/sienaGOF-auxiliary.Rd
   pkg/RSiena/man/sienaGOF.Rd
   pkg/RSiena/man/sienaTimeTest.Rd
   pkg/RSiena/man/varCovar.Rd
   pkg/RSiena/man/varDyadCovar.Rd
   pkg/RSiena/tests/scripts.Rout.save
   pkg/RSienaTest/DESCRIPTION
   pkg/RSienaTest/R/globals.r
   pkg/RSienaTest/R/initializeFRAN.r
   pkg/RSienaTest/R/phase1.r
   pkg/RSienaTest/R/phase2.r
   pkg/RSienaTest/R/phase3.r
   pkg/RSienaTest/R/print01Report.r
   pkg/RSienaTest/R/sienaGOF.r
   pkg/RSienaTest/R/sienaTimeTest.r
   pkg/RSienaTest/R/sienaprint.r
   pkg/RSienaTest/changeLog
   pkg/RSienaTest/doc/
   pkg/RSienaTest/doc/RSienaDeveloper.tex
   pkg/RSienaTest/doc/Siena_algorithms4.tex
   pkg/RSienaTest/inst/doc/RSiena.bib
   pkg/RSienaTest/inst/doc/RSiena_Manual.pdf
   pkg/RSienaTest/inst/doc/RSiena_Manual.tex
   pkg/RSienaTest/man/RSiena-package.Rd
   pkg/RSienaTest/man/coCovar.Rd
   pkg/RSienaTest/man/coDyadCovar.Rd
   pkg/RSienaTest/man/plot.sienaTimeTest.Rd
   pkg/RSienaTest/man/sienaAlgorithmCreate.Rd
   pkg/RSienaTest/man/sienaCompositionChange.Rd
   pkg/RSienaTest/man/sienaDependent.Rd
   pkg/RSienaTest/man/sienaGOF-auxiliary.Rd
   pkg/RSienaTest/man/sienaGOF.Rd
   pkg/RSienaTest/man/varCovar.Rd
   pkg/RSienaTest/man/varDyadCovar.Rd
Log:
Bug fixes of auxiliary functions for sienaGOF.
If there is a composition change, force estimation to be non-conditional.
Some other small changes.

Modified: pkg/RSiena/DESCRIPTION
===================================================================
--- pkg/RSiena/DESCRIPTION	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/DESCRIPTION	2013-06-15 21:01:05 UTC (rev 231)
@@ -1,8 +1,8 @@
 Package: RSiena
 Type: Package
 Title: Siena - Simulation Investigation for Empirical Network Analysis
-Version: 1.1-230
-Date: 2013-05-10
+Version: 1.1-231
+Date: 2013-06-15
 Author: Various
 Depends: R (>= 2.15.0)
 Imports: Matrix

Modified: pkg/RSiena/R/globals.r
===================================================================
--- pkg/RSiena/R/globals.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/globals.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -1,7 +1,7 @@
 ##/*****************************************************************************
 ## * SIENA: Simulation Investigation for Empirical Network Analysis
 ## *
-## * Web: http://www.stats.ox.ac.uk/~snidjers/siena
+## * Web: http://www.stats.ox.ac.uk/~snijders/siena
 ## *
 ## * File: globals.r
 ## *

Modified: pkg/RSiena/R/initializeFRAN.r
===================================================================
--- pkg/RSiena/R/initializeFRAN.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/initializeFRAN.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -176,7 +176,7 @@
         types <- sapply(data[[1]]$depvars, function(x) attr(x, "type"))
         ## now check if conditional estimation is OK and copy to z if so
         z$cconditional <- FALSE
-        if (x$cconditional)
+        if ((x$cconditional) & (!(attr(data, "compositionChange"))))
         {
             if (x$maxlike)
             {
@@ -299,8 +299,24 @@
                 z$haveDfra <- TRUE
                 z$dfra <- prevAns$dfra
                 z$dinv <- prevAns$dinv
-                z$dinvv <- prevAns$dinvv
-                z$sf <- prevAns$sf
+				# z$dinvv must not be taken from prevAns,
+				# because the value of diagonalize
+				# is defined in x and may have changed.
+				# Therefore here we copy the corresponding lines
+				# from phase1.r.
+				if (!x$diagg)
+				{
+					# Partial diagonalization of derivative matrix
+					# for use if 0 < x$diagonalize < 1.
+					temp <- (1-x$diagonalize)*z$dfra +
+							x$diagonalize*diag(diag(z$dfra))
+					temp[z$fixed, ] <- 0.0
+					temp[, z$fixed] <- 0.0
+					diag(temp)[z$fixed] <- 1.0
+					# Invert this matrix
+					z$dinvv <- solve(temp)
+				}
+				z$sf <- prevAns$sf
 				# check for backward compatibility with pre-1.1-220 versions:
 				if (is.null(prevAns$regrCoef))
 				{

Modified: pkg/RSiena/R/phase1.r
===================================================================
--- pkg/RSiena/R/phase1.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/phase1.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -185,6 +185,7 @@
         z$mnfra[z$fixed] <- 0.0
         z$sf[ , z$fixed] <- 0
     }
+	# Manage derivative matrix
     if (any(diag(z$dfra) < 1e-8))
     {
         sml <- (1 : z$pp)[diag(z$dfra) < 1e-8]
@@ -192,6 +193,7 @@
         Report(c('Diagonal elements(s)', sml,
                  'of derivative matrix amended in phase 1.'), cf, fill=80)
     }
+	# Invert derivative matrix and define step fchange that will not be made.
     if (inherits(try(dinv <- solve(z$dfra)), "try-error"))
     {
         Report('Error message for inversion of dfra: \n', cf)
@@ -217,10 +219,13 @@
     }
 	if (!x$diagg) 
 	{
+		# Partial diagonalization of derivative matrix
+		# for use if 0 < x$diagonalize < 1.
 		temp <- (1-x$diagonalize)*z$dfra + x$diagonalize*diag(diag(z$dfra))
 		temp[z$fixed, ] <- 0.0
 		temp[, z$fixed] <- 0.0
 		diag(temp)[z$fixed] <- 1.0
+		# Invert this matrix
 		z$dinvv <- solve(temp)
 	}
     Report('dfra :\n', cf)

Modified: pkg/RSiena/R/phase2.r
===================================================================
--- pkg/RSiena/R/phase2.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/phase2.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -145,7 +145,7 @@
     }
     if (useAverage)
     {
-		z$theta <- z$thav / z$thavn   #(z$nit + 1)
+		z$theta <- z$thav / z$thavn   # z$thavn = (z$nit + 1)
     }
     else
 	{
@@ -302,9 +302,7 @@
                 z$OK <- FALSE
                 break
             }
-			
-			
-			
+
         }
 		## setup check for end of phase. either store or calculate
         if (z$nit %% 2 == 1)

Modified: pkg/RSiena/R/phase3.r
===================================================================
--- pkg/RSiena/R/phase3.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/phase3.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -142,6 +142,8 @@
     ##calculate t-ratios
     dmsf <- diag(z$msf)
     sf <- colMeans(z$sf)
+	# TS: I wonder why "use" and "use2" are the names in the following lines;
+	# the coordinates with "use" are <<not>> used.
     use <- dmsf < 1e-20 * z$scale * z$scale
     use2 <- abs(sf) < 1e-10 * z$scale
     dmsf[use] <- 1e-20 * z$scale[use] * z$scale[use]
@@ -150,13 +152,13 @@
     tstat[use & use2] <- 0
     tstat[use & !use2] <- 999
     z$tstat <- tstat
-	# tconv.max = Maximum value of t-ratio for convergence, 
+	# tconv.max = Maximum value of t-ratio for convergence,
 	# for any linear combination.
 	z$tconv.max <- NA
 	if (sum(!z$fixed) > 0)
 	{
 		mean.dev <- colSums(z$sf)[!z$fixed]/dim(z$sf)[1]
-		cov.dev <- z$msf[!z$fixed,!z$fixed]		
+		cov.dev <- z$msf[!z$fixed,!z$fixed]
 		if (inherits(try(thisproduct <- solve(cov.dev, mean.dev)),"try-error"))
 		{
 			Report('Maximum t-ratio for convergence not computable.\n', outf)
@@ -192,7 +194,7 @@
 	{
         Report(c('(Since the diagnostic checks now are based only on ',
                  z$Phase3nits,
-                 ' iterations', '\nThey are not reliable.)'), sep='', outf)
+                 ' iterations,', '\nthey are not reliable.)\n'), sep='', outf)
 	}
     if (error) ## also test subphase here but not relevant to phase 3, I think
     {
@@ -204,7 +206,7 @@
 		## removed repfortotal loop possibility here as not functioning now
         if (z$Phase3nits <= 50)
 		{
-            Report(c('However, the standard deviations are based on',
+            Report(c('Note that the standard deviations are based on',
                      'few simulations.\n'), outf)
 		}
 	}
@@ -387,6 +389,7 @@
         fchange <- dinv%*%colMeans(z$sf)
         z$dinv <- dinv
     }
+	z$fchange <- fchange
     Report('dfrac :\n', cf)
     PrtOutMat(z$dfrac, cf)
     Report('inverse of dfra :\n', cf)

Modified: pkg/RSiena/R/print01Report.r
===================================================================
--- pkg/RSiena/R/print01Report.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/print01Report.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -524,9 +524,12 @@
 						 format(round(atts$mean, 3),
 								nsmall=3, width=10), "\n"), outf)
 			}
-			Report(c("The mean value", ifelse(nCovars == 1, " is", "s are"),
+			if (nData <= 1)
+			{
+				Report(c("The mean value", ifelse(nCovars == 1, " is", "s are"),
 					 " subtracted from the covariate",
 					 ifelse(nCovars == 1, ".\n\n", "s.\n\n")), sep="", outf)
+			}
 		}
 		##@reportChangingCovariates internal print01Report
 		reportChangingCovariates <- function()
@@ -616,15 +619,18 @@
 								 format(round(atts$meanp[j], 3),
 										nsmall=3, width=10), "\n"), outf)
 					}
-					Report(c(format("Overall", width=28),
+					Report(c(format("Overall", width=29),
 							 format(round(atts$mean, 3), width=10, nsmall=3),
 							 "\n"), outf)
 
 				}
 			}
-			Report("\nThe overall mean value", outf)
-			Report(c(ifelse(nCovars	 == 1, " is", "s are"),
+			if (nData <= 1)
+			{
+				Report("\nThe overall mean value", outf)
+				Report(c(ifelse(nCovars	 == 1, " is", "s are"),
 					 "subtracted from the covariate.\n\n"),	 outf)
+			}
 		}
 		##@reportConstantDyadicCovariates internal print01Report
 		reportConstantDyadicCovariates <- function()
@@ -876,6 +882,7 @@
 	nets <- atts$types != "behavior"
 	if (length(data) > 1)
 	{
+		Heading(1, outf, "Further processing of multi-group data.")
 		Report("Series of observations for the multi-group project:\n", outf)
 		periodFromStart <- 0
 		for (i in seq(along=data))
@@ -885,6 +892,22 @@
 			periodFromStart <- periodFromStart + data[[i]]$observations
 		}
 		Report("\n", outf)
+		if (length(atts$vCovars) == 1) 
+		{
+			Report(c("The overall mean value ",
+				format(round(atts$vCovarMean, 4), nsmall=3, width=12), 
+					 " is subtracted from covariate ", atts$vCovars, 
+					  ".\n\n"), sep="", outf)
+		}
+		else if (length(atts$vCovars) >= 2) 
+		{
+			Report(c("The mean values are subtracted from the covariates:\n"), outf)
+			for (i in seq(along=atts$vCovars))
+			{
+				Report(c(format(atts$vCovars[i], width=15), 
+				format(round(atts$vCovarMean[i], 4), nsmall=3, width=12), '\n'), outf)
+			}
+		}		
 	}
 	periodNos <- attr(data, "periodNos")
 	if (any(atts$anyUpOnly[nets]))

Modified: pkg/RSiena/R/sienaGOF.r
===================================================================
--- pkg/RSiena/R/sienaGOF.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/sienaGOF.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -40,8 +40,18 @@
 		stop("You need to supply the parameter <<auxiliaryFunction>>.")
 	}
 	groups <- length(sienaFitObject$f$groupNames)
-	if (verbose) cat("Detected", iterations, "iterations and", groups,
-				"groups.\n")
+	if (verbose)
+	{
+		if (groups <= 1)
+		{
+			cat("Detected", iterations, "iterations and", groups, "group.\n")
+		}
+		else
+		{
+			cat("Detected", iterations, "iterations and", groups, "groups.\n")
+		}
+	}
+
 	if (is.null(period) )
 	{
 		period <- 1:(attr(sienaFitObject$f[[1]]$depvars[[1]], "netdims")[3] - 1)
@@ -72,7 +82,17 @@
 	attr(obsStats,"joint") <- join
 
 	##	Calculate the simulated auxiliary statistics
-	if (verbose) cat("Calculating auxiliary statistics for periods", period, ".\n")
+	if (verbose)
+	{
+		if (length(period) <= 1)
+		{
+			cat("Calculating auxiliary statistics for period", period, ".\n")
+		}
+		else
+		{
+			cat("Calculating auxiliary statistics for periods", period, ".\n")
+		}
+	}
 
 	if (!is.null(cluster)) {
 		ttcSimulation <- system.time(simStatsByPeriod <- lapply(period,
@@ -662,31 +682,50 @@
 # Ties for ordered pairs with a missing value for wave=period or period+1
 #  are zeroed;
 # note that this also is done in RSiena for calculation of target statistics.
-sparseMatrixExtraction <- function(i, obsData, sims, period, groupName, varName)
-{
+sparseMatrixExtraction <-
+	function(i, obsData, sims, period, groupName, varName){
 	# require(Matrix)
-	dimsOfDepVar<-
-	attr(obsData[[groupName]]$depvars[[varName]], "netdims")
-	missing <- Matrix((is.na(obsData[[groupName]]$depvars[[varName]][,,period+1]) |
-				is.na(obsData[[groupName]]$depvars[[varName]][,,period+1]))*1)
+	dimsOfDepVar<- attr(obsData[[groupName]]$depvars[[varName]], "netdims")
+	if (attr(obsData[[groupName]]$depvars[[varName]], "sparse"))
+	{
+		missings <-
+			(is.na(obsData[[groupName]]$depvars[[varName]][[period]]) |
+			is.na(obsData[[groupName]]$depvars[[varName]][[period+1]]))*1
+	}
+	else
+	{
+		missings <- Matrix(
+			(is.na(obsData[[groupName]]$depvars[[varName]][,,period]) |
+			is.na(obsData[[groupName]]$depvars[[varName]][,,period+1]))*1)
+	}
 	if (is.null(i))
 	{
-		# sienaGOF wants the observation:
-		returnValue <-
-			Matrix(obsData[[groupName]]$depvars[[varName]][,,period+1])
+		# sienaGOF wants the observation;
+		# transform structurally fixed values into regular values
+		# by "modulo 10" operation
+		if (attr(obsData[[groupName]]$depvars[[varName]], "sparse"))
+		{
+			returnValue <- drop0(
+			 Matrix(obsData[[groupName]]$depvars[[varName]][[period+1]] %% 10))
+		}
+		else
+		{
+			returnValue <-
+			 Matrix(obsData[[groupName]]$depvars[[varName]][,,period+1] %% 10)
+		}
 		returnValue[is.na(returnValue)] <- 0
 	}
 	else
 	{
 		# sienaGOF wants the i-th simulation:
 		returnValue <- sparseMatrix(
-					sims[[i]][[groupName]][[varName]][[period]][,1],
-					sims[[i]][[groupName]][[varName]][[period]][,2],
-					x=sims[[i]][[groupName]][[varName]][[period]][,3],
-					dims=dimsOfDepVar[1:2] )
+				sims[[i]][[groupName]][[varName]][[period]][,1],
+				sims[[i]][[groupName]][[varName]][[period]][,2],
+				x=sims[[i]][[groupName]][[varName]][[period]][,3],
+				dims=dimsOfDepVar[1:2] )
 	}
 	## Zero missings:
-	1*((returnValue - missing) > 0)
+	1*((returnValue - missings) > 0)
 }
 
 ##@networkExtraction sienaGOF Extracts simulated networks
@@ -694,68 +733,127 @@
 # networks from the results of a siena07 run.
 # It returns the network as an edge list of class "network"
 # according to the <network> package (used for package sna).
-# Ties for ordered pairs with a missing value for wave=period or period+1 are zeroed;
+# Ties for ordered pairs with a missing value for wave=period or period+1
+# are zeroed;
 # note that this also is done in RSiena for calculation of target statistics.
-networkExtraction <- function (i, obsData, sims, period, groupName, varName)
-{
+networkExtraction <- function (i, obsData, sims, period, groupName, varName){
 	require(network)
 	dimsOfDepVar<- attr(obsData[[groupName]]$depvars[[varName]], "netdims")
-	missings <- is.na(obsData[[groupName]]$depvars[[varName]][,,period]) |
-					is.na(obsData[[groupName]]$depvars[[varName]][,,period+1])
 	isbipartite <- (attr(obsData[[groupName]]$depvars[[varName]], "type")
 						=="bipartite")
-	if (is.null(i))
+	sparseData <- (attr(obsData[[groupName]]$depvars[[varName]], "sparse"))
+	# For bipartite networks in package <network>,
+	# the number of nodes is equal to
+	# the number of actors (rows) plus the number of events (columns)
+	# with all actors preceeding all events.
+	# Therefore the bipartiteOffset will come in handy:
+	bipartiteOffset <- ifelse (isbipartite, 1 + dimsOfDepVar[1], 1)
+
+	# Initialize empty networks:
+	if (isbipartite)
+	{
+		# for bipartite networks, package <<network>> numbers
+		# the second mode vertices consecutively to the first mode.
+		emptyNetwork <- network.initialize(dimsOfDepVar[1]+dimsOfDepVar[2],
+											bipartite=dimsOfDepVar[1])
+	}
+	else
+	{
+		emptyNetwork <- network.initialize(dimsOfDepVar[1],	bipartite=NULL)
+	}
+	if (sparseData)
+	{
+		# Which tie variables are regarded as missings:
+		missings <- as(
+			is.na(obsData[[groupName]]$depvars[[varName]][[period]]) |
+			is.na(obsData[[groupName]]$depvars[[varName]][[period+1]]),
+			"lgTMatrix")
+		# For lgTMatrix, slots i and j are the rows and columns,
+		# numbered from 0 to dimension - 1.
+		# Actors in class network are numbered starting from 1.
+		# Hence 1 must be added to missings at i and missings at j.
+		# Put the missings into network shape:
+		if (length(missings at i) <= 0)
 		{
-		# sienaGOF wants the observation:
-		original <- obsData[[groupName]]$depvars[[varName]][,,period+1]
+			missings <- emptyNetwork
+		}
+		else
+		{
+			missings <- network.edgelist(
+			  cbind(missings at i + 1, missings at j + bipartiteOffset, 1), emptyNetwork)
+		}
+	}
+	else # not sparse
+	{
+		# For adjacency matrices the size is evident.
 		if (isbipartite)
-			{
-				# This will not go well if original is an edge list. TODO
-				if (dim(original)[2] < dimsOfDepVar[2]){
-				stop(
-	"networkExtraction() does not allow edge lists for bipartite networks.")}
-				returnValue <- network(original, bipartite=dimsOfDepVar[1]) -
-								network(missings, matrix.type="adjacency",
-											bipartite=dimsOfDepVar[1])
-			}
-			else
-			{
-				returnValue <- network(original, bipartite=FALSE) -
-								network(missings, bipartite=FALSE)
-			}
+		{
+			missings <- network(
+				(is.na(obsData[[groupName]]$depvars[[varName]][,,period]) |
+				is.na(obsData[[groupName]]$depvars[[varName]][,,period+1]))*1,
+				matrix.type="adjacency", bipartite=dimsOfDepVar[1])
 		}
 		else
 		{
-			#sienaGOF wants the i-th simulation:
+			missings <- network(
+				(is.na(obsData[[groupName]]$depvars[[varName]][,,period]) |
+				is.na(obsData[[groupName]]$depvars[[varName]][,,period+1]))*1,
+				matrix.type="adjacency")
+		}
+	}
+
+	if (is.null(i))
+	{
+		# sienaGOF wants the observation;
+		if (sparseData)
+		{
+		# transform structurally fixed values into regular values
+		# by "modulo 10" operation;
+		# drop NAs and 0 values
+			original <-
+				obsData[[groupName]]$depvars[[varName]][[period+1]] %% 10
+			original[is.na(original)] <- 0
+			original <- as(drop0(original), "dgTMatrix")
+		# now original at x is a column of ones;
+		# the 1 here is redundant because of the default ignore.eval=TRUE
+		# in network.edgelist
+			returnValue <- network.edgelist(
+					cbind(original at i + 1, original at j + bipartiteOffset, 1),
+					emptyNetwork) - missings
+
+		}
+		else # not sparse: deal with adjacency matrices
+		{
+			original <-
+				obsData[[groupName]]$depvars[[varName]][,,period+1] %% 10
+			original[is.na(original)] <- 0
 			if (isbipartite)
 			{
-				# for bipartite networks, package <<network>> numbers
-				# the second mode vertices consecutively to the first mode.
-				returnValue <- network(
-					cbind(sims[[i]][[groupName]][[varName]][[period]][,1],
-							(sims[[i]][[groupName]][[varName]][[period]][,2] +
-								dimsOfDepVar[1])),
-					matrix.type="edgelist", bipartite=dimsOfDepVar[1])
-				# There seems to be no function in package network to change n.
-				returnValue$gal$n <- dimsOfDepVar[1] + dimsOfDepVar[2]
-				returnValue <- 	returnValue -
-					network(missings, matrix.type="adjacency",
-							bipartite=dimsOfDepVar[1])
+				returnValue <- network(original, matrix.type="adjacency",
+									bipartite=dimsOfDepVar[1]) - missings
 			}
 			else
 			{
-				returnValue <- network(
-					cbind(sims[[i]][[groupName]][[varName]][[period]][,1],
-							sims[[i]][[groupName]][[varName]][[period]][,2]),
-				matrix.type="edgelist", bipartite=FALSE)
-				returnValue$gal$n <- dimsOfDepVar[1]
-				returnValue <- returnValue - network(missings, bipartite=FALSE)
+				returnValue <- network(original, matrix.type="adjacency",
+									bipartite=FALSE) -	missings
 			}
 		}
+	}
+	else
+	{
+		# sienaGOF wants the i-th simulation;
+		# the 1 in cbind is redundant because of the default ignore.eval=TRUE
+		# in network.edgelist
+		bipartiteOffset <- ifelse (isbipartite, dimsOfDepVar[1], 0)
+		returnValue <- network.edgelist(
+			cbind(
+			 sims[[i]][[groupName]][[varName]][[period]][,1],
+			(sims[[i]][[groupName]][[varName]][[period]][,2] + bipartiteOffset),
+						1), emptyNetwork) - missings
+	}
   returnValue
 }
 
-
 ##@behaviorExtraction sienaGOF Extracts simulated behavioral variables.
 # This function provides a standard way of extracting simulated and observed
 # dependent behavior variables from the results of a siena07 run.
@@ -765,36 +863,37 @@
 behaviorExtraction <- function (i, obsData, sims, period, groupName, varName) {
   missings <- is.na(obsData[[groupName]]$depvars[[varName]][,,period]) |
 	is.na(obsData[[groupName]]$depvars[[varName]][,,period+1])
-  if (is.null(i)) {
-	# sienaGOF wants the observation:
-	original <- obsData[[groupName]]$depvars[[varName]][,,period+1]
-	original[missings] <- NA
-	returnValue <- original
-  }
-  else
-  {
-	#sienaGOF wants the i-th simulation:
-	returnValue <- sims[[i]][[groupName]][[varName]][[period]]
-	returnValue[missings] <- NA
-  }
-  returnValue
+  if (is.null(i))
+	{
+		# sienaGOF wants the observation:
+		original <- obsData[[groupName]]$depvars[[varName]][,,period+1]
+		original[missings] <- NA
+		returnValue <- original
+	}
+	else
+	{
+		#sienaGOF wants the i-th simulation:
+		returnValue <- sims[[i]][[groupName]][[varName]][[period]]
+		returnValue[missings] <- NA
+	}
+	returnValue
 }
 
 ##@OutdegreeDistribution sienaGOF Calculates Outdegree distribution
 OutdegreeDistribution <- function(i, obsData, sims, period, groupName, varName,
 						levls=0:8, cumulative=TRUE) {
-  x <- sparseMatrixExtraction(i, obsData, sims, period, groupName, varName)
-  a <- apply(x, 1, sum)
-  if (cumulative)
-  {
-	oddi <- sapply(levls, function(i){ sum(a<=i) })
-  }
-  else
-  {
-	oddi <- sapply(levls, function(i){ sum(a==i) })
-  }
-  names(oddi) <- as.character(levls)
-  oddi
+	x <- sparseMatrixExtraction(i, obsData, sims, period, groupName, varName)
+	a <- apply(x, 1, sum)
+	if (cumulative)
+	{
+		oddi <- sapply(levls, function(i){ sum(a<=i) })
+	}
+	else
+	{
+		oddi <- sapply(levls, function(i){ sum(a==i) })
+	}
+	names(oddi) <- as.character(levls)
+	oddi
 }
 
 ##@IndegreeDistribution sienaGOF Calculates Indegree distribution
@@ -823,8 +922,14 @@
 		levls <- attr(obsData[[groupName]]$depvars[[varName]],"behRange")[1]:
 					attr(obsData[[groupName]]$depvars[[varName]],"behRange")[2]
 	}
+	if (cumulative)
+	{
+		bdi <- sapply(levls, function(i){ sum(x<=i, na.rm=TRUE) })
+	}
+	else
+	{
 	bdi <- sapply(levls, function(i){ sum(x==i, na.rm=TRUE) })
-  names(bdi) <- as.character(levls)
-  bdi
-}
-
+	}
+	names(bdi) <- as.character(levls)
+	bdi
+}
\ No newline at end of file

Modified: pkg/RSiena/R/sienaTimeTest.r
===================================================================
--- pkg/RSiena/R/sienaTimeTest.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/sienaTimeTest.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -421,7 +421,7 @@
                    as.character(toTest$type), ")", sep=""))
     toTest$effectName <-
         factor(paste(toTest$effectName, type,
-                     " \n(p=", toTest$effectTest, ")", sep=""))
+                     " \n(chisq=", toTest$effectTest, ")", sep=""))
     toTest$valsplus <- toTest$OneStepEst +
         ifelse(toTest$period == 1, 0, toTest$OneStepEst[toTest$baseEffect])
     toTest$dummysd <- abs(toTest$OneStepEst / qnorm(1 - toTest$p.value / 2))

Modified: pkg/RSiena/R/sienaprint.r
===================================================================
--- pkg/RSiena/R/sienaprint.r	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/R/sienaprint.r	2013-06-15 21:01:05 UTC (rev 231)
@@ -62,7 +62,7 @@
 		print(tmp, quote=FALSE)
 		cat("\n")
 	}
-	
+
 	for (j in (1:length(x$depvars)))
 	{
 		xj <- x$depvars[[j]]
@@ -71,7 +71,7 @@
 		mymat[2,] <- c("Type",               attr(xj, "type"))
 		mymat[3,] <- c("Observations",       attr(xj,  "netdims")[3])
 		if (attr(xj, "type") == "bipartite")
-		{	
+		{
 			mymat[4,] <- c("First nodeset ", attr(xj, "nodeSet")[1])
 			mymat[5,] <- c("Second nodeset ",attr(xj, "nodeSet")[2])
 			nrows <- 5
@@ -80,22 +80,22 @@
 		{
 			mymat[4,] <- c("Nodeset ", attr(xj, "nodeSet"))
 			nrows <- 4
-		}	
+		}
 		if (attr(xj, "type") == "behavior")
 		{
-			mymat[nrows+1,] <- c("Range", 
+			mymat[nrows+1,] <- c("Range",
 				paste(attr(xj, "range2"),  collapse=" - "))
 		}
 		else
 		{
-			mymat[nrows+1,] <- c("Densities", 
+			mymat[nrows+1,] <- c("Densities",
 				paste(signif(attr(xj, "density"), 2),  collapse=" "))
 		}
 		mymat2 <- apply(mymat[0:nrows+1,], 2, format)
 		write.table(mymat2, row.names=FALSE, col.names=FALSE, quote=FALSE)
 		cat("\n")
 	}
-	
+
 	if (length(x$cCovars) > 0)
 	{
 		cat('Constant covariates: ', paste(names(x$cCovars), collapse=", "), "\n")
@@ -406,24 +406,31 @@
 	}
 	else
 	{
-		if (is.na(x$cconditional) || !x$cconditional)
+		if (is.na(x$cconditional))
 		{
 			cat(" Unconditional simulation if more than one dependent",
 				"variable\n")
 		}
 		else
 		{
-			cat(" Conditional simulation:")
-			if (x$condname != '')
+			if (x$cconditional)
 			{
-				cat('conditioned on', x$condname, '\n')
+				cat(" Conditional simulation:")
+				if (x$condname != '')
+				{
+					cat('conditioned on', x$condname, '\n')
+				}
+				else
+				{
+					if (x$condvarno > 0)
+					{
+						cat('conditioned on variable number', x$condvarno, '\n')
+					}
+				}
 			}
 			else
 			{
-				if (x$condvarno > 0)
-				{
-					cat('conditioned on variable number', x$condvarno, '\n')
-				}
+				cat(" Unconditional simulation\n")
 			}
 		}
 	}

Modified: pkg/RSiena/changeLog
===================================================================
--- pkg/RSiena/changeLog	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/changeLog	2013-06-15 21:01:05 UTC (rev 231)
@@ -1,3 +1,27 @@
+2013-06-15 R-forge revision 231
+Changes in RSiena as well as RSienaTest:
+   * Make the "cumulative" option operational in BehaviorDistribution()
+     (sienaGOF.r).
+   * Correct bug in treatment of missing values in sparseMatrixExtraction()
+     (sienaGOF.r).
+   * Allow sparse observed data matrices, and structural zeros and ones, in
+     sparseMatrixExtraction() and networkExtraction(),
+     and bipartite networks in networkExtraction() (sienaGOF.r).
+   * In case prevAns exists, recalculate z$dinvv instead of taking it
+     from prevAns (initializeFRAN.r) (parameter diag may have changed)
+   * Report correct centering (by overall means) of individual
+     covariates for multi-group objects (print01Report.r).
+   * in sienaTimeTest: string in toTest$effectName set to "chisq="
+     instead of "p=" (sienaTimeTest.r)
+   * In print method for sienaAlgorithm, report of conditional corrected
+     in case !x$cconditional (sienaprint.r)
+   * If there is a composition change object, MoM estimation is forced
+     to be non-conditional (initializeFRAN.r). This is reported in the help file
+     (sienaCompositionChange.Rd).
+     
+   * Small changes in help files sienaAlgorithm.Rd, plot.sienaTimeTest.Rd,
+
+
 2013-05-10 R-forge revision 230
 Changes in RSiena as well as RSienaTest:
 	* Add attribute maxObsOutDegree to <object of class siena>$depvars[[.]]

Modified: pkg/RSiena/inst/doc/RSiena.bib
===================================================================
--- pkg/RSiena/inst/doc/RSiena.bib	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/inst/doc/RSiena.bib	2013-06-15 21:01:05 UTC (rev 231)
@@ -1099,7 +1099,15 @@
   year =         2010,
   pages =    {283--328}}
 
+ at article{Goldthorpe2001,
+   Author = {John H. Goldthorpe},
+   Title = {Causation, statistics, and sociology},
+   Journal = {European Sociological Review},
+   Volume = {17},
+   Pages = {1--20},
+   Year = {2001} }
 
+
 @article{Goodman1961,
    Author = {Leo A. Goodman},
    Title = {Snowball Sampling},
@@ -3530,6 +3538,7 @@
                Vol. 3: Multivariate Statistics and Matrices in Statistics.
                Proceedings of the 5th Tartu Conference},
   pages =    {211--227},
+  editor = { E.Tiit and T. Kollo and H. Niemi}
   publisher = {TEV Vilnius},
   address = {Lithuania},
   year=1995}
@@ -3696,14 +3705,14 @@
   volume =         4,
   pages =    {567--588}}
 
- at Article{SLT2012,
+ at Article{SLT2013,
   title = {A model for the multiplex dynamics of two-mode and one-mode networks,
   with an application to employment preference, friendship, and advice},
-  year = {2012},
+  year = {2013},
   author = {Tom A. B. Snijders and Alessandro Lomi and Vanina Torl\`{o}},
   journal = {Social Networks},
-  year = {2012},
-  note = {(in press)}
+  volume =         35,
+  pages =    {265--276}
 }
 
 

Modified: pkg/RSiena/inst/doc/RSiena_Manual.pdf
===================================================================
--- pkg/RSiena/inst/doc/RSiena_Manual.pdf	2013-05-10 16:31:08 UTC (rev 230)
+++ pkg/RSiena/inst/doc/RSiena_Manual.pdf	2013-06-15 21:01:05 UTC (rev 231)
@@ -42,32 +42,34 @@
 ÿ!1Ë9ì–ç§P“|àhº`ÚnÜÃŒó蛹®žq¢†Úñþõ»¯9ÈbNƒKÕf­=´½÷Õîœ GMf8ÍÜg¡É	šÜ7%ÆÿØÙ'YýJM ÔXXìá …¶ÁÐô5ÏÍ¡Èó õZÐ<ºØAŽD%½·sï|àóÇ3´ŸºÇþÍ`þü³ªæu²áþÁ·þ·
 endstream
 endobj
-491 0 obj <<
-/Length 1158      
+495 0 obj <<
+/Length 1160      
 /Filter /FlateDecode
 >>
 stream
-xÚ­VKsÛ6¾ëWðΘ ‚$ØžœÄIÓ»©¥ž’ 	–Pó¡’”ýûî "ÊêdÜéhFÄcñíëÛX´‰XôqÆ~ð}»˜½ùÀ‹HHZ¨‚G‹‡H°œ2É£<gTF‹uô…Üê&9Ùë*NR&ÈCÛÅ.~…“êô$ç9Ía‰ùS÷skí%‹¸¤©Ì
-&yIsQD FS΃ø~Ø<è¹¥ø-ȽÝUæ€ Q¢h†ÁªE¬ik/{MßRzÞØ¿Ö¦ëÝ9I?;ö9q½¯,Øæ|îÌÊêuûÝRNË,ó–r˜H©ÀTEó,ó4ö	Q@‹ppðHíƒÿþö
-"´þ)Ndš‘÷f§»¡6
-§‚™z°1'}œpØãÄ®úŸýÖÝþ+㹩ÖþÄ»¶ªÌÆ8§¸(©%¸_–9:1„³+" “ñ½ÈýÍbÆa þF¼Èh΀%ä¼Ì£U=û{–ºMÿïFé°ðæCÍ£÷íìwøc¢Éˆœœ@;ÒÃJZæ"wœ+€
-É$©ãzt½ì‡N¯†‹Æ€8HxžB,@W”«€0ÿtswíÓªN„SH)ã#M¿²Œ	=å%@ƒ 7·õ¾‚tµ
-„VæäSódúÁnŽKÔE,éüþM½³]¹šéqLyF	/öè7®]zÛ¿´S€¡¥8±“û ëÔi?]µõn?˜ v×µ‰/¡ÍŠ9Œ|ö(›NcŨœ[=øÑJw5ª
-Òî‡qßøA$O½+°€n×£ÛxäÁ¯×mJÉ8gÐ•g6Š`€§¨æÉE¢Ú8¡*@¸Gœ‚@QVÎ\Lo0’*D²{
-"ˈ^­ æl³ñÓ¡
-_Ô'2IÖ‡F×v5
-m—´àuƒ(ƒYûõÑSù9XäÈGY	m-üKu›èÅÚýÇYôÅ©:í@Gº½Ì±í•˜D0ÆÏ°ÈÕë
-Ë(;BZ½¬`ÎËd’Ÿ@1çz’1H¥"'º¢ç±Àíÿ‹â²ŽBºY¿Ö´ä˜1g®7;ûÍæL_².­¬àd±µ!f6ájí8ê/_ظܫRÎ(uîÞIKQ´àÇ–‚ö¼…º [ß7R¸êÛ$©ºÂªLKö ìÁO–®^ŒŸ@ƒ¨Ìú‚q
-î Ué¿veÚ‚ëx¿ºæ àŒ…ïšêj}åvv¹wå‹‹;íüxŒ3`Â&X5»}@a0íg¸pèS_°"PÐ¢:	ÅýKÛs*Ócìñ"%¤õÉÔ'°	„¹oß’,uï‡¡¿@Ò`#,ÝUÖ·t9e Ì/3 at pASõã §.Ó+‰`¹…v׶éÃý’å ­“àLò¸è+KÉsg‡Á4ߟn® –N]„ùräHÝjwUÂê/{Ûƒ$ɹEÖd«Mx–΋ýå Ï3ë@G»éÂÉÐ%Î×»m‡¼ÐhfšÂãÌlªPÓF€1…z+Yéß½xÑB½'2ÏÙidž·Ö?‡€ÐÂ
+xÚ­VÛrÛ6}×Wðš1ÜH‚í““8i2c7µÔ§¤K¨yQIÊ®þ¾» ¤ˆ²:w:šqYœ]œ]€%ë„%'ìß·óÉ›¼H„¢….x2HË)S<ÉsFU2_%_É­i¦"';SMSÉyh»éóÏ°RŸ®ä<§9±°ê~ælc‚¡b	WTª\ aš—4E`TrÍwÃàaŸ[Šß‚Ü»me÷¤šf¸@ÀYͧZ¶¶×ô-
+«gûse»Þ¯STó³e_¦`nv•n~Á—Î.Yµß™rZfY`Ê¡£”ªšæY ~oÜ¢À.nÀÆ> µáûëß¡ÕOÓTÉŒ¼·[Ó
+µmÐp85,Èl0ƒ›rÒOSsœ¸eÿs˜ºÛ}c<·Õ*¬x×V•][ï
+©À­’*–NŸw
+¦<»
+‚q‰^œúÍ|¡ž&¼ÈhÎ@ %œv™'Ëzò×DúÉðïÖqà͇š'ïÛÉoð;Ç>˜¦äôÚË
+´UÒ2¹W[RÐ(#E½:ЗëE?tf9\$ â 幄(À>\S®#ÂìÓÍÝu8P}b,á0?ôËØQÊ#P^Rˆv3Wï*8¨¶¸ªœ|jžl?¸õq¨€Œ˜
+Mº0So]ç–>[ {g½FžÑ"˜=†‰ëÆTûÞõ/y
+ ZŠž<¬ [¿	Ýe[owƒÛn»6
+É"´ Y!Q½¨ä€²îæŠÎÉ°1Ch-M×9‹ º ín8ÌÛÐèQžàipÐíúà6.yãu;…MÉ
+lQÊUÐ4š`€Ç¨öÉG¢Úpb>€q8t¬¼',º5Þ`$uŒd÷;ˆ,#f¹„lsÍ:t‡6~q?‘)²Ú7¦v˃ñÐvi^7ˆ2ØU?x`«ÐF^|”•PÐâ¿RI·N^ŒÝœ$_ýV§µç(X?—yµ½2˜ñ3,rõzbeç@(«×ƒÌ{™ŽÎ'JÌ»žÊ"#¥TäÄTô<8ýcQ\vÁKÈ4«×ú‚LŽ'æéÚÙÿK›3s‰7\WYÁÉ|ãbÌ\$jã5®]˜¸\«$g”ÃvnÝQIÑ´àÇ’ƒö¼¼€-6¡nH¸ä4$ÛèPM…Y)K|Ðv:Ÿ/6t @Tvuœ†;@—ÇBú¯UYÃnÑÈW¼Y}q pd¡Àû¢‡{µ!s;·ØùôÅÁ­ñ~<N3PÂ:²"ïPhŒëìûÁÖxC
+šATG¡¸É=§Jc/¥àHq?%Ãñ ¡Ê·"Ó{âÐˆŒaÀš®r¡¤«± Y‚*õƒšºd@–WáÁ4òñØ¡u¸qMï—$Ç:
+Îè\ }e’<wnlóýáèñ
+brì"ôÕ­ñW%Œþ²s=X"I¦É-ª¶ cãƒtU.x˜95Ú­mWÆ*q^¸Þm:Ô…AšR³̮«˜ãB€1…|+Y^¼xÑB¾§2Ùqņ·Ö?Õ3Ïò
 endstream
 endobj
-481 0 obj <<
+485 0 obj <<
 /Type /XObject
 /Subtype /Form
 /BBox [0 0 84 59.04]
 /FormType 1
 /Matrix [1 0 0 1 0 0]
-/Resources 502 0 R
+/Resources 506 0 R
 /Length 34        
 /Filter /FlateDecode
 >>
@@ -75,7 +77,7 @@
 xÚ+ä²0Q0 BSK=+9—Kß3×PÁ%Ÿ+ hƐ
 endstream
 endobj
-480 0 obj <<
+484 0 obj <<
 /Type /XObject
 /Subtype /Image
 /Width 350
@@ -187,7 +189,7 @@
 klŠÇ,T‚ÄñéïœöšwŒ¬u?ÜèéÒÃ$V¾gžedc#ýsÏqELè¯N)FËìžkñöñýÄrF|¤ùWýcm1ç’zyÅvZ݇‡´X®`Ži“P˜IG䟽*¤–là}­VU7F•Ÿî`‡i¾ñ^‡u}®A«X%õÖö”iCŒîÁ,3ù*í£I.—PŠÜ^E’[`ÊsŽ³»oÖŠ*’»ÔâÄI·qñ¨Ž@¢ghÔgcÅçýìdþ5*̆åc0)9#~pqôQV`N—$U’B6Ÿ½‚qÛŸZS~(wF¢ŠdûhôoÒ—í‹ýÖý(¢˜‡}´z7ä(ûhôoÈQE 'ÛÇ£þuêI[¶¹ö¢ŠC3ï5–HX“"û!Ï®<}­«4ÛyÁÄ’Ü8'qÀíùQEsÔo”î¥N=‡Íã‹-ý"m*iå’%ie{¢Ä‚áGÞ8ëÛëX?¼Wq{cc X㍘͔ˆãa^I8á‡OOJ(¬èÉË–çM*qU£dqÖšÄÒͪê3©šcgå³™][-²0ùæ<ŒƒüñSiz–§¨É#›¶.»9;Xgv aÎ3’}I'©4Q]5"¹Né¥ïoí®´’é}2Jó¡d1ƒ˜ðë–Và$§å⡳Ôtý:Ú(šÖå¯×y–â;‚£Ë={òxêh¢¢ÊÖ#x»”­5(gÕÑ䀮ùÃKµ˜åsÐç?t‡ÃãSH¼©DQÉ™×÷i€F9ùØŽ»ºz‘E,•‰«'1óx¾¶µ¤Ë$‰!o>uPOUè½°?Ö3OÞÝ´H…Š†UP3…àsù÷¢Šå¨­5c	ll®§›g Œ’Ö Ilc!Kc Øé¥áfW(Ós¾@z{ô¢Šê„VÇö¹ÿÙ
 endstream
 endobj
-550 0 obj <<
+554 0 obj <<
 /Length 1684      
 /Filter /FlateDecode
 >>
@@ -202,84 +204,90 @@
 ÉЦ‚ŸÒ­#"ôÁ·€®»uIMҍÂ÷wÊNÄ+ˆÏ§¹&†‡ë?hÚòÄD§Å:ãZwÄk9}®cº¬4ÕzÐi”®¡Öo`”J;==Ï-K“rbd;º±"Àß0:ˆ/×X5%„ûJ­¦ÕJE¶bP÷¤Ê ˆÍ‘¿Œw£tÕ¸À箁lÀ$—¶âk¹4ª–ÇÒî
 ´ZAëQ]’I
 sy^ŒUAàÜÑð)„ÎÓ¶}ýU£ÅÉÔ`;-LÌ"\õ¦Œ_$<Ñ6‚œ
-m¯OÄ@éãUSךÖžy½Âÿ%åL¬…½tMux´Ù¯|@h:&Té›H›ñ´Ó°lMŒ=ibÃ_Ë8Ëp ,ù7œ½v3†>áß/ÒÓü§è7Å›÷I¹.¢ÅZMû\\œÖÎ}‚…á¦|ó¶ÈŒ]›©vù‹(Ÿ7÷•þ.€iª²C½Smv­ú•z®t‡û@SŽykŽlnŒÚbäQg䕧Ÿ‡šGCeZ>,£ýT‘U‘'ö"cüDÐx6PðN5`£áŒ|Oø5EuœzÝ{µ·Á7y3¹ú ZÜç
+m¯OÄ@éãUSךÖžy½Âÿ%åL¬…½tMux´Ù¯|@h:&Té›H›ñ´Ó°lMŒ=ibÃ_Ë8Ëp ,ù7œ½v3†>áß/ÒÓü§è7Å›÷I¹.¢ÅZMû\\œÖÎ}‚…á¦|ó¶ÈŒ]›©vù‹(Ÿ7÷•þ.€iª²C½Smv­ú•z®t‡û@SŽykŽlnŒÚbäQg䕧Ÿ‡šGCeZ>,£ýT‘U‘'ö"cüDÐx6PðЍ†3ò=áÔÕpêuïÕÞßüåÍäê_ ¥Üè
 endstream
 endobj
-596 0 obj <<
+600 0 obj <<
 /Length 1887      
 /Filter /FlateDecode
 >>
 stream
-xÚí[Mw›8Ý÷Wx‰Ï(IHÝ¥¤'sšiOã3³èÌ‚‚3åøMþýècÀ™ÆQZÇé&Ø°rßÕÓ}÷ÉþìjæÏ^?óÍÑ#Î|Ï'üO¢YÍÏϽýìåâÙó3fÔ£8À³Å§¡žÏ¯ˆ|聐ŸIg4wi€œ‹j“²œIè4+ùž%Ù_>€IÜfU9ÿ{ñ[7ŠÙ7ô
-ÕùoÕó3Ò€…pæàQ„ôˆ<0wίL|y™É/wÃ0tªOâvÉÔ‰‚; r܃Ñ4r¼¹‹|ßÂRjïapüï Ô掴™GÁ8&2* Bçr%!ߦ†F&)ÂIôCìPÌÇ Ÿty~úûÉÖÀ¶}ù­úêï‰äÃÅx2:h¿è𻏠0ŽO ãsóÙQð°$q®fK3±Á (ÆÇ…/Þßiú:%
-˪nãrÎ_´Šú
-ÿÜië9pÖI»®
-ò"…,iuÕ§ªVçK~!“·ˆg|Ë'~V¥7e\dIóBüÛ³Qçìªdn—øÔM%3OŠÄ“š!&ð®ÙðÐ3Þ=ÙYeGxìÐÃéÝ䊇H¦Dš)°Ç2Í<R|3S"ß*S fÊi?ôЄ>FG}jb®.‰›FÍý$‹[–ª“_³v©.N*qï—9ÂN\‹+F&QðãàûÁéDÈWuÕ4®„-L¶ãm8¤,Ľë¼ÍV9›ŒÅÇèGâXÂOÒHºJ9,cIªÌ@ȾHPòõ””  :~uÁûÀ”_^¤p±©d$ÄA蛕ÌÝì	"§¬J7Íj&3ïÿ£”¢#ÁY"<ÑxŸ¤©,,ã¼+^8Ò-«ãdSÑlRȐãˆhVÂ9‰9¶YA’®‚<¿êš\¹B2Y|0r„á¡aŒ)ÞÓ1»‚ïNp~T	EÃ%1·nòzºÔ€àC.ö"»ržê±È
--š—ŒÃ[]±’e’7]ÎP.”€ÓÈl-îWqⶱÂÆá£UÃÄ{Ï¿†Cü&+x.¯ŽÚÖãb,¾Î” +´J[·)»ª†GYvPKò ôk%/´È(Y³%CG8C­ßÔ¼ÔX_gyךîM·YÓNäJñc5ŠöDz`­»ÆÉ8ú Rècå­ŸrÈŠ	Ó
-‚Ћ ±:	¸‡î†”xÅÛÑǝ“¾0‹mÆ¢Ö…u™˜‘
-Ûx ê¬Ø&ceìG·X·!ôý®ÎíƒÙ)Â`Ó¹Å=gý\´:Œ9ôÇœ@'Î×ãúcð˜’܃ÉSb§Æ=ïüU%µ”¬nYÍ×ûD{¯–,Ÿ|5ÁÂGHë{âZT[¸³Ö/+£¶²B•½ÚFŒšTÆ_-™²W›a[P:§¹,â¯}º•Ëθ”“Wnå0ä¡°ËÉWË9ÿðØK7vd¤Á‹Ì¾M¥  ÂpãkŸäWUÍUA1*¶Bðtìá;ÿ›SõÁ–’–q’ß®ÛÕzDMàûèg,öšC‘Ó£`°[Üw.-r]‘Ë//8ÄÇÜ°› ±5Cºeý€ØÔã
-uÕ ‘òJ.q™vEN™Æµ~ÇêºWðÓ§dØ‘8ϳ’Åu&û-7ƒÉNS›ûp/ÙLæxjU ™V×Ŷ)7Ùg™Mòl¹©î#'0úe¬,+q©Ð1M“pGe*¢y¥¾%j›ö×Ûvi2C-A*bÑMQ.ˆj‚UëvË¥
-Å´¨ÖvÈ$D&°¹äáþ’×ï±ô(¹.“íÏnã"&ä ó+¶HØ-TgÙµ6Co3É”(8î
-;4°†µYËNÖm%·É)¸…zÝ9ÑÆÝáOL
-¦Pcúžý»Îj¦W ¥âòŠ™.T]f—Ê`ú·Õ>™‚û£ZñÃÈ#ˆhÿ—(d"åÿ^n%Ù¥(ÃÀøXl漏:øBlmIúòMH‚‘®…GbÜZ'ÐÊ<‰:§ë]Í’¬édƒÉ5®Ð»Þõ»4“­ÜZUŒÀÑs‰g%­úÒ±'‰mNBö»1z65sŠEJinkÆPl¯£ÃOº©ø眧8O]5	õæĺñÈDÃ8:æ/Ü“1v5²ñ¡“ªfãØÀ±ñÉÓÉŽwŽ.6éŒèÓë¸Xåf;œØßd©Ù'ãó‹~½Ù:}I¯‘iÙjKmŒÛn(@ÖQ¢$àûö¶Yq¨ºòK.ùîªï{í 1ø¨wÊ‹\à‹®éü÷“œc[ryúe¾Iñj•gê‡6’«Rðª}ÙÚþ+¹Øç/;K:ù¯êêcΊñî«ïe7ÞßÀR"6~×B¬“b:š¢¬¯„šÑv¶Í6Aƺ¤¥L§pþjó‹è\ÕÕš£¿Ïr 4£ª\ad¼äöÛ6½Ag%¶ŠÜ"ÁŸ¨ùŒ“w«X<({;]€/zÈ@ÖZ”Ì š¹{ˆh¹}çéâÙYÎYR
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/rsiena -r 231


More information about the Rsiena-commits mailing list