Critical:
=========

- Think about JavaGD devices. (User wants to plot in R Console etc.)
- Does Deducer interfere JavaGD? (When is .onLoad executed?)  
- Variable handling on command line gMCP!
- Make JavaGD only a suggest (Solaris and generally safer)

High priority:
==============
- Check for missing suggested packages (JavaGD, graph) 
  and ask on startup whether they should be installed and name the features that are otherwise missing.
- Give feedback for old objects and missing graph package in GUI
- Remove warnings: es gibt kein Paket names 'graph'
- Some edge labels like for parallel gatekeeping are set to small values (0?)
- On Windows: Autoresize of the adjacency matrix does often not work.
- Sample sizes for correlation matrices
- Test report creation - does not seem to work
- Stop little movements of nodes and edges when double clicked
- Adjacency table is enabled even in test mode
- "Reject and pass \alpha" does not make sense in the parametric case (actually it does, if we 
- Option "Show fractions" has no influence on TextFields for weights etc
- What happens if we start the GUI a second time?
- Why does matrix(c(0,1/2,0,0),2) loose half an alpha?
- Example graphs from Ferber?
- In CI-Dialog (remember less / greater)
- In CI-Dialog (initial weights instead of alpha are displayed - this are two errors)
- Mark cell content (if one clicks and type, one often wants to overwrite)
- Display edges > 1 and < 0. (Also: -1E0)
- Make node and edge creation sticky until another button is clicked (but do not place nodes above other nodes)
- Check LaTeX export with variables and epsilon polynoms.
- Flag 1+epsilon>1 in line sum
- round adjusted p-Values up
- standard examples
- Think about "-Xrs" - see paragraph below.
- somehow p-value labels where disabled (but we were not in testing modus).
- Labels like 1/3+1/2*e also in decimal format: 0.3333+0.5*e
- Variable node weights
- When not using JLaTeXMath graphs with variables are not shown and saved(?) correctly
- useC produces "Final graph after 1 steps:" - simple count the number of rejected hypotheses
- think about naming of rows, cols, weights … but I guess it'll be the advise to use just the mutator methods or if you want to avoid this overhead a warning that you should know what you are doing…
- remember entries for \tau, \nu, \gamma
- export function replaceVariables
- does something in Björns C code trigger the following false-positive:
Possible MalWare 'W32/NewMalware-Generic-8d27-f554' found in '5832765_287X_AZ-D_PA3__gMCP.dll'. Heuristics score: 336 
- remember focus on description vs. graph analysis
- test whether description is always saved
- More fairness regarding the Maurer et al. example ("improved" - what does the paper cover)
- Install graph package at R with gMCP installation
- test with Java 7

Medium priority:
================
-  improvedFallbackII() under Windows with GUI:
  Error in graph:::isValidAdjMat(adjMat, edgemode) : 
  negative values not allowed in adjacency matrix
  (not reproducable?)
- mcp.c: In function ‘graphproc’:
  mcp.c:43:2: warning: implicit declaration of function ‘Rprintf’
- Contact Björn:
  ~/workspace/gMCP/pkg/gMCP/src$ gcc -I/usr/share/R/include -Wunused -fpic  -std=gnu99 -O3 -pipe  -g -c mcp.c -o mcp.o
  mcp.c: In function ‘graphproc’:
  mcp.c:20:16: warning: unused variable ‘count’
  mcp.c: In function ‘graphmult’:
  mcp.c:124:9: warning: unused variable ‘j’
- https://twitter.com/#!/hadleywickham: "@revodavid noooooooooooo. don't use strings + parse + eval. use calls + substitute + eval #rstats (there's also an R news article on macros)"
- readRDS/saveRDS instead of load/save?
- If Error Report sending fails, give user the option to send the log files as zip file
- Does Indefinite ProgressPanel slow the calculation significantly down ?!?
- Improve visualization of CI (estimates should be a named vector - 0 estimates are often a strange choice - patch plotCII?)
- graphAnalysis: Graph can be optimal despite the fact that some nodes are not accessible from others
- Warn user when sum of edge weights is bigger than 1
- Check mutator methods for errors (alpha > 1, edge weights > 1)
- Update graph2latex to the much better algorithm already implemented in Java.
- Guide for usage under MacOS
- Test the option for rounding how many digits we want to see.
(search for DecimalFormat and replace it with getDecFormat())
- Ask for saving graph when quitting
- LookNFeel is not kept between sessions (also first call of options result in strange LookNFeel message)
- Edge labels should be fixed and placed by user or free and adjust to moving nodes
- Improve speed when loading graphs
- Check for / think about conflicts: "JAVAGD_CLASS_NAME"="org/mutoss/gui/JavaGD"
- placeNodes drops nodes to the top left if rows*columns is smaller than the number of nodes.

Lade nötiges Paket: graph
Warnmeldung:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  es gibt kein Paket namens ‘graph’


Additional features / low priority:
===================================

- What exactly are the consequences, if we set "Encoding: UTF-8" in the description file?
  - Are there other possibilities to pretty-print the \epsilon, etc.? (Most likely not worth the work.)
- Do we really need PolynomF as dependencies?
- Don't create global variable like .tmpGraph etc.
- Report generation in GUI (and respect the option whether to show rejected null hypothesis)
- PNG export cuts edges in rare cases. (But already improved!)
- Speed-up -> Matrices & perhaps ?ReferenceClasses ?
- Can we add a RUnit Test for Java importing Random Graphs and then exporting the same graph?
- TikZ styles for rejected / rejectable nodes
- further tests
- Look at http://xmlgraphics.apache.org/fop/
- After interruption of a calculation a new calculation gave:
  "unprotect(): only 0 protected items"
  Should be fixed now - but if we have time to spare, we could look further into this.
- Use of InfoNode Docking Windows? http://www.infonode.net/index.html?idw
  Would increase size by 717 kByte.
- Whishlist dialog.
- RMySQL as suggest?
- suppressPackageStartupMessages

     ‘.First.lib’ is called when a package without a name space is
     attached by ‘library’.  (For packages with name spaces see
     ‘.onLoad’.)  It is called with two arguments, the name of the
     library directory where the package was found (i.e., the
     corresponding element of ‘lib.loc’), and the name of the package.
     It is a good place to put calls to ‘library.dynam’ which are
     needed when loading a package into this function (don't call
     ‘library.dynam’ directly, as this will not work if the package is
     not installed in a standard location).  ‘.First.lib’ is invoked
     after the search path interrogated by ‘search()’ has been updated,
     so ‘as.environment(match("package:name", search()))’ will return
     the environment in which the package is stored.  If calling
     ‘.First.lib’ gives an error the loading of the package is
     abandoned, and the package will be unavailable.  Similarly, if the
     option ‘".First.lib"’ has a list element with the package's name,
     this element is called in the same manner as ‘.First.lib’ when the
     package is attached.  This mechanism allows the user to set
     package ‘load hooks’ in addition to startup code as provided by
     the package maintainers, but ‘setHook’ is preferred.

For the conventions for files NEWS and ChangeLog in the GNU project see http://www.gnu.org/prep/standards/standards.html#Documentation. 

@Apple - is this a problem?

r-patched-macosx-ix86:
checking R code for possible problems ... NOTE
2010-10-02 03:00:01.838 R[97724:613] Apple AWT Java VM was loaded on first thread -- can't start AWT. 

-> reference to JGR or Deducer.

@graph-package:

How do I create a graphNEL object, where there is a node that has no out-going edges?
I thought the following will do it:

hnodes <- c("H1","H2")
edges <- vector("list", length=2)
edges[[1]] <- list(edges=c("H2"), weights=c(1.0))
edges[[2]] <- list(edges=character(0), weights=numeric(0))
# or "edges[[2]] <- list()" which gives the same result.
names(edges)<-hnodes
g <- new("graphNEL", nodes=hnodes, edgeL=edges, "directed")

But the problem is, that g@edgeData@data[[1]]$weight is now a numeric with attribute "names".
This makes problems, for example it confuses edgeWeights: 

edgeWeights(g)
$H1
H2.H1
        1 

$H2
numeric(0)

In my understanding this should be "H2" instead of "H2.H1" like it would be when H2 has any outgoing edges.

rJava: We had the following problem:

> library(rJava)
> .jinit()
> replicate(1000000,rnorm(1))
^C
Java requested System.exit(130), closing R.

We solved it by calling .jinit(parameters="-Xrs")

Does this have side effects?

From http://download.oracle.com/javase/1.3/docs/tooldocs/solaris/java.html :

-Xrs
    Reduces use of operating-system signals by the Java virtual machine (JVM). This option is available beginning with J2SE 1.3.1.
    In J2SE 1.3.0, the Shutdown Hooks facility was added to allow orderly shutdown of a Java application. The intent was to allow user cleanup code (such as closing database connections) to run at shutdown, even if the JVM terminates abruptly.
    Sun's JVM catches signals to implement shutdown hooks for abnormal JVM termination. The JVM uses SIGHUP, SIGINT, and SIGTERM to initiate the running of shutdown hooks.
    The JVM uses a similar mechanism to implement the pre-1.2 feature of dumping thread stacks for debugging purposes. Sun's JVM uses SIGQUIT to perform thread dumps.
    Applications embedding the JVM frequently need to trap signals like SIGINT or SIGTERM, which can lead to interference with the JVM's own signal handlers. To address this issue, the -Xrs command-line option has been added beginning in J2SE 1.3.1. When -Xrs is used on Sun's JVM, the signal masks for SIGINT, SIGTERM, SIGHUP, and SIGQUIT are not changed by the JVM, and signal handlers for these signals are not installed.
    There are two consequences of specifying -Xrs:
        * SIGQUIT thread dumps are not available.
        * User code is responsible for causing shutdown hooks to run, for example by calling System.exit() when the JVM is to be terminated. 

As always:
==========
- more references, since some people will actually look at this package.
- More details in manual pages.

Sometimes install.packages fails on Windows machines (one session - second attempt works):

install.packages("gMCP")
--- Please select a CRAN mirror for use in this session ---
also installing the dependencies ‘mvtnorm’, ‘rJava’, ‘PolynomF’, ‘multcomp’, ‘graph’, ‘gtools’

trying URL 'http://ftp5.gwdg.de/pub/misc/cran/bin/windows/contrib/2.13/mvtnorm_0.9-96.zip'
Content type 'application/zip' length 555152 bytes (542 Kb)
opened URL
downloaded 542 Kb

[...]

trying URL 'http://ftp5.gwdg.de/pub/misc/cran/bin/windows/contrib/2.13/gMCP_0.6-1.zip'
Content type 'application/zip' length 4668375 bytes (4.5 Mb)
opened URL
downloaded 4.5 Mb

package 'mvtnorm' successfully unpacked and MD5 sums checked
package 'PolynomF' successfully unpacked and MD5 sums checked
package 'multcomp' successfully unpacked and MD5 sums checked
package 'graph' successfully unpacked and MD5 sums checked
package 'gtools' successfully unpacked and MD5 sums checked
package 'gMCP' successfully unpacked and MD5 sums checked
Warning: unable to move temporary installation 'C:\Program Files\R\R-2.13.0\library\file4a063a\gMCP' to 'C:\Program Files\R\R-2.13.0\library\gMCP'

The downloaded packages are in
        C:\Documents and Settings\Student\Local Settings\Temp\RtmpBJn6oK\downloaded_packages
        
> library(gMCP)
Error in library(gMCP) : there is no package called 'gMCP'
> install.packages("gMCP")
trying URL 'http://ftp5.gwdg.de/pub/misc/cran/bin/windows/contrib/2.13/gMCP_0.6-1.zip'
Content type 'application/zip' length 4668375 bytes (4.5 Mb)
opened URL
downloaded 4.5 Mb

package 'gMCP' successfully unpacked and MD5 sums checked

The downloaded packages are in
        C:\Documents and Settings\Student\Local Settings\Temp\RtmpBJn6oK\downloaded_packages
> library(gMCP)
Loading required package: rJava
Loading required package: MASS
Loading required package: PolynomF
Loading required package: multcomp
Loading required package: mvtnorm
Loading required package: survival
Loading required package: splines
Loading required package: graph
Loading required package: gtools
> 
