Introduction

FACEJava represents a Java reference implementation for initial versions of Gating-ML (and Compensation-ML, Transformation-ML, and FlowRDF, which are now incorporated in Gating-ML but used to be separated proposals). FACEJava is currently being updated to reflect the current ACS, Gating-ML, NetCDF, and other proposals.

Documentation on the initial version follows

All the FACEJava code is licensed under the LGPL.

FACEFlow

FACEFlow is a command-line tool which performs data analysis of FCS files using Gating-ML, Compensation-ML and Transformation-ML files. It accepts relations between FCS files and the other analysis files through either command-line arguments or in FlowRDF files. It processes the relations and outputs new FCS files for each of the final analysis results.

Usage

The following section contains the basics about how the FACEFlow application can be called. Much more info about how to use FACEFlow can be found in the FACEFlow.README.txt file included in the distributions.

With FlowRDF Files

    java -jar faceflow.jar [options] path_to_rdf_files

More than one RDF file can be given and each will be processed in turn. Note that each file is considered to be totally separate and relations in different files will not be merged together.

For example,

    java -jar faceflow.jar rdf/FlowRDFExample.rdf

Manually on the Command Line

    java -jar faceflow.jar [options] -f path_to_fcs_file

The options are:

-g
Relates a Gating-ML file to the FCS file.
-gate
Specifies the id of the only gate within the Gating-ML file to be used. If -gate is not given, all gates within the file are used. -gate is ignored if -g is not given.
-t
Relates a Transformation-ML file to the FCS file.
-c
Relates a Compensation-ML file to the FCS file.
-m
Specifies the id of the spilloverMatrix element within the Compensation-ML file to use for compensation. Note that if -c is given, -m must also be given.

Only one of each of the -f, -g, -gate, -t, -c and -m options may be given.

Note that the -f, -g, -gate, -t, -c and -m options will be ignored if an RDF file is given. Extra relations cannot be manually added to those in a FlowRDF file.

For example,

    java -jar faceflow.jar -f fcs/FCSExample.fcs -c comp/compensation.xml
                           -m matrix1 -g gating/gating.xml   

Other Options

The following options apply in both cases:

-d
Used to specify which directory the outputted FCS files should be written to. FACEFlow defaults to the current directory for FCS file output.
-q
Suppresses all the logging output normally made by FACEFlow to the console as it processes the relations.
-r
Performs a test run where all relations are processed (i.e., files are loaded and analysis is performed), but no new FCS files are outputted. This option can be used to find errors in the specified relations or the related files (e.g., they don't match the schema).
-double
Writes FCS files which contain double (IEEE 754 double-precision) values instead of the default float (IEEE 754 single-precision) values.

Releases

All the FACEjava releases can be found in the download area on SourceForge. For each release there are binary, source and documentation distributions. The binary distribution contains the FACEFlow application, the FACEJava JAR libraries (one for each file standard), CFCS, the external libraries and the Javadoc. The source distribution contains a snapshot of the Subversion repository at the time of release. It includes everything in Subversion, i.e., the source code, test cases, external libraries, build script, etc. The documentation distribution contains a copy of the Javadoc for the release.

Archimedes MathJ

FACEJava uses the Archimedes MathJ library to evaluate MathML expressions in universal transformations (as originally included in Transformation-ML). MathJ is non-redistributable so it is not included in any of the FACEJava distrbutions. Users who wish to use universal transformations must download their own copy of MathJ if they meet its license requirements. The MathJ JAR files should be placed in the lib/mathml of the FACEJava distribution. The rest of the external libraries are included with the FACEJava distributions.

Please note that the Archimedes MathJ library seems to have disappeared from the web. It should not be needed for future versions as MathML is not used to encode data transformations anymore.

QSOpt

The QSOpt authors have granted FACEJava permission to use and redistribute QSopt as part of FACEJava. External developers using FACEJava, are allowed to include the QSopt library in their own, possibly commercial, application. However, they are not allowed to use QSopt directly. That is, the QSopt library can only be used through FACEJava. If you wish to use QSopt to solve their own linear programming issues, they must accept the QSopt license.

Subversion

All the source code for the FACEJava project is kept in the FACEJava folder in the Subversion repository on SourceForge. The setup details can be found on the SourceForge project site.

NOTE: the same note about MathJ in the Releases section applies here as well. For the source to fully compile, a copy of the MathJ library must be downloaded (if license restrictions are met) and the MathJ JARs should be put into the lib/mathml folder and they must be in the classpath.

CFCS

The current version of the CFCS library is also kept in Subversion, separate from FACEJava. CFCS was originally developed by Tree Star, Inc.

Documentation

The FACEJava Javadoc documentation can be downloaded as part of the distributions in from the download area on SourceForge.

An introduction to FACEJava is also available. It covers the basics about the different implemented file standards, project configuration issues and a high-level overview of the source code. It is current as of the FACEJava 1.0B1 release.

External Libraries

FACEFlow makes use of the following third-party libraries developed elsewhere.

Acknowledgement

Thanks our co-operating students

This product includes software developed by the Apache Software Foundation (http://www.apache.org/).

Last update: December 6th, 2007