changeset 0:0f80a5141704

version 0.3 uploaded
author vipints
date Thu, 14 Feb 2013 23:38:36 -0500
parents
children 08d3a6143873 233c30f91d66
files rDiff/INSTALL rDiff/Makefile rDiff/README rDiff/bin/genarglist.sh rDiff/bin/genes_cell2struct rDiff/bin/rdiff rDiff/bin/rdiff_config.sh rDiff/bin/rdiff_config.sh.bak rDiff/bin/rdiff_config.sh.sample rDiff/bin/rdiff_gendata rDiff/bin/rdiff_wrapper.sh rDiff/bin/start_interpreter.sh rDiff/configure rDiff/examples/Makefile rDiff/examples/get_data.sh rDiff/examples/results/Alternative_region_counts.mat rDiff/examples/results/Gene_expression.tab rDiff/examples/results/Nonparametric_region_counts.mat rDiff/examples/results/P_values_rDiff_parametric.tab rDiff/examples/results/genes.mat rDiff/examples/results/temp/P_values_parametric_1_of_1.mat rDiff/examples/results/temp/example_condition_A_replicate_1.bam_1_of_1.mat rDiff/examples/results/temp/example_condition_A_replicate_2.bam_1_of_1.mat rDiff/examples/results/temp/example_condition_B_replicate_1.bam_1_of_1.mat rDiff/examples/results/temp/example_condition_B_replicate_2.bam_1_of_1.mat rDiff/examples/results/variance_function_1.mat rDiff/examples/results/variance_function_2.mat rDiff/examples/run_example.sh rDiff/galaxy/README rDiff/galaxy/rdiff.xml rDiff/galaxy/rdiff_run.sh rDiff/mex/Makefile rDiff/mex/Makefile.bck rDiff/mex/get_reads.cpp rDiff/mex/get_reads_direct.cpp rDiff/mex/get_reads_direct.h rDiff/mex/interval_overlap.cpp rDiff/mex/mex_input.cpp rDiff/mex/mex_input.h rDiff/mex/read.cpp rDiff/mex/read.h rDiff/src/configure_rdiff.m rDiff/src/genes_cell2struct.m rDiff/src/get_nonparametric_tests_caller.m rDiff/src/get_parametric_tests_caller.m rDiff/src/get_read_counts.m rDiff/src/get_reads_caller.m rDiff/src/locfit/LICENSE rDiff/src/locfit/README rDiff/src/locfit/Source/Makefile rDiff/src/locfit/Source/Makefile.bck rDiff/src/locfit/Source/Makefile.matlab rDiff/src/locfit/Source/design.h rDiff/src/locfit/Source/lfcons.h rDiff/src/locfit/Source/lfev.c rDiff/src/locfit/Source/lfev.h rDiff/src/locfit/Source/lffuns.h rDiff/src/locfit/Source/lfstruc.h rDiff/src/locfit/Source/lfwin.h rDiff/src/locfit/Source/liblfev.c rDiff/src/locfit/Source/liblocf.c rDiff/src/locfit/Source/libmut.c rDiff/src/locfit/Source/libtube.c rDiff/src/locfit/Source/local.h rDiff/src/locfit/Source/locf.h rDiff/src/locfit/Source/mexlf.c rDiff/src/locfit/Source/mexpp.c rDiff/src/locfit/Source/mlfut.c rDiff/src/locfit/Source/mut.h rDiff/src/locfit/Source/mutil.h rDiff/src/locfit/Source/tube.h rDiff/src/locfit/m/aic.m rDiff/src/locfit/m/aicplot.m rDiff/src/locfit/m/backtr.m rDiff/src/locfit/m/fitted.m rDiff/src/locfit/m/gcv.m rDiff/src/locfit/m/gcvplot.m rDiff/src/locfit/m/hatmatrix.m rDiff/src/locfit/m/invlink.m rDiff/src/locfit/m/kappa0.m rDiff/src/locfit/m/lcv.m rDiff/src/locfit/m/lcvplot.m rDiff/src/locfit/m/lf_censor.m rDiff/src/locfit/m/lfband.m rDiff/src/locfit/m/lfgui.m rDiff/src/locfit/m/lfknots.m rDiff/src/locfit/m/lfmarg.m rDiff/src/locfit/m/lfplot.m rDiff/src/locfit/m/lfsmooth.m rDiff/src/locfit/m/locfit.m rDiff/src/locfit/m/locfit_all.m rDiff/src/locfit/m/plotbyfactor.m rDiff/src/locfit/m/predict.m rDiff/src/locfit/m/residuals.m rDiff/src/locfit/m/rsum.m rDiff/src/locfit/m/scb.m rDiff/src/locfit/m/smooth_lf.m rDiff/src/locfit/m/spence15.m rDiff/src/locfit/m/spence21.m rDiff/src/locfit/m/vecr.m rDiff/src/octave/importdata.m rDiff/src/octave/intersect.m rDiff/src/perform_nonparametric_tests.m rDiff/src/perform_parametric_tests.m rDiff/src/process_command_line_args.m rDiff/src/process_configure_rdiff.m rDiff/src/rdiff.m rDiff/src/rdiff_caller.m rDiff/src/set_rdiff_paths.m rDiff/src/tests/calcl_nbin_pdf.m rDiff/src/tests/comp_nbin_p_value_mean_variance.m rDiff/src/tests/get_mean_variance_seg.m rDiff/src/tests/get_nonparametric_masks.m rDiff/src/tests/rDiff_mmd.m rDiff/src/tests/rDiff_nonparametric.m rDiff/src/tests/rDiff_parametric.m rDiff/src/tests/rDiff_poisson.m rDiff/src/tools/compute_testing_region.m rDiff/src/tools/convert_reads_to_region_indicators.m rDiff/src/tools/detect_overlapping_regions.m rDiff/src/tools/intersect.m rDiff/src/tools/read_utils/clip_reads.m rDiff/src/tools/read_utils/get_reads.cpp rDiff/src/tools/read_utils/get_reads.mex rDiff/src/tools/read_utils/get_reads.mexa64 rDiff/src/tools/read_utils/get_reads.mexmaci rDiff/src/tools/read_utils/get_reads.o rDiff/src/tools/read_utils/get_reads_direct.cpp rDiff/src/tools/read_utils/get_reads_direct.h rDiff/src/tools/read_utils/get_reads_direct.h.old rDiff/src/tools/read_utils/get_reads_direct.o rDiff/src/tools/read_utils/get_reads_for_gene.m rDiff/src/tools/read_utils/remove_reads_from_other_genes.m rDiff/src/tools/read_utils/splicingsequence.m rDiff/src/tools/sanitize_genes.m rDiff/src/tools/transform_single_end_reads.m rDiff/src/variance/estimate_variance.m rDiff/src/variance/estimate_variance_helper.m rDiff/src/variance/estimate_variance_nonparametric.m rDiff/src/variance/estimate_variance_parametric.m rDiff/src/variance/plot_variance_fit.m rDiff/src/variance/predict_variance.m rDiff/tools/ParseGFF.py rDiff/tools/determine_engine.m rDiff/tools/whoami.m
diffstat 145 files changed, 116185 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/INSTALL	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,26 @@
+To setup rDiff, please follow these steps:
+
+1) Download the SAMTools (version 0.1.7) from http://samtools.sourceforge.net/ 
+and install it. You need to add the flag -fPIC in the SAMTools Makefile for compilation.
+
+2) Change to directory that contains rDiff and configure rDiff by typing:
+
+./configure 
+
+this etects and stores paths of dependencies necessary to compile and run rDiff. 
+You can also set these variables manually using the interactive configuration:
+
+./configure -i 
+
+3) To compile rDiff, type:
+
+make
+
+4) When successfully completed, rDiff is usable. Check out the <Examples>:
+
+make example
+
+This will download an example dataset and run the rDiff.parametric on it. 
+You can also run rDiff.parametric, rDiff.nonparametric or rDiff.poisson by typing:
+    
+make more_examples
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/Makefile	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,27 @@
+include bin/rdiff_config.sh
+# Copyright (C) 2009-2013 Max Planck Society, Sloan-Kettering Institute
+
+all:	mexfiles
+
+mexfiles:
+	echo Entering ./mex
+	cd mex ; make octave
+	echo Entering ./src/locfit/Source
+	cd src/locfit/Source ; make octave
+
+clean:	
+	echo Entering ./mex
+	cd mex ; make clean
+	echo Entering ./examples
+	cd examples ; make clean
+	echo Entering ./src/locfit/Source
+	cd src/locfit/Source ; make clean
+	cd src/locfit/mex/ ; rm *
+
+example:
+	echo Entering ./examples
+	cd examples ; make example
+
+more_examples:	
+	echo Entering ./examples
+	cd examples ; make threeexamples
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/README	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,69 @@
+---------------------
+  rDiff version 0.3
+---------------------
+http://bioweb.me/rdiff
+
+DESCRIPTION
+-----------
+rDiff performs differential expression testing and 
+creates a list of gene names with corresponding 
+p-values.
+
+REQUIREMENTS
+------------
+- Octave/Matlab >=3.4
+- Python >=2.6.5 and Scipy >=0.7.1
+- SAMTools >= 0.1.7
+
+GETTING STARTED
+---------------
+To install rDiff and the required software please 
+follow the instructions in INSTALL in this directory.
+
+CONTENTS
+--------
+All relevant scripts for rDiff are located in the 
+subdirectory src. rdiff.sh is the main script to 
+start rDiff.
+
+    ./bin
+    Contains rdiff_config.sh file which is used for the configuration.
+    According to your platform, the default file will be changed.
+
+    ./galaxy
+    Galaxy tool configuration files
+
+    ./tools
+    A python based GFF parsing program. Also contains small utils 
+    programs.
+            
+    ./examples
+    This sub-directory contains all data for running a functional 
+    tests.
+
+    ./mex 
+    matlab executable files.
+
+LICENSE
+-------
+rDiff is licensed under the GPL version 3 or any later version
+(cf. LICENSE).
+
+CITE US
+-------
+If you use rDiff in your research you are kindly asked to cite 
+the following publication:
+
+Philipp Drewe, Oliver Stegle, Lisa Hartmann, Andŕe Kahles, 
+Regina Bohnert, Andreas Wachter, Karsten Borgwardt, Gunnar Raetsch,
+Accurate Detection of Differential RNA Processing, NAR, 2013
+
+COPYRIGHT
+---------
+Copyright (C) 
+        2009-2012 Friedrich Miescher Laboratory of the Max Planck Society, Tubingen, Germany
+        2012-2013 Memorial Sloan-Kettering Cancer Center, New York City, USA 
+
+CONTACT
+-------
+vipin@cbio.mskcc.org 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/genarglist.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,14 @@
+#/bin/bash
+
+list=
+until [ -z $1 ] ; do
+	if [ $# != 1 ];
+	then
+		list="${list}$1:"
+	else
+		list="${list}$1"
+	fi
+	shift
+done
+echo $list
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/genes_cell2struct	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,9 @@
+#/bin/bash
+# rDiff wrapper script to start the interpreter with the correct list of arguments
+
+set -e
+
+PROG=`basename $0`
+DIR=`dirname $0`
+
+exec ${DIR}/start_interpreter.sh ${PROG} "`${DIR}/genarglist.sh $@`"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,186 @@
+#/bin/bash
+# rDiff wrapper script to start the interpreter with the correct list of arguments
+
+set -e
+
+
+function usage () {
+echo "
+Usage: rdiff [-OPTION VALUE] 
+
+Options:
+
+   -h  Display this help
+   -o  The output directory for the results
+   -d  Directory where the bam-files are
+   -a  Comma separated list of bam-files for sample 1 (No spaces between the files: File1.bam,File2.bam,...) 
+   -b  Comma separated list of bam-files for sample 2 (No spaces between the files: File1.bam,File2.bam,...)
+   -g  Path to GFF3 gene structure
+   -L  Read length used for rDiff.parametric (Default: 75) 
+   -m  Method to use for testing:       param  for rDiff.parametric (Default)
+                                        nonparam  for rDiff.nonparametric
+                                        poisson  for rDiff.poisson
+                                        mmd  for rDiff.mmd
+
+Advanced options:
+
+   -M  Minimal read length required (Default: 30)
+   -e  Estimate the gene expression and counts in alternative regions (Yes (Default):1, No: 0)
+   -E  Only estimate the gene expression do not perform testing  (Yes:1, No (Default): 0)
+   -A  Path to variance function for sample 1 (Experimental)
+   -B  Path to variance function for sample 2 (Experimental)
+   -S  Filename under which variance function for sample 1 will be saved (Experimental)
+   -T  Filename under which variance function for sample 2 will be saved (Experimental)
+   -P  Parameters of variance function for sample 1 of the form a+b*x+b*x^2 (Given as: a,b,c) (Experimental)
+   -Q  Parameters of variance function for sample 2 of the form a+b*x+b*x^2 (Given as: a,b,c) (Experimental)
+   -y  Use only the gene start and stop for the rDiff.nonparametric variance function estimation (Yes:1, No (Default): 0) (Experimental)
+   -s  Number of reads per gene to which to downsample (Default: 10000) 
+   -C  Number of bases to clip from each end of each read (Default: 3)
+   -p  Number of permutations performed for rDiff.nonparametric (Default: 1000)
+   -x  Merge sample 1 and sample 2 for variance function estimation (Yes:1, No (Default): 0)
+
+"
+   exit 0
+}
+
+CURR_DIR=`dirname $0`
+. $CURR_DIR/rdiff_config.sh
+
+PROG=`basename $0`
+DIR=`dirname $0`
+
+
+#check if arguments are given
+[[ ! $1 ]] && { usage; }
+
+
+#Initializing defaults
+RDIFF_RES_DIR="."
+RDIFF_INPUT_DIR="."
+BAM_INPUT1=""
+BAM_INPUT2=""
+GFF_INPUT=""
+READ_LENGTH="75"
+MIN_READ_LENGTH="30"
+EST_GENE_EXPR="1"
+ONLY_GENE_EXPR="0"
+VAR_PATH1=""
+VAR_PATH2=""
+SAVE_VAR1=""
+SAVE_VAR2=""
+PRED_VAR1=""
+PRED_VAR2=""
+ONLY_GENE_START="0"
+SUBSAMPLE="10000"
+CLIP="3"
+BOOTSTRAP="1000"
+TEST_METH_NAME="param"
+
+#Parsing command line arguments
+while getopts ":d:o:a:b:g:L:m:e:E:A:B:S:T:P:Q:s:C:p:m:hx:y:" opt; do
+   case $opt in
+   o ) RDIFF_RES_DIR="$OPTARG" ;;
+   d ) RDIFF_INPUT_DIR="$OPTARG";;
+   a ) BAM_INPUT1="$OPTARG";;
+   b ) BAM_INPUT2="$OPTARG";;
+   g ) GFF_INPUT="$OPTARG";;
+   L ) READ_LENGTH="$OPTARG";;
+   M ) MIN_READ_LENGTH="$OPTARG";;
+   e ) EST_GENE_EXPR="$OPTARG";;
+   E ) ONLY_GENE_EXPR="$OPTARG";;
+   A ) VAR_PATH1="$OPTARG";;
+   B ) VAR_PATH2="$OPTARG";;
+   S ) SAVE_VAR1="$OPTARG";;
+   T ) SAVE_VAR2="$OPTARG";;
+   P ) PRED_VAR1="$OPTARG";;
+   Q ) PRED_VAR2="$OPTARG";;
+   y ) ONLY_GENE_START="$OPTARG";;
+   s ) SUBSAMPLE="$OPTARG";;
+   C ) CLIP="$OPTARG";;
+   p ) BOOTSTRAP="$OPTARG";;
+   m ) TEST_METH_NAME="$OPTARG";;
+   x ) MERGE_SAMPLE="$OPTARG";;
+   h )  usage ;exit  ;;
+   \?)  echo "Unkown parameter: $OPTARG"
+   	usage ;;
+   
+   esac
+done
+
+#Perform baic checks of variables
+
+errorFlag=true #No errors ecountered
+
+if [ -z "$BAM_INPUT1" ]; then
+    echo "Please provide bamfiles for sample 1" >&2
+    errorFlag=false
+fi
+if [ -z "$BAM_INPUT2" ]; then
+    echo "Please provide bamfiles for sample 2" >&2
+    errorFlag=false
+fi
+if [ -z "$GFF_INPUT" ]; then
+    echo "Please provide genome annotation file in GFF" >&2
+    errorFlag=false
+fi
+
+if [ ! $errorFlag ]
+then
+    echo "Error" >&2
+    exit 1
+fi
+
+
+#Generate parameter vector
+PARAM_VECT="RDIFF_RES_DIR:$RDIFF_RES_DIR;"
+PARAM_VECT="$PARAM_VECT""RDIFF_INPUT_DIR:$RDIFF_INPUT_DIR;"
+PARAM_VECT="$PARAM_VECT""BAM_INPUT1:$BAM_INPUT1;"
+PARAM_VECT="$PARAM_VECT""BAM_INPUT2:$BAM_INPUT2;"
+PARAM_VECT="$PARAM_VECT""READ_LENGTH:$READ_LENGTH;"
+PARAM_VECT="$PARAM_VECT""MIN_READ_LENGTH:$MIN_READ_LENGTH;"
+PARAM_VECT="$PARAM_VECT""EST_GENE_EXPR:$EST_GENE_EXPR;"
+PARAM_VECT="$PARAM_VECT""ONLY_GENE_EXPR:$ONLY_GENE_EXPR;"
+PARAM_VECT="$PARAM_VECT""VAR_PATH1:$VAR_PATH1;"
+PARAM_VECT="$PARAM_VECT""VAR_PATH2:$VAR_PATH2;"
+PARAM_VECT="$PARAM_VECT""SAVE_VAR1:$SAVE_VAR1;"
+PARAM_VECT="$PARAM_VECT""SAVE_VAR2:$SAVE_VAR2;"
+PARAM_VECT="$PARAM_VECT""PRED_VAR1:$PRED_VAR1;"
+PARAM_VECT="$PARAM_VECT""PRED_VAR2:$PRED_VAR2;"
+PARAM_VECT="$PARAM_VECT""ONLY_GENE_START:$ONLY_GENE_START;"
+PARAM_VECT="$PARAM_VECT""SUBSAMPLE:$SUBSAMPLE;"
+PARAM_VECT="$PARAM_VECT""CLIP:$CLIP;"
+PARAM_VECT="$PARAM_VECT""BOOTSTRAP:$BOOTSTRAP;"
+PARAM_VECT="$PARAM_VECT""TEST_METH_NAME:$TEST_METH_NAME;"
+PARAM_VECT="$PARAM_VECT""MERGE_SAMPLE:$MERGE_SAMPLE;"
+
+
+
+echo %%%%%%%%%%%%%%%%%%%%%%%
+echo % 1. Data preparation %
+echo %%%%%%%%%%%%%%%%%%%%%%%
+echo
+
+#Check wether results directory exists
+#if [ -d $RDIFF_RES_DIR ]
+#then       
+#	echo "Writting results to: $RDIFF_RES_DIR"
+#else
+#	mkdir $RDIFF_RES_DIR
+#fi 
+
+
+echo 1a. load the genome annotation in GFF3 format, create an annotation object #\[Log file in ${RDIFF_RES_DIR}}/elegans-gff2anno.log\]
+export PYTHONPATH=$PYTHONPATH:$RDIFF_PYTHON_PATH:${SCIPY_PATH}
+${RDIFF_PYTHON_PATH} -W ignore::RuntimeWarning ${DIR}/../tools/ParseGFF.py ${GFF_INPUT} ${RDIFF_RES_DIR}/genes.mat #> ${RDIFF_RES_DIR}}/elegans-gff2anno.log
+${DIR}/../bin/genes_cell2struct ${RDIFF_RES_DIR}/genes.mat 
+
+
+PARAM_VECT="$PARAM_VECT""GFF_INPUT:${RDIFF_RES_DIR}/genes.mat;"
+
+echo %%%%%%%%%%%%%%%%%%%%%%%%%%%
+echo % 2. Differential testing %
+echo %%%%%%%%%%%%%%%%%%%%%%%%%%%
+echo
+
+exec ${DIR}/start_interpreter.sh ${PROG} "$PARAM_VECT"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff_config.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,12 @@
+#/bin/bash
+export RDIFF_VERSION=0.3
+export RDIFF_PATH=
+export RDIFF_SRC_PATH=${RDIFF_PATH}/src
+export RDIFF_BIN_PATH=${RDIFF_PATH}/bin
+export RDIFF_INTERPRETER=
+export RDIFF_OCTAVE_BIN_PATH=
+export RDIFF_OCTAVE_MKOCT=
+export RDIFF_SAMTOOLS_BIN_DIR=
+export RDIFF_SAMTOOLS_LIB_DIR=
+export RDIFF_SAMTOOLS_INCLUDE_DIR=
+export RDIFF_PYTHON_PATH=
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff_config.sh.bak	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,12 @@
+#/bin/bash
+export RDIFF_VERSION=0.3
+export RDIFF_PATH=/home/vipin/shed_tools/rDiff
+export RDIFF_SRC_PATH=/home/vipin/shed_tools/rDiff/src
+export RDIFF_BIN_PATH=/home/vipin/shed_tools/rDiff/bin
+export RDIFF_INTERPRETER=octave
+export RDIFF_OCTAVE_BIN_PATH=/home/vipin/sw/bin//octave
+export RDIFF_OCTAVE_MKOCT=/home/vipin/sw/bin//mkoctfile
+export RDIFF_SAMTOOLS_BIN_DIR=/home/vipin/packages/samtools-0.1.18//samtools
+export RDIFF_SAMTOOLS_LIB_DIR=/home/vipin/packages/samtools-0.1.18/
+export RDIFF_SAMTOOLS_INCLUDE_DIR=/home/vipin/packages/samtools-0.1.18/
+export RDIFF_PYTHON_PATH=/usr/bin/python
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff_config.sh.sample	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,15 @@
+#!/bin/bash
+export RDIFF_VERSION=0.3
+export RDIFF_PATH=/home/galaxy/software/
+export RDIFF_SRC_PATH=${RDIFF_PATH}/src
+export RDIFF_BIN_PATH=${RDIFF_PATH}/bin
+export RDIFF_INTERPRETER=octave
+export RDIFF_OCTAVE_BIN_PATH=/home/galaxy/software/octave/source/octave-3.6.3/octave
+export RDIFF_OCTAVE_MKOCT=/home/galaxy/software/bin/mkoctfile
+export MATLAB_BIN_PATH=
+export MATLAB_MEX_PATH=
+export MATLAB_INCLUDE_DIR=
+export RDIFF_SAMTOOLS_BIN_DIR=/home/galaxy/software/samtools-0.1.17/samtools
+export RDIFF_SAMTOOLS_LIB_DIR=/home/galaxy/software/samtools-0.1.17/
+export RDIFF_SAMTOOLS_INCLUDE_DIR=/home/galaxy/software/samtools-0.1.17/
+export RDIFF_PYTHON_PATH=/usr/bin/python
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff_gendata	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,9 @@
+#/bin/bash
+# rDiff wrapper script to start the interpreter with the correct list of arguments
+
+set -e
+
+PROG=`basename $0`
+DIR=`dirname $0`
+
+exec ${DIR}/start_interpreter.sh ${PROG} "`${DIR}/genarglist.sh $@`"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/rdiff_wrapper.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,9 @@
+#/bin/bash
+# rDiff wrapper script to start the interpreter with the correct list of arguments
+
+set -e
+
+PROG=`basename $0`
+DIR=`dirname $0`
+
+exec ${DIR}/start_interpreter.sh ${PROG} "`${DIR}/genarglist.sh $@`"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/bin/start_interpreter.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,24 @@
+#/bin/bash
+set -e
+
+. `dirname $0`/rdiff_config.sh
+
+export MATLAB_RETURN_FILE=`mktemp -t rDiff.XXXXXXXXXX.tmp` 
+
+
+if [ "$RDIFF_INTERPRETER" == 'octave' ];
+then
+	echo exit | ${RDIFF_OCTAVE_BIN_PATH} --no-window-system -q --eval "global SHELL_INTERPRETER_INVOKE; SHELL_INTERPRETER_INVOKE=1; warning('off', 'Octave:shadowed-function'); warning('off', 'Octave:deprecated-function') ; addpath $RDIFF_SRC_PATH;  $1('$2'); exit;" || (echo starting Octave failed; rm -f $MATLAB_RETURN_FILE; exit -1) ;
+fi
+
+if [ "$RDIFF_INTERPRETER" == 'matlab' ];
+then
+	echo exit | ${RDIFF_MATLAB_BIN_PATH} -nodisplay -r "global SHELL_INTERPRETER_INVOKE; SHELL_INTERPRETER_INVOKE=1; addpath $RDIFF_SRC_PATH;  $1('$2'); exit;" || (echo starting Matlab failed; rm -f $MATLAB_RETURN_FILE; exit -1) ;
+fi
+
+test -f $MATLAB_RETURN_FILE || exit 0
+ret=`cat $MATLAB_RETURN_FILE` ;
+rm -f $MATLAB_RETURN_FILE
+exit $ret
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/configure	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,298 @@
+#/bin/bash
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Copyright (C) 2009-2013 Max Planck Society, Sloan-Kettering Institute
+#
+
+set -e 
+echo "To get more information please run: configure -h" 
+if [ $# != "0" ];
+then
+		if [ "$1" == "-h" -o $# != "1" ];
+        then
+		  echo Usage: $0 -h   \(this help\)
+		  echo Usage: $0 -i   \(interactive configuration\)
+		  echo Usage: $0 [-a] \(automatic configuration\)
+  		  exit -1
+        fi
+fi
+
+. ./bin/rdiff_config.sh
+
+echo ======================================
+echo  rDiff configure \(version $RDIFF_VERSION\) 
+echo ======================================
+echo
+
+if [ "$1" == "-i" ];
+then
+  echo rDiff base directory \(currently set to \"$RDIFF_PATH\", suggest to set to \"`pwd`\", used if left empty\)
+  read RDIFF_PATH       
+else
+  echo "Running automatic configuration"
+  RDIFF_PATH=""
+fi
+if [ "$RDIFF_PATH" == "" ];
+then
+	RDIFF_PATH=`pwd`
+fi
+echo '=>' Setting rDiff base directory to \"$RDIFF_PATH\"
+echo
+
+if [ "$1" == "-i" ];
+then
+  echo SAMTools directory \(currently set to \"$RDIFF_SAMTOOLS_BIN_DIR\", system version used if left empty\)
+  read RDIFF_SAMTOOLS_BIN_DIR
+else   
+  echo Checking for samtools
+  RDIFF_SAMTOOLS_BIN_DIR=""
+fi
+if [ "$RDIFF_SAMTOOLS_BIN_DIR" == "" ];
+then
+	if [ "$(which samtools)" != "" ] ;
+	then
+		RDIFF_SAMTOOLS_BIN_DIR=$(which samtools)
+	    if [ -f $(dirname $(which samtools))/../include/bam/sam.h ]
+	    then
+			RDIFF_SAMTOOLS_INCLUDE_DIR=$(dirname $(which samtools))/../include/bam/
+			echo "Include found: $RDIFF_SAMTOOLS_INCLUDE_DIR"
+	    elif [ -f $(dirname $(which samtools))/sam.h ]
+	    then 
+	               RDIFF_SAMTOOLS_INCLUDE_DIR=$(dirname $(which samtools))/
+                       echo "Include found: $RDIFF_SAMTOOLS_INCLUDE_DIR"
+	    else
+			echo "ERROR: Include sam.h include not found"
+			exit -1 ;
+	    fi
+	    if [ -f $(dirname $(which samtools))/../lib/libbam.a ]
+	    then
+			RDIFF_SAMTOOLS_LIB_DIR=$(dirname $(which samtools))/../lib/
+			echo "Library found: $RDIFF_SAMTOOLS_LIB_DIR"
+	    elif [ -f $(dirname $(which samtools))/libbam.a ]
+	    then
+		       RDIFF_SAMTOOLS_LIB_DIR=$(dirname $(which samtools))/
+                       echo "Library found: $RDIFF_SAMTOOLS_LIB_DIR"
+	    else
+			echo "ERROR: Library libbam.a not found"
+			exit -1 ;
+	    fi
+	else
+	    echo SAMTools libraries not found
+	    echo please run interactive mode: ./configure -i
+	    exit -1 ;
+	fi
+else
+	if [ ! -f $RDIFF_SAMTOOLS_BIN_DIR ];
+	then
+		echo "ERROR: Binary $RDIFF_SAMTOOLS_BIN_DIR not found"
+                echo please run interactive mode: ./configure -i
+		exit -1 ;
+	fi
+
+	echo SAMTools Include directory \(currently set to \"$RDIFF_SAMTOOLS_INCLUDE_DIR\"\)
+	read RDIFF_SAMTOOLS_INCLUDE_DIR
+	if [ ! -f $RDIFF_SAMTOOLS_INCLUDE_DIR/sam.h ]
+	then
+		echo "ERROR: Include $RDIFF_SAMTOOLS_INCLUDE_DIR/sam.h include not found"
+                echo please run interactive mode: ./configure -i
+		exit -1 ;
+	fi
+	
+	echo SAMTools library directory \(currently set to \"$RDIFF_SAMTOOLS_LIB_DIR\"\)
+	read RDIFF_SAMTOOLS_LIB_DIR
+	if [ ! -f $RDIFF_SAMTOOLS_LIB_DIR/libbam.a ]
+	then
+		echo "ERROR: Library $RDIFF_SAMTOOLS_LIB_DIR/libbam.a include not found"
+                echo please run interactive mode: ./configure -i
+		exit -1 ;
+	fi
+fi
+echo '=>' Setting samtools directory to \"$RDIFF_SAMTOOLS_BIN_DIR\"
+echo
+
+if [ "$1" == "-i" ];
+then
+  echo Path to the python binary \(currently set to \"$RDIFF_PYTHON_PATH\", system version used, if left empty\)
+  read RDIFF_PYTHON_PATH
+else
+  echo Checking for python and Scipy
+  RDIFF_PYTHON_PATH="" 
+fi
+if [ "$RDIFF_PYTHON_PATH" == "" ];
+then
+	python_found=
+    scipy_found=
+	for i in python python2.7 python2.6 python2.5 python2.4;
+    do	
+      RDIFF_PYTHON_PATH=`which $i`
+  	  python_found=$i
+  	  if [ "$RDIFF_PYTHON_PATH" != "" ];
+ 	  then
+	    scipy=`echo import scipy | $RDIFF_PYTHON_PATH 2>&1 | grep  -e ImportError|wc -l`
+		if [ $scipy == "0" ];
+        then
+		  scipy_found=$RDIFF_PYTHON_PATH
+          break
+		fi
+	  fi
+    done 
+    if [ "$python_found" == "" ];
+    then 
+      echo "ERROR: Python not found"
+      echo please run interactive mode: ./configure -i
+      exit -1 
+    fi
+    if [ "$scipy_found" == "" ];
+    then 
+      echo "ERROR: Scipy not found (for $python_found)"
+      echo please run interactive mode: ./configure -i
+      exit -1 
+    fi
+fi
+echo '=>' Setting Python path to \"$RDIFF_PYTHON_PATH\"
+echo
+
+RDIFF_INTERPRETER="octave"
+if [ "$RDIFF_INTERPRETER" == 'octave' ];
+then
+  if [ "$1" == "-i" ];
+  then
+	echo Please enter the full path to octave \(currently set to \"$RDIFF_OCTAVE_BIN_PATH\", system version used, if left empty\)
+	read RDIFF_OCTAVE_BIN_PATH
+  else
+    RDIFF_OCTAVE_BIN_PATH="" 
+	echo checking for octave 
+  fi
+	if [ "$RDIFF_OCTAVE_BIN_PATH" == "" ];
+	then
+	    RDIFF_OCTAVE_BIN_PATH=`which octave` 
+		if [ "$RDIFF_OCTAVE_BIN_PATH" == "" ];
+		then
+			echo octave not found
+                        echo please run interactive mode: ./configure -i
+			exit -1
+		fi
+	fi
+	echo '=>' Setting octave\'s path to \"$RDIFF_OCTAVE_BIN_PATH\"
+  if [ "$1" == "-i" ];
+  then
+	echo Please enter the full path to mkoctfile \(currently set to \"$RDIFF_OCTAVE_MKOCT\", system version used, if left empty\)
+	read RDIFF_OCTAVE_MKOCT
+  else 
+    RDIFF_OCTAVE_MKOCT="" 
+  fi
+	if [ "$RDIFF_OCTAVE_MKOCT" == "" ];
+	then
+	    RDIFF_OCTAVE_MKOCT=`which mkoctfile` 
+		if [ "$RDIFF_OCTAVE_MKOCT" == "" ];
+		then
+			RDIFF_OCTAVE_MKOCT=$(dirname $RDIFF_OCTAVE_BIN_PATH)/mkoctfile
+			if [ ! -f RDIFF_OCTAVE_MKOCT ];
+			then
+				echo mkoctfile not found
+				echo please run interactive mode: ./configure -i
+				exit -1
+			fi
+		fi
+	fi
+	echo '=>' Setting octave\'s path to \"$RDIFF_OCTAVE_MKOCT\"
+	echo
+fi
+
+if [ "$RDIFF_INTERPRETER" == 'matlab' ];
+then
+	echo Please enter the full path to matlab \(currently set to \"$MATLAB_BIN_PATH\", system version used, if left empty\)
+	read MATLAB_BIN_PATH
+	if [ "$MATLAB_BIN_PATH" == "" ];
+	then
+		MATLAB_BIN_PATH=`which matlab`
+		if [ "$MATLAB_BIN_PATH" == "" ];
+		then
+			echo matlab not found
+			echo please run interactive mode: ./configure -i
+			exit -1
+		fi
+	fi
+	if [ ! -f $MATLAB_BIN_PATH ];
+	then
+		echo matlab not found
+		echo please run interactive mode: ./configure -i
+		exit -1
+	fi
+	echo '=>' Setting matlab\'s path to \"$MATLAB_BIN_PATH\"
+	echo
+
+	echo Please enter the full path to mex binary \(currently set to \"$MATLAB_MEX_PATH\", system version used if left empty\)
+	read MATLAB_MEX_PATH
+	if [ "$MATLAB_MEX_PATH" == "" ];
+	then
+		MATLAB_MEX_PATH=`which mex`
+		if [ "$MATLAB_MEX_PATH" == "" ];
+		then
+			echo mex not found
+			echo please run interactive mode: ./configure -i
+			exit -1
+		fi
+	fi
+	if [ ! -f "$MATLAB_MEX_PATH" ];
+	then
+		echo mex not found
+		echo please run interactive mode: ./configure -i
+		exit -1
+	fi
+	echo '=>' Setting mex\' path to \"$MATLAB_MEX_PATH\"
+	echo
+
+	echo Please enter the full path to the matlab include directory \(currently set to \"$MATLAB_INCLUDE_DIR\", system version used, if left empty\)
+	read MATLAB_INCLUDE_DIR
+	if [ "$MATLAB_INCLUDE_DIR" == "" ];
+	then
+		MATLAB_INCLUDE_DIR=$(dirname $MATLAB_BIN_PATH)/../extern/include
+	fi
+	if [ ! -d "$MATLAB_INCLUDE_DIR" ];
+	then
+		echo matlab include dir not found
+		echo please run interactive mode: ./configure -i
+		exit -1
+	fi
+	echo '=>' Setting matlab\'s include directory to \"$MATLAB_INCLUDE_DIR\"
+	echo
+
+	RDIFF_OCTAVE_BIN_PATH=
+fi
+
+cp -p bin/rdiff_config.sh bin/rdiff_config.sh.bak
+
+grep -v -e RDIFF_OCTAVE_BIN_PATH -e RDIFF_OCTAVE_MKOCT -e MATLAB_BIN_PATH -e MATLAB_MEX_PATH -e MATLAB_INCLUDE_DIR \
+    -e RDIFF_PATH -e RDIFF_SRC_PATH -e RDIFF_BIN_PATH \
+    -e RDIFF_INTERPRETER bin/rdiff_config.sh.bak \
+    -e RDIFF_SAMTOOLS_BIN_DIR -e RDIFF_SAMTOOLS_LIB_DIR -e RDIFF_SAMTOOLS_INCLUDE_DIR -e RDIFF_PYTHON_PATH -e SCIPY_PATH -e $RDIFF_VERSION > bin/rdiff_config.sh
+
+echo Generating config file ... 
+
+# appending the relevant lines to rdiff_config.sh
+echo export RDIFF_VERSION=$RDIFF_VERSION >> bin/rdiff_config.sh
+echo export RDIFF_PATH=$RDIFF_PATH >> bin/rdiff_config.sh
+echo export RDIFF_SRC_PATH=${RDIFF_PATH}/src >> bin/rdiff_config.sh
+echo export RDIFF_BIN_PATH=${RDIFF_PATH}/bin >> bin/rdiff_config.sh
+echo export RDIFF_INTERPRETER=$RDIFF_INTERPRETER >> bin/rdiff_config.sh
+echo export RDIFF_MATLAB_BIN_PATH=$MATLAB_BIN_PATH >> bin/rdiff_config.sh
+echo export RDIFF_MATLAB_MEX_PATH=$MATLAB_MEX_PATH >> bin/rdiff_config.sh
+echo export RDIFF_MATLAB_INCLUDE_DIR=$MATLAB_INCLUDE_DIR >> bin/rdiff_config.sh
+echo export RDIFF_OCTAVE_BIN_PATH=$RDIFF_OCTAVE_BIN_PATH >> bin/rdiff_config.sh
+echo export RDIFF_OCTAVE_MKOCT=$RDIFF_OCTAVE_MKOCT >> bin/rdiff_config.sh
+echo export RDIFF_SAMTOOLS_BIN_DIR=$RDIFF_SAMTOOLS_BIN_DIR >> bin/rdiff_config.sh  
+echo export RDIFF_SAMTOOLS_LIB_DIR=$RDIFF_SAMTOOLS_LIB_DIR >> bin/rdiff_config.sh  
+echo export RDIFF_SAMTOOLS_INCLUDE_DIR=$RDIFF_SAMTOOLS_INCLUDE_DIR >> bin/rdiff_config.sh  
+echo export RDIFF_PYTHON_PATH=$RDIFF_PYTHON_PATH >> bin/rdiff_config.sh
+
+echo Done.
+echo 
+
+echo Please use \'make\' to compile the mex files before using rDiff.
+echo To test rDiff use \'make example\' or \'make threeexamples\'.
+echo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/Makefile	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,23 @@
+include ../bin/rdiff_config.sh
+
+all: example
+
+data: 
+	./get_data.sh
+
+example: param
+
+
+threeexamples: data poisson param nonparam
+
+poisson: data
+	./run_example.sh poisson
+
+param: data
+	./run_example.sh param
+
+nonparam: data
+	./run_example.sh nonparam
+
+clean:
+	rm -rf  results-param results-nonparam results-poisson example_data.tar.gz data
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/get_data.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -e
+
+echo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+echo % rDiff examples: get_data.sh %
+echo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+echo 
+echo This script gets reads and the genome sequence 
+echo for one A.thaliana example.
+echo 
+
+export DATA_DIR=data
+
+if [ -d $DATA_DIR ]
+then
+	echo Data directory ./$DATA_DIR already exists
+	echo \(remove it to run this script again\)
+	exit -1
+fi
+
+echo Downloading rDiff example data from FTP server ...
+wget -c http://cbio.mskcc.org/public/raetschlab/user/drewe/rdiff/example_data.tar.gz
+echo uncompressing ...
+tar -xzf example_data.tar.gz
+mv example_data $DATA_DIR
+echo
+echo -n Done.
+echo
Binary file rDiff/examples/results/Alternative_region_counts.mat has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/Gene_expression.tab	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,101 @@
+gene	example_condition_A_replicate_1.bam	example_condition_A_replicate_2.bam	example_condition_B_replicate_1.bam	example_condition_B_replicate_2.bam
+Gene:AT1G03710	957	844	458	507
+Gene:AT1G02145	2385	2458	1735	1764
+Gene:AT1G02850	902	932	2074	2409
+Gene:AT1G02840	1307	1551	1160	1146
+Gene:AT1G02880	1144	1110	1130	1109
+Gene:AT1G02090	10000	10000	10000	10000
+Gene:AT1G01920	3090	3109	2191	2224
+Gene:AT1G04590	3154	3123	2898	2718
+Gene:AT1G01080	1283	1403	882	863
+Gene:AT1G01060	10000	10000	10000	10000
+Gene:AT1G01070	3234	3046	2231	1934
+Gene:AT1G02630	782	864	728	663
+Gene:AT1G03310	1778	2089	984	1104
+Gene:AT1G04140	3311	3436	1477	1138
+Gene:AT1G02470	700	787	570	568
+Gene:AT1G03630	1455	1484	1308	1132
+Gene:AT1G04870	809	836	779	840
+Gene:AT1G02065	2269	2417	2119	2046
+Gene:AT1G01320	10000	10000	10000	10000
+Gene:AT1G03055	922	843	603	661
+Gene:AT1G01650	323	333	1699	1562
+Gene:AT1G04490	1131	1080	670	700
+Gene:AT1G01110	4305	3903	2448	2500
+Gene:AT1G01100	1732	1535	1249	1268
+Gene:AT1G01480	1378	1520	1213	1169
+Gene:AT1G02190	1117	1390	1614	1440
+Gene:AT1G02160	372	395	224	170
+Gene:AT1G03770	3971	4033	3312	3289
+Gene:AT1G03070	723	732	1127	955
+Gene:AT1G03687	1919	1895	1629	1627
+Gene:AT1G02750	1293	1338	1289	1399
+Gene:AT1G04300	1792	1912	1444	1562
+Gene:AT1G01640	1937	2184	956	877
+Gene:AT1G02930	1126	1092	976	942
+Gene:AT1G02990	1832	1817	1716	1616
+Gene:AT1G01160	2291	2432	2076	2101
+Gene:AT1G03740	9319	8998	6263	5558
+Gene:AT1G01260	1394	1402	906	897
+Gene:AT1G03250	1208	1295	1095	1067
+Gene:AT1G01830	217	253	10000	10000
+Gene:AT1G01800	3298	3076	1719	1718
+Gene:AT1G02950	1393	1518	803	804
+Gene:AT1G02205	1488	1487	1046	1027
+Gene:AT1G04830	4250	4600	4120	3996
+Gene:AT1G02100	838	938	708	628
+Gene:AT1G01240	847	999	671	632
+Gene:AT1G02860	2206	2139	4071	3992
+Gene:AT1G02010	10000	10000	10000	10000
+Gene:AT1G03910	10000	10000	10000	10000
+Gene:AT1G01550	1179	1083	436	491
+Gene:AT1G01540	3457	3582	4011	3609
+Gene:AT1G03180	1177	1187	959	1063
+Gene:AT1G01560	2010	2079	1553	1353
+Gene:AT1G04270	887	722	447	486
+Gene:AT1G01620	1662	1636	1709	1554
+Gene:AT1G04120	1289	1357	1059	920
+Gene:AT1G04020	4901	5037	10000	10000
+Gene:AT1G03470	4017	3533	2956	2843
+Gene:AT1G01370	7512	7443	6924	7402
+Gene:AT1G03457	1525	1422	1068	1058
+Gene:AT1G04750	2330	2492	1051	980
+Gene:AT1G03520	2037	1774	1814	1641
+Gene:AT1G03860	2559	2492	1994	1976
+Gene:AT1G01950	2422	2415	2067	2232
+Gene:AT1G04400	2478	2730	4504	4617
+Gene:AT1G03780	1073	1274	1157	1159
+Gene:AT1G02890	502	543	1268	1451
+Gene:AT1G03840	10000	10000	10000	10000
+Gene:AT1G03850	1166	1300	928	1108
+Gene:AT1G01490	1346	1481	894	799
+Gene:AT1G01453	2243	2568	2035	1965
+Gene:AT1G01290	756	655	569	578
+Gene:AT1G02500	10000	10000	10000	10000
+Gene:AT1G03290	1578	1713	1193	1232
+Gene:AT1G04510	1245	1203	750	754
+Gene:AT1G01448	292	353	1808	1711
+Gene:AT1G03830	305	337	1712	1818
+Gene:AT1G01740	10000	10000	8471	8455
+Gene:AT1G02020	1890	1904	988	934
+Gene:AT1G03960	1461	1436	4637	4699
+Gene:AT1G04080	1415	1444	1260	1263
+Gene:AT1G01020	2682	2593	1691	1776
+Gene:AT1G01140	1058	1031	1290	1409
+Gene:AT1G01170	1101	1115	205	175
+Gene:AT1G01910	1498	1435	1177	1269
+Gene:AT1G03090	1451	1468	847	833
+Gene:AT1G03040	1412	1554	1075	1062
+Gene:AT1G02720	4153	4674	3873	3862
+Gene:AT1G01340	2167	2301	1826	1662
+Gene:AT1G04430	10000	10000	10000	10000
+Gene:AT1G02690	9898	9578	7417	7659
+Gene:AT1G02280	1335	1386	850	742
+Gene:AT1G04640	308	273	1611	1451
+Gene:AT1G02080	1519	1540	1029	1031
+Gene:AT1G03190	1078	1119	1014	753
+Gene:AT1G03160	10000	10000	10000	10000
+Gene:AT1G01040	10000	10000	10000	10000
+Gene:AT1G01880	2563	2539	2156	1946
+Gene:AT1G04550	2164	2160	971	1075
+Gene:AT1G02960	3974	4052	3242	3395
Binary file rDiff/examples/results/Nonparametric_region_counts.mat has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/P_values_rDiff_parametric.tab	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,101 @@
+gene	p-value	test-status
+Gene:AT1G03710	0.704773	OK
+Gene:AT1G02145	0.370545	OK
+Gene:AT1G02850	1.918498	OK
+Gene:AT1G02840	1.642854	OK
+Gene:AT1G02880	0.492281	OK
+Gene:AT1G02090	0.938574	OK
+Gene:AT1G01920	0.705409	OK
+Gene:AT1G04590	0.113305	OK
+Gene:AT1G01080	1.003879	OK
+Gene:AT1G01060	1.947317	OK
+Gene:AT1G01070	0.021359	OK
+Gene:AT1G02630	0.579141	OK
+Gene:AT1G03310	1.057090	OK
+Gene:AT1G04140	0.645319	OK
+Gene:AT1G02470	0.735737	OK
+Gene:AT1G03630	0.923760	OK
+Gene:AT1G04870	0.767166	OK
+Gene:AT1G02065	0.000047	OK
+Gene:AT1G01320	0.138173	OK
+Gene:AT1G03055	0.341017	OK
+Gene:AT1G01650	0.347864	OK
+Gene:AT1G04490	1.727160	OK
+Gene:AT1G01110	0.128985	OK
+Gene:AT1G01100	0.633135	OK
+Gene:AT1G01480	0.032665	OK
+Gene:AT1G02190	1.050232	OK
+Gene:AT1G02160	0.797325	OK
+Gene:AT1G03770	0.699047	OK
+Gene:AT1G03070	1.508657	OK
+Gene:AT1G03687	0.806313	OK
+Gene:AT1G02750	0.024220	OK
+Gene:AT1G04300	2.024951	OK
+Gene:AT1G01640	1.018818	OK
+Gene:AT1G02930	0.000000	OK
+Gene:AT1G02990	0.468464	OK
+Gene:AT1G01160	0.534532	OK
+Gene:AT1G03740	1.647691	OK
+Gene:AT1G01260	2.510787	OK
+Gene:AT1G03250	0.148805	OK
+Gene:AT1G01830	0.316036	OK
+Gene:AT1G01800	0.600649	OK
+Gene:AT1G02950	0.220667	OK
+Gene:AT1G02205	1.379227	OK
+Gene:AT1G04830	1.272510	OK
+Gene:AT1G02100	1.013351	OK
+Gene:AT1G01240	0.000000	OK
+Gene:AT1G02860	0.157175	OK
+Gene:AT1G02010	1.117614	OK
+Gene:AT1G03910	0.381004	OK
+Gene:AT1G01550	0.285856	OK
+Gene:AT1G01540	0.893574	OK
+Gene:AT1G03180	0.000000	OK
+Gene:AT1G01560	1.161805	OK
+Gene:AT1G04270	0.481731	OK
+Gene:AT1G01620	0.529494	OK
+Gene:AT1G04120	0.418840	OK
+Gene:AT1G04020	0.711387	OK
+Gene:AT1G03470	0.783850	OK
+Gene:AT1G01370	0.607168	OK
+Gene:AT1G03457	0.317478	OK
+Gene:AT1G04750	1.295518	OK
+Gene:AT1G03520	0.499123	OK
+Gene:AT1G03860	0.551834	OK
+Gene:AT1G01950	0.000000	OK
+Gene:AT1G04400	0.569943	OK
+Gene:AT1G03780	0.211243	OK
+Gene:AT1G02890	1.160076	OK
+Gene:AT1G03840	0.846708	OK
+Gene:AT1G03850	1.027884	OK
+Gene:AT1G01490	1.264537	OK
+Gene:AT1G01453	0.815251	OK
+Gene:AT1G01290	0.858498	OK
+Gene:AT1G02500	0.000000	OK
+Gene:AT1G03290	1.396285	OK
+Gene:AT1G04510	0.623744	OK
+Gene:AT1G01448	2.770987	OK
+Gene:AT1G03830	0.461835	OK
+Gene:AT1G01740	0.001490	OK
+Gene:AT1G02020	1.060680	OK
+Gene:AT1G03960	0.664537	OK
+Gene:AT1G04080	0.289909	OK
+Gene:AT1G01020	0.000000	OK
+Gene:AT1G01140	2.166970	OK
+Gene:AT1G01170	0.199344	OK
+Gene:AT1G01910	1.694582	OK
+Gene:AT1G03090	0.598981	OK
+Gene:AT1G03040	1.437664	OK
+Gene:AT1G02720	1.568591	OK
+Gene:AT1G01340	0.067537	OK
+Gene:AT1G04430	1.489859	OK
+Gene:AT1G02690	0.000000	OK
+Gene:AT1G02280	0.000000	OK
+Gene:AT1G04640	0.259239	OK
+Gene:AT1G02080	0.424669	OK
+Gene:AT1G03190	0.000000	OK
+Gene:AT1G03160	0.450845	OK
+Gene:AT1G01040	1.417849	OK
+Gene:AT1G01880	1.498525	OK
+Gene:AT1G04550	1.096275	OK
+Gene:AT1G02960	1.455787	OK
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/genes.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,56830 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:03:56 2013 UTC <galaxy@ip-10-149-27-54>
+# name: genes
+# type: struct
+# ndims: 2
+ 1 100
+# length: 45
+# name: confgenes_id
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: polya_conf
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: utr5_exons
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 923426
+ 923492
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 923426
+ 923492
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 404600
+ 404627
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 404600
+ 404757
+ 404670
+ 404915
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 404600
+ 404627
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 404600
+ 404757
+ 404670
+ 404915
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 630505
+ 630569
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 630505
+ 630569
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 630505
+ 630569
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 630505
+ 630569
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 630505
+ 630569
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 626741
+ 626913
+ 626829
+ 626918
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 626780
+ 626913
+ 626829
+ 626918
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 626741
+ 626917
+ 626829
+ 626918
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 643972
+ 644349
+ 644256
+ 644521
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 644476
+ 644605
+ 644478
+ 644903
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 644485
+ 644539
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 643921
+ 644159
+ 644349
+ 643949
+ 644261
+ 644532
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389568
+ 389647
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389568
+ 389647
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389568
+ 389647
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 316187
+ 316204
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 316128
+ 316204
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1261411
+ 1261426
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1261411
+ 1261425
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 46789
+ 47019
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 46789
+ 47019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 37061
+ 37372
+ 37568
+ 37203
+ 37398
+ 37840
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 37061
+ 37372
+ 37203
+ 37780
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 37061
+ 37372
+ 37568
+ 37203
+ 37398
+ 37757
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 37061
+ 37372
+ 37568
+ 37203
+ 37398
+ 37780
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 36836
+ 37022
+ 37372
+ 36921
+ 37203
+ 37871
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 40877
+ 40944
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 40597
+ 40927
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 562382
+ 562424
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 813471
+ 813929
+ 813582
+ 813975
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 813486
+ 813929
+ 813605
+ 813975
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1080321
+ 1080630
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1080321
+ 1080630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 513573
+ 513624
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 513573
+ 513611
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 907642
+ 907699
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 907651
+ 907699
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1375128
+ 1375382
+ 1375211
+ 1375742
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1375598
+ 1375762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 365209
+ 365625
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 365567
+ 365625
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 130099
+ 130371
+ 130149
+ 130570
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 130099
+ 130371
+ 130149
+ 130577
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 711763
+ 711803
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 711763
+ 711803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 237647
+ 237817
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 236537
+ 236672
+ 237503
+ 236548
+ 237023
+ 237817
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 1219325
+ 1219578
+ 1219793
+ 1219352
+ 1219633
+ 1219914
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 2
+ 1219325
+ 1219578
+ 1219793
+ 1219998
+ 1219352
+ 1219633
+ 1219906
+ 1220137
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 52869
+ 53022
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 50954
+ 51063
+ 50963
+ 51108
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 50954
+ 51125
+ 50963
+ 51199
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 50954
+ 51125
+ 50963
+ 51197
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 50954
+ 51122
+ 50963
+ 51187
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 175782
+ 175862
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 176141
+ 176592
+ 176339
+ 176607
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 415079
+ 415154
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 415079
+ 415154
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 410748
+ 410803
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 410748
+ 410803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 944595
+ 944772
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 944572
+ 944772
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 944595
+ 944772
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 729935
+ 730140
+ 730024
+ 730148
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 729901
+ 730140
+ 730057
+ 730148
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 918299
+ 918308
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 918299
+ 918308
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 602497
+ 602673
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 602601
+ 602673
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1153895
+ 1154495
+ 1153940
+ 1154652
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 1153095
+ 1153717
+ 1154495
+ 1153345
+ 1153940
+ 1154652
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1153895
+ 1154495
+ 1153940
+ 1154652
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1153895
+ 1154495
+ 1153940
+ 1154596
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 231915
+ 232397
+ 231928
+ 232508
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 231915
+ 232246
+ 231928
+ 232322
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 662191
+ 662427
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 662191
+ 662333
+ 662253
+ 662456
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 686884
+ 687114
+ 687009
+ 687315
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 686884
+ 687114
+ 687009
+ 687315
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 686996
+ 687114
+ 687009
+ 687315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 72339
+ 72583
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 72357
+ 72583
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 933512
+ 934055
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 933512
+ 934055
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 109032
+ 109595
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 109076
+ 109413
+ 109331
+ 109595
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 108946
+ 109406
+ 109331
+ 109595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 795159
+ 795368
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 795159
+ 795376
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 300441
+ 300602
+ 300515
+ 300729
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 300441
+ 300602
+ 300751
+ 300515
+ 300665
+ 300846
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 2
+ 300441
+ 300602
+ 300751
+ 301487
+ 302053
+ 300515
+ 300665
+ 300826
+ 301544
+ 302315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 293342
+ 293396
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 293342
+ 293500
+ 293410
+ 293595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 666420
+ 666451
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 666420
+ 666452
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 666420
+ 666451
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 666244
+ 666350
+ 666262
+ 666451
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 418767
+ 418987
+ 419297
+ 418878
+ 419211
+ 419650
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 418767
+ 418818
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 418748
+ 418818
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1361844
+ 1361981
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1361844
+ 1362019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389812
+ 389876
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389821
+ 389876
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 389823
+ 389876
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 99922
+ 100657
+ 100032
+ 100683
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 100031
+ 100657
+ 100221
+ 100683
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 99894
+ 100683
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 635144
+ 635474
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 635144
+ 635474
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 347891
+ 348046
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 347974
+ 348046
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 996115
+ 996426
+ 996218
+ 996432
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 996115
+ 996426
+ 996218
+ 996432
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 199639
+ 199890
+ 200511
+ 199764
+ 199960
+ 200526
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 199791
+ 200511
+ 199960
+ 200526
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 195812
+ 195980
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 195780
+ 195980
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 773411
+ 773543
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 773411
+ 773989
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 202136
+ 202345
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 202136
+ 202345
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1142960
+ 1143053
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1142960
+ 1143051
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 227176
+ 227302
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 226960
+ 227078
+ 227049
+ 227302
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1070396
+ 1070687
+ 1070494
+ 1070927
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1070396
+ 1070687
+ 1070494
+ 1071047
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1036537
+ 1036610
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1036537
+ 1036610
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 867493
+ 867625
+ 867520
+ 867733
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 867493
+ 867629
+ 867511
+ 867674
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 143564
+ 143764
+ 143677
+ 143773
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 143715
+ 143773
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 864019
+ 864125
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 864019
+ 864075
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1333426
+ 1333567
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1333426
+ 1333534
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 879553
+ 880158
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 879286
+ 879931
+ 879300
+ 880158
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 981157
+ 981772
+ 981160
+ 981885
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 980870
+ 981772
+ 981160
+ 981868
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 981157
+ 981562
+ 981160
+ 981762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 325379
+ 325473
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 325379
+ 325473
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 325379
+ 325473
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1187901
+ 1188186
+ 1188006
+ 1188517
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1187901
+ 1188186
+ 1188073
+ 1188276
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 951696
+ 951730
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 951696
+ 951810
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 951696
+ 951827
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 651797
+ 651907
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 651797
+ 651907
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 970058
+ 970130
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 977685
+ 977761
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 977685
+ 977761
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 182066
+ 182358
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 182066
+ 182252
+ 182135
+ 182293
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 167798
+ 167842
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 167798
+ 167842
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 114286
+ 114299
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 114286
+ 114299
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 518251
+ 519036
+ 518379
+ 519037
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 518254
+ 519033
+ 518379
+ 519037
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 807396
+ 807951
+ 807511
+ 807970
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 807361
+ 807951
+ 807632
+ 807970
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1226575
+ 1226749
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1226575
+ 1226749
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 966622
+ 966757
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 274239
+ 274383
+ 274249
+ 274569
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 274239
+ 274383
+ 274289
+ 274569
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 354845
+ 354969
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 354845
+ 354969
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1013715
+ 1014085
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 1013715
+ 1014621
+ 1014767
+ 1014544
+ 1014677
+ 1014824
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1051343
+ 1051769
+ 1051492
+ 1051803
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1053126
+ 1053171
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1051312
+ 1051769
+ 1051492
+ 1051803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 8666
+ 8737
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 8666
+ 8737
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 67512
+ 67625
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 67512
+ 67625
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 67512
+ 67625
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 74443
+ 74660
+ 74455
+ 74737
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 74443
+ 74660
+ 74449
+ 74731
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 315831
+ 315902
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 315831
+ 315902
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 315831
+ 315902
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 315831
+ 315902
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 315644
+ 315902
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 739679
+ 739715
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 739679
+ 739715
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 706457
+ 706631
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 706457
+ 706630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 591826
+ 592115
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 591826
+ 592115
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 135118
+ 135322
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 135216
+ 135707
+ 135269
+ 135831
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1198118
+ 1198788
+ 1198327
+ 1198860
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1198508
+ 1198788
+ 1198638
+ 1198860
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 584260
+ 584397
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 584260
+ 584397
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 450246
+ 450360
+ 450258
+ 450425
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 450246
+ 450360
+ 450251
+ 450426
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1292080
+ 1292538
+ 1292156
+ 1292541
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1292111
+ 1292541
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 373501
+ 373694
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 775527
+ 775808
+ 775650
+ 775822
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 775622
+ 775822
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 761282
+ 761321
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 761282
+ 761321
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 23146
+ 23519
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 23416
+ 23519
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 308991
+ 309109
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 308991
+ 309109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1240375
+ 1240582
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1240375
+ 1240582
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 669773
+ 669837
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 669773
+ 669837
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 669773
+ 669805
+
+
+
+
+
+
+
+
+# name: transcript_valid
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: is_alt_spliced
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+
+
+# name: id
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: scalar
+1
+
+
+
+# name: <cell-element>
+# type: scalar
+2
+
+
+
+# name: <cell-element>
+# type: scalar
+3
+
+
+
+# name: <cell-element>
+# type: scalar
+4
+
+
+
+# name: <cell-element>
+# type: scalar
+5
+
+
+
+# name: <cell-element>
+# type: scalar
+6
+
+
+
+# name: <cell-element>
+# type: scalar
+7
+
+
+
+# name: <cell-element>
+# type: scalar
+8
+
+
+
+# name: <cell-element>
+# type: scalar
+9
+
+
+
+# name: <cell-element>
+# type: scalar
+10
+
+
+
+# name: <cell-element>
+# type: scalar
+11
+
+
+
+# name: <cell-element>
+# type: scalar
+12
+
+
+
+# name: <cell-element>
+# type: scalar
+13
+
+
+
+# name: <cell-element>
+# type: scalar
+14
+
+
+
+# name: <cell-element>
+# type: scalar
+15
+
+
+
+# name: <cell-element>
+# type: scalar
+16
+
+
+
+# name: <cell-element>
+# type: scalar
+17
+
+
+
+# name: <cell-element>
+# type: scalar
+18
+
+
+
+# name: <cell-element>
+# type: scalar
+19
+
+
+
+# name: <cell-element>
+# type: scalar
+20
+
+
+
+# name: <cell-element>
+# type: scalar
+21
+
+
+
+# name: <cell-element>
+# type: scalar
+22
+
+
+
+# name: <cell-element>
+# type: scalar
+23
+
+
+
+# name: <cell-element>
+# type: scalar
+24
+
+
+
+# name: <cell-element>
+# type: scalar
+25
+
+
+
+# name: <cell-element>
+# type: scalar
+26
+
+
+
+# name: <cell-element>
+# type: scalar
+27
+
+
+
+# name: <cell-element>
+# type: scalar
+28
+
+
+
+# name: <cell-element>
+# type: scalar
+29
+
+
+
+# name: <cell-element>
+# type: scalar
+30
+
+
+
+# name: <cell-element>
+# type: scalar
+31
+
+
+
+# name: <cell-element>
+# type: scalar
+32
+
+
+
+# name: <cell-element>
+# type: scalar
+33
+
+
+
+# name: <cell-element>
+# type: scalar
+34
+
+
+
+# name: <cell-element>
+# type: scalar
+35
+
+
+
+# name: <cell-element>
+# type: scalar
+36
+
+
+
+# name: <cell-element>
+# type: scalar
+37
+
+
+
+# name: <cell-element>
+# type: scalar
+38
+
+
+
+# name: <cell-element>
+# type: scalar
+39
+
+
+
+# name: <cell-element>
+# type: scalar
+40
+
+
+
+# name: <cell-element>
+# type: scalar
+41
+
+
+
+# name: <cell-element>
+# type: scalar
+42
+
+
+
+# name: <cell-element>
+# type: scalar
+43
+
+
+
+# name: <cell-element>
+# type: scalar
+44
+
+
+
+# name: <cell-element>
+# type: scalar
+45
+
+
+
+# name: <cell-element>
+# type: scalar
+46
+
+
+
+# name: <cell-element>
+# type: scalar
+47
+
+
+
+# name: <cell-element>
+# type: scalar
+48
+
+
+
+# name: <cell-element>
+# type: scalar
+49
+
+
+
+# name: <cell-element>
+# type: scalar
+50
+
+
+
+# name: <cell-element>
+# type: scalar
+51
+
+
+
+# name: <cell-element>
+# type: scalar
+52
+
+
+
+# name: <cell-element>
+# type: scalar
+53
+
+
+
+# name: <cell-element>
+# type: scalar
+54
+
+
+
+# name: <cell-element>
+# type: scalar
+55
+
+
+
+# name: <cell-element>
+# type: scalar
+56
+
+
+
+# name: <cell-element>
+# type: scalar
+57
+
+
+
+# name: <cell-element>
+# type: scalar
+58
+
+
+
+# name: <cell-element>
+# type: scalar
+59
+
+
+
+# name: <cell-element>
+# type: scalar
+60
+
+
+
+# name: <cell-element>
+# type: scalar
+61
+
+
+
+# name: <cell-element>
+# type: scalar
+62
+
+
+
+# name: <cell-element>
+# type: scalar
+63
+
+
+
+# name: <cell-element>
+# type: scalar
+64
+
+
+
+# name: <cell-element>
+# type: scalar
+65
+
+
+
+# name: <cell-element>
+# type: scalar
+66
+
+
+
+# name: <cell-element>
+# type: scalar
+67
+
+
+
+# name: <cell-element>
+# type: scalar
+68
+
+
+
+# name: <cell-element>
+# type: scalar
+69
+
+
+
+# name: <cell-element>
+# type: scalar
+70
+
+
+
+# name: <cell-element>
+# type: scalar
+71
+
+
+
+# name: <cell-element>
+# type: scalar
+72
+
+
+
+# name: <cell-element>
+# type: scalar
+73
+
+
+
+# name: <cell-element>
+# type: scalar
+74
+
+
+
+# name: <cell-element>
+# type: scalar
+75
+
+
+
+# name: <cell-element>
+# type: scalar
+76
+
+
+
+# name: <cell-element>
+# type: scalar
+77
+
+
+
+# name: <cell-element>
+# type: scalar
+78
+
+
+
+# name: <cell-element>
+# type: scalar
+79
+
+
+
+# name: <cell-element>
+# type: scalar
+80
+
+
+
+# name: <cell-element>
+# type: scalar
+81
+
+
+
+# name: <cell-element>
+# type: scalar
+82
+
+
+
+# name: <cell-element>
+# type: scalar
+83
+
+
+
+# name: <cell-element>
+# type: scalar
+84
+
+
+
+# name: <cell-element>
+# type: scalar
+85
+
+
+
+# name: <cell-element>
+# type: scalar
+86
+
+
+
+# name: <cell-element>
+# type: scalar
+87
+
+
+
+# name: <cell-element>
+# type: scalar
+88
+
+
+
+# name: <cell-element>
+# type: scalar
+89
+
+
+
+# name: <cell-element>
+# type: scalar
+90
+
+
+
+# name: <cell-element>
+# type: scalar
+91
+
+
+
+# name: <cell-element>
+# type: scalar
+92
+
+
+
+# name: <cell-element>
+# type: scalar
+93
+
+
+
+# name: <cell-element>
+# type: scalar
+94
+
+
+
+# name: <cell-element>
+# type: scalar
+95
+
+
+
+# name: <cell-element>
+# type: scalar
+96
+
+
+
+# name: <cell-element>
+# type: scalar
+97
+
+
+
+# name: <cell-element>
+# type: scalar
+98
+
+
+
+# name: <cell-element>
+# type: scalar
+99
+
+
+
+# name: <cell-element>
+# type: scalar
+100
+
+
+
+
+
+# name: exons
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 923426 923756
+ 923828 923978
+ 924093 924313
+ 924470 924727
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 923426 923756
+ 923828 923978
+ 924093 924356
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: matrix
+# rows: 20
+# columns: 2
+ 404600 404670
+ 404757 404843
+ 404912 404954
+ 405065 405111
+ 405242 405317
+ 405430 405486
+ 405648 405766
+ 405893 405952
+ 406061 406133
+ 406247 406311
+ 406415 406519
+ 406721 406793
+ 406903 406990
+ 407080 407148
+ 407321 407390
+ 407468 407551
+ 407722 407822
+ 408073 408139
+ 408236 408330
+ 408408 408620
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 15
+# columns: 2
+ 404600 404670
+ 404757 404954
+ 405065 405111
+ 405230 405317
+ 405430 405486
+ 405648 405766
+ 405893 405952
+ 406061 406133
+ 406247 406311
+ 406415 406519
+ 407535 407551
+ 407722 407822
+ 408073 408139
+ 408236 408330
+ 408408 408620
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 20
+# columns: 2
+ 404600 404670
+ 404757 404843
+ 404912 404954
+ 405065 405111
+ 405230 405317
+ 405430 405486
+ 405648 405766
+ 405893 405952
+ 406061 406133
+ 406247 406311
+ 406415 406519
+ 406721 406793
+ 406903 406990
+ 407080 407148
+ 407321 407390
+ 407468 407551
+ 407722 407822
+ 408073 408139
+ 408236 408330
+ 408408 408620
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 19
+# columns: 2
+ 404600 404670
+ 404757 404954
+ 405065 405111
+ 405230 405317
+ 405430 405486
+ 405648 405766
+ 405893 405952
+ 406061 406133
+ 406247 406311
+ 406415 406519
+ 406721 406793
+ 406903 406990
+ 407080 407148
+ 407321 407390
+ 407468 407551
+ 407722 407822
+ 408073 408139
+ 408236 408330
+ 408408 408620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 630505 630704
+ 630832 630896
+ 630978 631034
+ 631104 631180
+ 631265 631337
+ 631431 631519
+ 631603 631859
+ 632009 632044
+ 632128 632349
+ 632421 632450
+ 632528 632616
+ 632716 632807
+ 632884 633260
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 630505 630704
+ 630832 630896
+ 630978 631034
+ 631104 631180
+ 631265 631337
+ 631431 631519
+ 631603 631859
+ 631928 632044
+ 632128 632349
+ 632421 632450
+ 632528 632616
+ 632716 632807
+ 632884 633260
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 630505 630704
+ 630832 630896
+ 630978 631034
+ 631104 631180
+ 631265 631337
+ 631431 631519
+ 631603 631859
+ 632000 632044
+ 632128 632349
+ 632421 632450
+ 632528 632616
+ 632716 632807
+ 632884 633260
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 630505 630704
+ 630832 630896
+ 630978 631034
+ 631104 631180
+ 631265 631337
+ 631431 631519
+ 631603 632044
+ 632128 632349
+ 632421 632450
+ 632528 632616
+ 632716 632807
+ 632881 633260
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 630505 630704
+ 630832 630896
+ 630978 631034
+ 631104 631180
+ 631265 631337
+ 631431 631519
+ 631603 632044
+ 632128 632349
+ 632421 632450
+ 632528 632616
+ 632716 632807
+ 632884 633260
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 626741 626829
+ 626913 627005
+ 627100 627166
+ 627308 627383
+ 627482 627615
+ 627701 627748
+ 627835 627893
+ 627970 628020
+ 628112 628169
+ 628246 628470
+ 629288 629322
+ 629418 629495
+ 629580 629820
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 626780 626829
+ 626913 627005
+ 627100 627166
+ 627308 627383
+ 627482 627615
+ 627701 627748
+ 627835 627893
+ 627970 628020
+ 628112 628169
+ 628246 628470
+ 628935 629322
+ 629418 629495
+ 629580 629820
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 626741 626829
+ 626917 627005
+ 627100 627166
+ 627308 627383
+ 627482 627615
+ 627701 627748
+ 627835 627893
+ 627970 628020
+ 628112 628169
+ 628246 628470
+ 629288 629322
+ 629418 629495
+ 629580 629820
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 642751 643208
+ 643304 643554
+ 643643 643745
+ 643876 644256
+ 644349 644521
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 642751 643208
+ 643304 643554
+ 643643 643745
+ 643876 643949
+ 644159 644256
+ 644349 644478
+ 644605 644903
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 642751 643208
+ 643304 643554
+ 643643 643745
+ 643876 643949
+ 644159 644256
+ 644349 644539
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 642751 643208
+ 643304 643554
+ 643643 643745
+ 643876 643949
+ 644159 644261
+ 644349 644532
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 387276 387503
+ 387583 387672
+ 388267 388406
+ 388538 388609
+ 388715 388760
+ 388850 388940
+ 389049 389138
+ 389225 389301
+ 389409 389647
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 387277 387503
+ 387583 387655
+ 388267 388406
+ 388538 388609
+ 388715 388760
+ 388850 388940
+ 389049 389138
+ 389225 389301
+ 389409 389647
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 387280 387503
+ 387583 388406
+ 388538 388609
+ 388715 388760
+ 388850 388940
+ 389049 389138
+ 389225 389301
+ 389409 389647
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 16
+# columns: 2
+ 316187 316258
+ 316344 316441
+ 316539 316714
+ 316792 316898
+ 317008 317091
+ 317167 317194
+ 317294 317457
+ 317561 317643
+ 317765 317846
+ 317979 318041
+ 318145 318202
+ 318296 318434
+ 318565 318814
+ 318986 319102
+ 319204 319297
+ 319372 319645
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 16
+# columns: 2
+ 316128 316258
+ 316344 316441
+ 316539 316714
+ 316792 316898
+ 317008 317091
+ 317167 317194
+ 317294 317440
+ 317553 317643
+ 317765 317846
+ 317979 318041
+ 318145 318202
+ 318362 318434
+ 318565 318814
+ 318986 319102
+ 319204 319297
+ 319372 319651
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 1258576 1258899
+ 1259026 1259219
+ 1259357 1259570
+ 1259727 1259871
+ 1260011 1260125
+ 1260524 1260626
+ 1260745 1260806
+ 1260941 1260978
+ 1261269 1261426
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 1258577 1258899
+ 1259026 1259228
+ 1259357 1259570
+ 1259727 1259871
+ 1260011 1260125
+ 1260524 1260626
+ 1260745 1260806
+ 1260941 1260978
+ 1261269 1261425
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 45295 45559
+ 45645 45954
+ 46043 46145
+ 46375 47019
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 45295 45559
+ 45645 45954
+ 46043 46145
+ 46372 47019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 33665 34327
+ 34400 35474
+ 35566 35647
+ 35729 35963
+ 36623 36685
+ 36809 36921
+ 37022 37203
+ 37372 37398
+ 37568 37840
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 33665 34327
+ 34400 35474
+ 35566 35647
+ 35729 35963
+ 36623 36685
+ 36809 36921
+ 37022 37203
+ 37372 37780
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 33378 33589
+ 33980 34327
+ 34400 35474
+ 35566 35647
+ 35729 35963
+ 36623 36685
+ 36809 36921
+ 37022 37203
+ 37372 37398
+ 37568 37757
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 33665 34327
+ 34400 35471
+ 35566 35647
+ 35729 35963
+ 36623 36685
+ 36809 36921
+ 37022 37203
+ 37372 37398
+ 37568 37780
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 33966 34327
+ 34400 35474
+ 35566 35647
+ 35729 35999
+ 36089 36171
+ 36623 36685
+ 36809 36921
+ 37022 37203
+ 37372 37871
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 38751 39054
+ 39135 39287
+ 39408 39814
+ 40212 40329
+ 40472 40535
+ 40674 40944
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 38751 39054
+ 39135 39287
+ 39408 39814
+ 40212 40329
+ 40472 40927
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 560609 561695
+ 561901 562424
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 560609 561320
+ 561452 561695
+ 561901 562382
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 813471 813582
+ 813929 816750
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 813486 813605
+ 813929 816750
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 1075542 1076010
+ 1076135 1076225
+ 1076310 1076424
+ 1076565 1076679
+ 1076871 1076932
+ 1077035 1077236
+ 1077340 1078353
+ 1078426 1078552
+ 1078681 1078749
+ 1078837 1078946
+ 1079245 1079330
+ 1079409 1079526
+ 1079620 1079779
+ 1080232 1080630
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 1075544 1076010
+ 1076118 1076225
+ 1076310 1076424
+ 1076565 1076679
+ 1076871 1076932
+ 1077035 1077236
+ 1077340 1078353
+ 1078426 1078552
+ 1078681 1078749
+ 1078837 1078946
+ 1079245 1079330
+ 1079409 1079526
+ 1079620 1079779
+ 1080232 1080630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 511764 511990
+ 512073 512121
+ 512213 512262
+ 512377 512430
+ 512524 512620
+ 513146 513246
+ 513331 513624
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 511764 511990
+ 512073 512121
+ 512213 512262
+ 512377 512430
+ 512524 512620
+ 513146 513249
+ 513331 513611
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 907642 907756
+ 907849 907948
+ 908033 908571
+ 908655 909011
+ 909090 909377
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 907651 907756
+ 907849 907948
+ 908039 908571
+ 908655 909011
+ 909090 909377
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 1373233 1373661
+ 1373750 1373834
+ 1373916 1374102
+ 1374247 1374437
+ 1374741 1374847
+ 1375028 1375211
+ 1375382 1375742
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 1373233 1373661
+ 1373750 1373834
+ 1373916 1374102
+ 1374247 1374437
+ 1374741 1374847
+ 1375028 1375221
+ 1375382 1375762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 365209 366326
+ 366723 366860
+ 366986 367341
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 365567 366860
+ 366986 367341
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 25
+# columns: 2
+ 121123 121406
+ 121492 123501
+ 123578 123669
+ 123784 123897
+ 123991 124123
+ 124210 124394
+ 124498 124632
+ 124713 124818
+ 124920 125046
+ 125133 125226
+ 125328 125655
+ 125741 125843
+ 125935 125998
+ 126075 126589
+ 126685 126840
+ 126934 127453
+ 127531 127573
+ 127650 127782
+ 127867 127935
+ 128027 128312
+ 128478 128551
+ 128967 129060
+ 129852 129914
+ 130038 130149
+ 130371 130570
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 25
+# columns: 2
+ 121066 121406
+ 121492 123495
+ 123578 123669
+ 123784 123897
+ 123991 124123
+ 124210 124394
+ 124498 124632
+ 124713 124818
+ 124920 125022
+ 125133 125226
+ 125328 125655
+ 125741 125843
+ 125935 125998
+ 126075 126589
+ 126685 126840
+ 126934 127453
+ 127531 127573
+ 127650 127782
+ 127867 127935
+ 128027 128312
+ 128478 128551
+ 128967 129060
+ 129852 129914
+ 130038 130149
+ 130371 130577
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 710017 710136
+ 710240 710333
+ 710694 710801
+ 710954 711016
+ 711091 711184
+ 711262 711408
+ 711504 711803
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 710062 710136
+ 710240 710333
+ 710694 711016
+ 711091 711184
+ 711262 711408
+ 711504 711803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 232840 233297
+ 233386 233470
+ 233547 233618
+ 234249 234392
+ 234528 234621
+ 234934 234988
+ 235197 235360
+ 235717 235752
+ 235844 236027
+ 236144 236296
+ 236428 236548
+ 236672 236784
+ 236864 237023
+ 237503 237817
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 232840 233297
+ 233386 233470
+ 233547 233618
+ 234249 234392
+ 234528 234621
+ 234934 234988
+ 235197 235360
+ 235717 235752
+ 235844 236027
+ 236144 236296
+ 236428 236548
+ 236672 237023
+ 237503 237817
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 1218004 1218181
+ 1218281 1219352
+ 1219578 1219633
+ 1219793 1219914
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1217947 1218181
+ 1218281 1219352
+ 1219578 1219633
+ 1219793 1219906
+ 1219998 1220137
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 52869 53184
+ 53484 53625
+ 53703 54686
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 52239 52347
+ 52434 52731
+ 52938 53184
+ 53484 53625
+ 53703 54693
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 50089 50337
+ 50418 50631
+ 50882 50963
+ 51063 51108
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 50074 50337
+ 50418 50631
+ 50882 50963
+ 51125 51199
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 50089 50337
+ 50418 50447
+ 50495 50631
+ 50882 50963
+ 51125 51197
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 50089 50337
+ 50418 50631
+ 50882 50963
+ 51122 51187
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 175782 176033
+ 176207 176339
+ 176592 176753
+ 177025 178401
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 176141 176339
+ 176592 176753
+ 177025 178401
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 415079 415671
+ 415742 415962
+ 416045 416436
+ 416731 416839
+ 416962 417163
+ 417248 417521
+ 417623 418011
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 415079 415671
+ 415742 415962
+ 416045 416436
+ 416743 416839
+ 416962 417163
+ 417248 417521
+ 417623 418011
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 410748 410894
+ 411177 411254
+ 411336 411598
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 410748 410894
+ 411177 411598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 944595 944983
+ 945117 945169
+ 945472 945531
+ 945780 945862
+ 945952 946073
+ 946169 946211
+ 946309 946813
+ 946894 947002
+ 947123 947294
+ 947399 947483
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 944572 944983
+ 945111 945169
+ 945472 945531
+ 945780 945862
+ 945952 946073
+ 946169 946211
+ 946309 946813
+ 946894 947020
+ 947123 947294
+ 947399 947484
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 944595 944983
+ 945117 945169
+ 945472 945531
+ 945780 945862
+ 945952 946073
+ 946169 946211
+ 946309 946813
+ 946894 947020
+ 947123 947294
+ 947399 947484
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 729935 730024
+ 730140 730416
+ 730497 730611
+ 730916 731074
+ 731176 731558
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 729901 730057
+ 730140 730416
+ 730497 730611
+ 730916 731074
+ 731176 731526
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 918299 918602
+ 918868 919009
+ 919096 919189
+ 919267 919394
+ 919503 919610
+ 919737 919818
+ 919913 919996
+ 920087 920508
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 918299 918602
+ 918868 919009
+ 919096 919189
+ 919267 919394
+ 919503 919610
+ 919737 919818
+ 919913 920489
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 602497 602755
+ 602980 603126
+ 603601 603679
+ 603775 604293
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 602601 602755
+ 602980 603126
+ 603601 603640
+ 603784 604273
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1148658 1149996
+ 1150117 1150319
+ 1150391 1150882
+ 1150967 1151118
+ 1151211 1151324
+ 1151502 1151851
+ 1152316 1152475
+ 1152676 1152809
+ 1152878 1152947
+ 1153035 1153124
+ 1153233 1153345
+ 1153717 1153940
+ 1154495 1154652
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 11
+# columns: 2
+ 1148658 1149996
+ 1150117 1150319
+ 1150391 1150882
+ 1150967 1151118
+ 1151211 1151324
+ 1151502 1151851
+ 1152316 1152475
+ 1152676 1152809
+ 1152878 1153345
+ 1153717 1153940
+ 1154495 1154652
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1148658 1149996
+ 1150117 1150319
+ 1150391 1150882
+ 1150967 1151118
+ 1151211 1151324
+ 1151502 1151851
+ 1152316 1152475
+ 1152676 1152809
+ 1152878 1152971
+ 1153035 1153124
+ 1153233 1153345
+ 1153717 1153940
+ 1154495 1154652
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1148596 1149996
+ 1150117 1150319
+ 1150391 1150882
+ 1150967 1151118
+ 1151211 1151324
+ 1151502 1151851
+ 1152316 1152475
+ 1152676 1152809
+ 1152878 1152947
+ 1153035 1153124
+ 1153233 1153288
+ 1153717 1153940
+ 1154495 1154596
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 230993 231655
+ 231783 231928
+ 232397 232508
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 230993 231655
+ 231783 231928
+ 232246 232322
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 661176 661790
+ 661900 661949
+ 662041 662427
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 661308 661790
+ 661900 661949
+ 662041 662253
+ 662333 662456
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 681395 681921
+ 682242 682403
+ 682731 682892
+ 683022 683077
+ 683174 683317
+ 683401 684777
+ 684863 685965
+ 686055 686424
+ 686504 686597
+ 686678 686751
+ 686843 687009
+ 687114 687315
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 11
+# columns: 2
+ 681395 681921
+ 682242 682403
+ 682731 682892
+ 683174 683317
+ 683401 684777
+ 684863 685965
+ 686055 686424
+ 686504 686597
+ 686678 686751
+ 686843 687009
+ 687114 687315
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 11
+# columns: 2
+ 681395 681921
+ 682242 682403
+ 682731 682892
+ 683174 683317
+ 683401 684777
+ 684863 685965
+ 686055 686424
+ 686504 686605
+ 686678 686751
+ 686843 687009
+ 687114 687315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 72339 72670
+ 73087 73164
+ 73287 73396
+ 73488 73741
+ 73822 74097
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 72357 72670
+ 72915 73017
+ 73087 73164
+ 73287 73396
+ 73488 73741
+ 73822 74097
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 933512 934709
+ 934785 935070
+ 935164 935482
+ 935570 935798
+ 935882 936098
+ 936189 936573
+ 936655 937044
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 933512 934709
+ 934785 935070
+ 935164 935482
+ 935570 935798
+ 935882 936098
+ 936189 937044
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 109032 111610
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 109076 109331
+ 109413 111536
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 108946 109331
+ 109406 111598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 793352 793731
+ 793828 793930
+ 794021 794180
+ 794327 794410
+ 794541 794650
+ 794898 794969
+ 795101 795368
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 793358 793731
+ 793828 793930
+ 794021 794198
+ 794327 794410
+ 794541 794650
+ 794898 794969
+ 795101 795376
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 298534 300515
+ 300602 300729
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 298534 300515
+ 300602 300665
+ 300751 300846
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 298534 300515
+ 300602 300665
+ 300751 300826
+ 301487 301544
+ 302053 302315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 293342 293410
+ 293500 293753
+ 294055 294121
+ 294210 294387
+ 294511 295041
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 293342 293410
+ 293500 293757
+ 294055 294121
+ 294210 294387
+ 294511 295041
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 665167 665777
+ 665861 665910
+ 666113 666256
+ 666350 666451
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 665167 665777
+ 665861 665910
+ 666113 666262
+ 666350 666452
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 665151 665234
+ 665249 665777
+ 665861 665910
+ 666113 666256
+ 666350 666451
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 665167 665777
+ 665857 665910
+ 666113 666262
+ 666350 666451
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 418767 418878
+ 418987 419211
+ 419297 419895
+ 420514 420890
+ 420984 421092
+ 421191 421392
+ 421526 421634
+ 421735 421909
+ 421981 422438
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 418767 418878
+ 418987 419211
+ 419297 419530
+ 419675 419895
+ 420514 420890
+ 420984 421092
+ 421191 421392
+ 421526 421634
+ 421735 421909
+ 421981 422439
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 418748 418878
+ 418987 419211
+ 419297 419530
+ 419675 419895
+ 420514 420890
+ 420984 421092
+ 421191 421392
+ 421526 421634
+ 421720 421909
+ 421981 422259
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 1358916 1359251
+ 1359380 1359497
+ 1359719 1359899
+ 1360224 1360353
+ 1360437 1360536
+ 1360679 1360832
+ 1361074 1361179
+ 1361317 1361410
+ 1361538 1361981
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 1358573 1358854
+ 1359126 1359251
+ 1359380 1359497
+ 1359719 1359899
+ 1360224 1360353
+ 1360437 1360536
+ 1360679 1360832
+ 1361074 1361179
+ 1361317 1361410
+ 1361538 1362019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 389812 389944
+ 390037 390251
+ 390352 390400
+ 390483 390565
+ 390762 390865
+ 391003 391124
+ 391216 391264
+ 391458 391542
+ 391652 391717
+ 392021 392073
+ 392262 392301
+ 392374 392817
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 389821 389944
+ 390037 390251
+ 390352 390400
+ 390483 390565
+ 390762 390865
+ 391003 391124
+ 391216 391264
+ 391458 391542
+ 391652 391717
+ 392021 392077
+ 392262 392301
+ 392374 392496
+ 392576 392797
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 389823 389944
+ 390037 390251
+ 390352 390400
+ 390483 390565
+ 390762 390865
+ 391003 391124
+ 391216 391264
+ 391458 391542
+ 391652 391717
+ 392021 392073
+ 392262 392301
+ 392374 392496
+ 392576 392812
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 99922 100032
+ 100657 101835
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 100031 100221
+ 100657 101835
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 99894 101835
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 635144 635652
+ 635739 635987
+ 636081 636360
+ 636592 636730
+ 636828 636887
+ 636978 637263
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 635144 635652
+ 635739 635987
+ 636081 636360
+ 636592 636730
+ 636828 636887
+ 636984 637263
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 21
+# columns: 2
+ 347891 348128
+ 348212 348268
+ 348373 348455
+ 348562 348641
+ 348735 348786
+ 348880 348977
+ 349067 349100
+ 349238 349367
+ 349550 349721
+ 349803 349887
+ 350049 350148
+ 350226 350297
+ 350474 350571
+ 350658 350784
+ 350871 350967
+ 351044 351161
+ 351252 351330
+ 351412 351633
+ 351729 351820
+ 351912 352002
+ 352126 352481
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 21
+# columns: 2
+ 347974 348128
+ 348212 348268
+ 348373 348455
+ 348562 348641
+ 348735 348786
+ 348880 348977
+ 349067 349100
+ 349238 349367
+ 349550 349721
+ 349803 349887
+ 350049 350148
+ 350226 350297
+ 350474 350571
+ 350658 350784
+ 350871 350967
+ 351044 351161
+ 351252 351330
+ 351412 351602
+ 351737 351820
+ 351912 352002
+ 352126 352304
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 996115 996218
+ 996426 996735
+ 996848 996940
+ 997177 997277
+ 997418 997490
+ 997604 997667
+ 997755 997896
+ 998420 998516
+ 998733 999018
+ 999109 999412
+ 999504 999681
+ 999760 1000027
+ 1000112 1000232
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 996115 996218
+ 996426 996735
+ 996848 996940
+ 997177 997277
+ 997418 997490
+ 997604 997667
+ 997755 997896
+ 998169 998301
+ 998420 998516
+ 998733 999018
+ 999109 999412
+ 999504 999681
+ 999760 1000027
+ 1000112 1000438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 199639 199764
+ 199890 199960
+ 200511 201776
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 199791 199960
+ 200511 201776
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 195812 196543
+ 197115 197220
+ 197300 197423
+ 197501 197672
+ 197775 198184
+ 198267 198636
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 195780 196543
+ 197115 197220
+ 197300 197423
+ 197501 197672
+ 197775 197905
+ 197974 198184
+ 198267 198685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 773411 773692
+ 774096 774154
+ 774231 774540
+ 774652 774701
+ 774785 774880
+ 774968 775048
+ 775122 775345
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 773411 774154
+ 774231 774540
+ 774652 774701
+ 774785 774880
+ 774968 775048
+ 775122 775345
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 202136 202509
+ 202782 202912
+ 202991 203129
+ 203267 204336
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 202136 202509
+ 202782 202912
+ 202991 203129
+ 203267 203600
+ 203760 203944
+ 204029 204190
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 1141603 1142100
+ 1142575 1142633
+ 1142720 1142869
+ 1142957 1143053
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 1141603 1142100
+ 1142578 1142633
+ 1142720 1142869
+ 1142957 1143051
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 225664 226081
+ 226170 226311
+ 226395 226691
+ 226848 227302
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 225664 226081
+ 226170 226311
+ 226395 226691
+ 226848 227049
+ 227078 227302
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 1064453 1064960
+ 1065054 1065294
+ 1065379 1065443
+ 1065549 1065855
+ 1065934 1066149
+ 1066230 1066525
+ 1066606 1066771
+ 1066851 1067550
+ 1067762 1067849
+ 1067926 1068247
+ 1068356 1070494
+ 1070687 1070927
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 1064449 1064960
+ 1065054 1065279
+ 1065379 1065443
+ 1065549 1065855
+ 1065934 1066149
+ 1066230 1066525
+ 1066606 1066771
+ 1066851 1067550
+ 1067762 1067849
+ 1067926 1068247
+ 1068356 1070494
+ 1070687 1071047
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1036537 1036693
+ 1036797 1036851
+ 1036944 1037015
+ 1037089 1037442
+ 1037531 1037747
+ 1037921 1038176
+ 1038276 1038377
+ 1038519 1038706
+ 1038801 1038899
+ 1038995 1039086
+ 1039224 1039390
+ 1039488 1039607
+ 1039695 1040225
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1036537 1036693
+ 1036797 1036851
+ 1036944 1037019
+ 1037093 1037442
+ 1037531 1037747
+ 1037924 1038176
+ 1038276 1038377
+ 1038519 1038706
+ 1038801 1038899
+ 1038995 1039086
+ 1039224 1039390
+ 1039488 1039607
+ 1039695 1040225
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 865914 866941
+ 867408 867520
+ 867625 867733
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 865914 866941
+ 867408 867511
+ 867629 867674
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 143564 143677
+ 143764 143825
+ 143934 143978
+ 144064 144110
+ 144193 144228
+ 144315 144352
+ 144447 144560
+ 144927 145005
+ 145132 145208
+ 145345 145651
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 143715 143825
+ 143934 143978
+ 144064 144110
+ 144193 144228
+ 144315 144352
+ 144447 144560
+ 144927 145005
+ 145132 145208
+ 145345 145685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 860787 861278
+ 861367 861511
+ 861605 861909
+ 862041 862212
+ 862313 862393
+ 862487 862613
+ 862752 862804
+ 863458 863541
+ 863859 864125
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 860787 861278
+ 861367 861511
+ 861605 861909
+ 862041 862212
+ 862313 862393
+ 862487 862640
+ 862752 862804
+ 863458 863541
+ 863859 864075
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1331465 1332000
+ 1332136 1332199
+ 1332388 1332509
+ 1332588 1332730
+ 1333236 1333567
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1331573 1332000
+ 1332136 1332199
+ 1332388 1332509
+ 1332588 1332730
+ 1333350 1333534
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 877861 878456
+ 878539 878655
+ 878734 878810
+ 878910 880158
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 877861 878456
+ 878539 878655
+ 878734 878810
+ 878910 879300
+ 879931 880158
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 979307 979799
+ 979890 980103
+ 980184 980355
+ 980777 980894
+ 980986 981160
+ 981772 981885
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 979307 979799
+ 979890 980103
+ 980184 980355
+ 980777 981160
+ 981772 981868
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 979307 979799
+ 979890 980103
+ 980184 980355
+ 980777 980894
+ 980986 981160
+ 981562 981762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 19
+# columns: 2
+ 325379 325642
+ 325913 326014
+ 326106 326229
+ 326332 326518
+ 326594 326816
+ 326931 327085
+ 327237 327387
+ 327488 327577
+ 327663 327867
+ 328000 328108
+ 328188 328323
+ 328424 328556
+ 328898 329031
+ 329119 329212
+ 329311 329437
+ 329573 329699
+ 329781 329925
+ 330027 330156
+ 330243 330620
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 19
+# columns: 2
+ 325379 325642
+ 325913 326014
+ 326106 326229
+ 326332 326518
+ 326594 326816
+ 326931 327085
+ 327237 327387
+ 327488 327577
+ 327663 327867
+ 328000 328108
+ 328188 328323
+ 328424 328505
+ 328898 329031
+ 329119 329212
+ 329311 329437
+ 329573 329699
+ 329781 329925
+ 330027 330156
+ 330243 330620
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 20
+# columns: 2
+ 325379 325642
+ 325913 326014
+ 326106 326229
+ 326332 326518
+ 326594 326816
+ 326931 327085
+ 327237 327387
+ 327488 327577
+ 327663 327867
+ 328000 328108
+ 328188 328323
+ 328424 328556
+ 328686 328735
+ 328884 329031
+ 329119 329212
+ 329311 329437
+ 329573 329699
+ 329781 329925
+ 330027 330156
+ 330243 330620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1185549 1186306
+ 1186451 1187164
+ 1187259 1187484
+ 1187588 1188006
+ 1188186 1188517
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1185555 1186306
+ 1186451 1187164
+ 1187259 1187484
+ 1187588 1188073
+ 1188186 1188276
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 947657 948343
+ 948428 948640
+ 948696 948816
+ 949075 949207
+ 949296 949452
+ 949540 949621
+ 949882 950125
+ 950197 950311
+ 950403 950500
+ 950581 950794
+ 950880 951041
+ 951125 951211
+ 951527 951730
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 17
+# columns: 2
+ 947643 948009
+ 948087 948147
+ 948234 948343
+ 948428 948595
+ 948696 948816
+ 948911 948992
+ 949075 949207
+ 949296 949452
+ 949540 949621
+ 949733 949796
+ 949882 950125
+ 950197 950311
+ 950403 950500
+ 950581 950794
+ 950880 951041
+ 951125 951211
+ 951527 951810
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 18
+# columns: 2
+ 947519 947664
+ 947798 948009
+ 948087 948147
+ 948234 948343
+ 948428 948595
+ 948696 948816
+ 948911 948992
+ 949075 949207
+ 949296 949452
+ 949540 949621
+ 949733 949796
+ 949882 950125
+ 950197 950311
+ 950403 950500
+ 950581 950794
+ 950880 951041
+ 951125 951211
+ 951527 951827
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 27
+# columns: 2
+ 645091 645485
+ 645574 645679
+ 645754 645814
+ 645898 646037
+ 646125 646310
+ 646405 646489
+ 646566 646689
+ 646776 646956
+ 647037 647107
+ 647183 647280
+ 647366 647442
+ 647530 647620
+ 647702 647807
+ 647923 647995
+ 648101 648275
+ 648361 648432
+ 648507 648656
+ 648765 648829
+ 648910 649139
+ 649367 649459
+ 649550 649675
+ 649761 650438
+ 650562 650709
+ 650790 650904
+ 651127 651219
+ 651319 651539
+ 651710 651907
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 26
+# columns: 2
+ 645091 645485
+ 645574 645679
+ 645754 645814
+ 645898 646037
+ 646125 646310
+ 646566 646689
+ 646776 646956
+ 647037 647107
+ 647183 647280
+ 647366 647442
+ 647530 647620
+ 647702 647807
+ 647923 647995
+ 648101 648275
+ 648361 648432
+ 648507 648656
+ 648765 648829
+ 648910 649139
+ 649367 649459
+ 649550 649675
+ 649761 650438
+ 650562 650709
+ 650790 650904
+ 651127 651219
+ 651319 651539
+ 651710 651907
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 967502 968568
+ 969314 969711
+ 969907 970130
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 967520 968568
+ 969314 969705
+ 969907 970058
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 976096 976501
+ 977279 977761
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 977101 977761
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 180119 180852
+ 181346 181422
+ 182060 182358
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 4
+# columns: 2
+ 180058 180852
+ 181346 181422
+ 182060 182135
+ 182252 182293
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 166588 166871
+ 167013 167842
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 166617 167842
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 114286 114434
+ 114619 115550
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 114286 114434
+ 114619 115340
+ 115961 116109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 518251 518379
+ 519036 520438
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 518254 518379
+ 519033 520438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 807396 807511
+ 807951 808018
+ 808229 808395
+ 808532 809215
+ 809409 809583
+ 809672 809789
+ 809911 810091
+ 810188 810235
+ 810380 810691
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 807361 807632
+ 807951 808018
+ 808229 808395
+ 808532 809215
+ 809409 809583
+ 809672 809789
+ 809911 810091
+ 810188 810235
+ 810380 810869
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 18
+# columns: 2
+ 1226575 1226762
+ 1226852 1226938
+ 1227087 1227159
+ 1227247 1227310
+ 1227580 1227667
+ 1227816 1227958
+ 1228046 1228168
+ 1228331 1228448
+ 1228706 1228802
+ 1228897 1228957
+ 1229054 1229129
+ 1229233 1229338
+ 1229504 1229624
+ 1229717 1229795
+ 1229893 1229978
+ 1230065 1230117
+ 1230303 1230374
+ 1230465 1230828
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 18
+# columns: 2
+ 1226575 1226762
+ 1226852 1226938
+ 1227087 1227159
+ 1227247 1227310
+ 1227580 1227667
+ 1227816 1227958
+ 1228046 1228168
+ 1228331 1228448
+ 1228706 1228802
+ 1228897 1228957
+ 1229054 1229129
+ 1229233 1229338
+ 1229504 1229624
+ 1229717 1229795
+ 1229893 1229978
+ 1230065 1230117
+ 1230303 1230380
+ 1230471 1230828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 163431 163517
+ 163934 164104
+ 164225 164687
+ 164771 165381
+ 165449 166240
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 163432 163517
+ 163617 164108
+ 164230 164688
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 163419 163517
+ 163934 164136
+ 164225 164577
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 962032 963321
+ 963468 963546
+ 963638 964191
+ 964294 964380
+ 964503 964626
+ 964738 964873
+ 964951 965041
+ 965123 965309
+ 965452 965506
+ 965598 965736
+ 965995 966157
+ 966445 966622
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 962015 963321
+ 963468 963546
+ 963638 964191
+ 964294 964380
+ 964503 964626
+ 964738 964873
+ 964951 965041
+ 965123 965309
+ 965452 965506
+ 965598 965736
+ 965822 965888
+ 965995 966157
+ 966445 966757
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 272110 272362
+ 272444 272555
+ 272650 272983
+ 273063 273149
+ 273233 273339
+ 273428 273562
+ 273652 273788
+ 273862 274083
+ 274166 274249
+ 274383 274569
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 272110 272362
+ 272444 272555
+ 272650 272983
+ 273063 273149
+ 273233 273339
+ 273428 273562
+ 273652 273788
+ 273862 274083
+ 274166 274289
+ 274383 274569
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 352636 353162
+ 353237 354969
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 352636 354969
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1013715 1014238
+ 1014334 1014544
+ 1014767 1014873
+ 1014951 1015051
+ 1015199 1015305
+ 1015428 1015519
+ 1015684 1015826
+ 1016079 1016227
+ 1016340 1016450
+ 1016795 1016952
+ 1017058 1017184
+ 1017332 1017482
+ 1017568 1017930
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1013715 1014544
+ 1014621 1014677
+ 1014767 1014873
+ 1014951 1015051
+ 1015199 1015305
+ 1015428 1015519
+ 1015684 1015826
+ 1016079 1016227
+ 1016340 1016450
+ 1016795 1016952
+ 1017058 1017184
+ 1017332 1017482
+ 1017568 1017930
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 1051343 1051492
+ 1051769 1052038
+ 1052160 1052270
+ 1052546 1052776
+ 1053327 1053495
+ 1053807 1054201
+ 1054663 1054807
+ 1054936 1055089
+ 1055174 1055291
+ 1055478 1055709
+ 1055798 1056104
+ 1056187 1056289
+ 1056434 1056752
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 1053126 1053188
+ 1053327 1053495
+ 1053807 1054201
+ 1054663 1054807
+ 1054936 1055089
+ 1055174 1055291
+ 1055478 1055709
+ 1055798 1056104
+ 1056187 1056289
+ 1056434 1056752
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 15
+# columns: 2
+ 1051312 1051492
+ 1051769 1052038
+ 1052160 1052270
+ 1052546 1052776
+ 1053327 1053495
+ 1053807 1054201
+ 1054285 1054386
+ 1054465 1054529
+ 1054663 1054807
+ 1054936 1055089
+ 1055174 1055291
+ 1055478 1055709
+ 1055798 1056104
+ 1056187 1056289
+ 1056434 1056828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 5927 6263
+ 6436 7069
+ 7156 7232
+ 7383 7450
+ 7563 7649
+ 7761 7835
+ 7941 7987
+ 8235 8325
+ 8416 8464
+ 8570 8737
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 6789 7069
+ 7156 7450
+ 7563 7649
+ 7761 7835
+ 7941 7987
+ 8235 8325
+ 8416 8464
+ 8570 8737
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 64165 64475
+ 64581 64656
+ 64750 64807
+ 64900 65017
+ 65109 65217
+ 65330 65456
+ 65562 65652
+ 65738 65864
+ 66106 66160
+ 66261 66342
+ 66449 66557
+ 66677 66749
+ 66834 66897
+ 67323 67625
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 64166 64475
+ 64581 64656
+ 64750 64807
+ 64900 65017
+ 65109 65217
+ 65330 65456
+ 65562 65652
+ 65732 65864
+ 66106 66160
+ 66261 66342
+ 66449 66557
+ 66677 66749
+ 66834 66897
+ 67323 67625
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 64166 64475
+ 64569 64656
+ 64750 64807
+ 64900 65017
+ 65109 65217
+ 65330 65456
+ 65562 65652
+ 65738 65864
+ 66106 66160
+ 66261 66342
+ 66449 66557
+ 66677 66749
+ 66834 66897
+ 67323 67625
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 73930 74250
+ 74337 74455
+ 74660 74737
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 73930 74250
+ 74337 74449
+ 74660 74731
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 313214 313418
+ 313566 313759
+ 313879 313995
+ 314086 314225
+ 314440 314551
+ 314651 314802
+ 314890 315015
+ 315576 315902
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 313228 313759
+ 313879 313995
+ 314086 314225
+ 314440 314551
+ 314651 314802
+ 314890 315015
+ 315576 315902
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 313209 313752
+ 313871 313995
+ 314086 314225
+ 314440 314551
+ 314651 314802
+ 314890 315015
+ 315576 315902
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 313100 313452
+ 313566 313759
+ 313879 313995
+ 314086 314225
+ 314440 314551
+ 314651 314802
+ 314890 315015
+ 315576 315902
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 313228 313759
+ 313879 313995
+ 314086 314225
+ 314440 314551
+ 314651 314802
+ 315576 315902
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 15
+# columns: 2
+ 739679 740051
+ 740124 740246
+ 740355 740503
+ 740620 740758
+ 740970 741066
+ 741509 741602
+ 741684 741796
+ 741946 742051
+ 742181 742318
+ 742502 742737
+ 742822 742983
+ 743090 743204
+ 743301 743547
+ 743620 743717
+ 743815 744185
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 16
+# columns: 2
+ 739679 740051
+ 740124 740246
+ 740355 740503
+ 740620 740758
+ 740970 741066
+ 741148 741208
+ 741509 741602
+ 741684 741796
+ 741946 742051
+ 742181 742318
+ 742502 742737
+ 742822 742983
+ 743090 743204
+ 743301 743547
+ 743620 743717
+ 743815 744185
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 703905 704494
+ 704587 704668
+ 705063 705129
+ 705301 705367
+ 705533 705656
+ 706100 706631
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 6
+# columns: 2
+ 703905 704494
+ 704587 704668
+ 705063 705129
+ 705301 705367
+ 705533 705641
+ 706100 706630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 591826 593230
+ 593866 594237
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 591826 593290
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 132327 132744
+ 132823 133218
+ 133302 133539
+ 133640 133752
+ 133910 134206
+ 134288 134501
+ 134581 135322
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 9
+# columns: 2
+ 132329 132744
+ 132823 133218
+ 133302 133539
+ 133640 133752
+ 133910 134206
+ 134288 134501
+ 134581 135104
+ 135187 135269
+ 135707 135831
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 1198118 1198327
+ 1198788 1199115
+ 1199197 1199362
+ 1199459 1199642
+ 1199710 1200305
+ 1200424 1200537
+ 1200643 1200864
+ 1200962 1201528
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 1198508 1198638
+ 1198788 1199115
+ 1199197 1199362
+ 1199459 1199642
+ 1199710 1200305
+ 1200424 1200537
+ 1200643 1200864
+ 1200962 1201496
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 584260 584619
+ 584860 584957
+ 585053 585145
+ 585237 585369
+ 585500 585686
+ 585779 585943
+ 586023 586102
+ 586192 586321
+ 586439 586567
+ 586649 587220
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 10
+# columns: 2
+ 584260 584619
+ 584860 584957
+ 585053 585145
+ 585237 585369
+ 585500 585686
+ 585776 585943
+ 586023 586102
+ 586192 586321
+ 586439 586567
+ 586649 587220
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 448462 448733
+ 448811 448973
+ 449054 449123
+ 449224 449489
+ 449713 449838
+ 449938 450046
+ 450150 450258
+ 450360 450425
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 8
+# columns: 2
+ 448468 448733
+ 448811 448973
+ 449054 449123
+ 449224 449489
+ 449713 449838
+ 449938 450046
+ 450150 450251
+ 450360 450426
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 2
+# columns: 2
+ 1292080 1292156
+ 1292538 1293358
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 1292111 1293249
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 50
+# columns: 2
+ 373335 373406
+ 373606 373787
+ 373892 374190
+ 374272 374501
+ 374583 374923
+ 375122 375239
+ 375325 375454
+ 375528 375720
+ 375808 376003
+ 376114 376252
+ 376352 376475
+ 376562 376816
+ 376925 377029
+ 377211 377306
+ 377391 377616
+ 377881 378037
+ 378119 378192
+ 378298 378366
+ 378504 378650
+ 378746 378855
+ 378943 379090
+ 379183 379231
+ 379305 379434
+ 379528 379771
+ 379866 380004
+ 380089 380175
+ 380270 380376
+ 380602 380698
+ 380846 380999
+ 381150 381333
+ 381405 381635
+ 381730 381833
+ 381912 382041
+ 382127 382172
+ 382373 382568
+ 382803 382930
+ 383030 383131
+ 383395 383530
+ 383608 383689
+ 384084 384231
+ 384318 384450
+ 384558 384606
+ 384694 384841
+ 384908 384970
+ 385171 385325
+ 385432 385624
+ 385713 385818
+ 385909 386044
+ 386133 386334
+ 386428 386848
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 49
+# columns: 2
+ 373501 373787
+ 373892 374190
+ 374272 374501
+ 374583 374923
+ 375125 375239
+ 375325 375454
+ 375528 375720
+ 375808 376003
+ 376114 376252
+ 376352 376475
+ 376562 376816
+ 376925 377029
+ 377211 377306
+ 377391 377616
+ 377881 378037
+ 378119 378192
+ 378298 378366
+ 378504 378650
+ 378746 378855
+ 378943 379090
+ 379183 379231
+ 379305 379434
+ 379528 379771
+ 379866 380004
+ 380089 380175
+ 380270 380376
+ 380602 380698
+ 380846 380999
+ 381150 381333
+ 381405 381635
+ 381730 381833
+ 381912 382041
+ 382127 382172
+ 382373 382568
+ 382803 382930
+ 383030 383131
+ 383395 383530
+ 383608 383689
+ 384084 384231
+ 384318 384450
+ 384558 384606
+ 384694 384841
+ 384908 384970
+ 385171 385325
+ 385432 385624
+ 385713 385818
+ 385909 386044
+ 386133 386334
+ 386428 386847
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 775527 775650
+ 775808 776356
+ 776482 776763
+ 777155 777238
+ 777336 777740
+ 777872 778066
+ 778153 778334
+ 778486 778611
+ 778807 778897
+ 779002 779081
+ 779174 779251
+ 779538 779647
+ 779744 780028
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 12
+# columns: 2
+ 775622 776356
+ 776482 776763
+ 777155 777238
+ 777336 777740
+ 777872 778066
+ 778153 778334
+ 778486 778611
+ 778807 778897
+ 779002 779081
+ 779174 779251
+ 779538 779647
+ 779744 780063
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 11
+# columns: 2
+ 761282 761811
+ 761886 762392
+ 762510 762579
+ 763013 763211
+ 763299 763431
+ 763980 764067
+ 764157 764598
+ 764699 764867
+ 765025 765256
+ 765485 765601
+ 765753 766154
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 11
+# columns: 2
+ 761282 761811
+ 761886 762392
+ 762510 762579
+ 763013 763211
+ 763299 763431
+ 763980 764067
+ 764157 764598
+ 764699 764932
+ 765025 765256
+ 765485 765601
+ 765753 766159
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 20
+# columns: 2
+ 23146 24452
+ 24542 24656
+ 24752 24963
+ 25041 25436
+ 25524 25744
+ 25825 25998
+ 26081 26204
+ 26292 26453
+ 26543 26777
+ 26862 27013
+ 27099 27282
+ 27372 27534
+ 27618 27714
+ 27803 28432
+ 28708 28806
+ 28890 29081
+ 29160 30066
+ 30147 30312
+ 30410 30817
+ 30902 31228
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 20
+# columns: 2
+ 23416 24452
+ 24542 24656
+ 24752 24963
+ 25041 25436
+ 25524 25744
+ 25825 25998
+ 26081 26204
+ 26292 26453
+ 26543 26777
+ 26862 27013
+ 27099 27282
+ 27372 27537
+ 27618 27714
+ 27803 28432
+ 28708 28806
+ 28890 29081
+ 29160 30066
+ 30147 30312
+ 30410 30817
+ 30902 31121
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 306479 306800
+ 306892 307359
+ 307440 307805
+ 307888 308070
+ 308147 308318
+ 308396 308573
+ 308796 309109
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 7
+# columns: 2
+ 306479 306800
+ 306892 307359
+ 307440 307805
+ 307888 308070
+ 308147 308318
+ 308399 308573
+ 308796 309109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 3
+# columns: 2
+ 1240375 1240785
+ 1241057 1241678
+ 1241761 1242121
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 5
+# columns: 2
+ 1240375 1240785
+ 1241057 1241344
+ 1241425 1241543
+ 1241616 1241678
+ 1241761 1242122
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 666871 667068
+ 667150 667281
+ 667372 667437
+ 667540 667641
+ 667734 667868
+ 667956 668082
+ 668172 668468
+ 668612 668745
+ 668855 668987
+ 669078 669134
+ 669226 669266
+ 669460 669513
+ 669619 669650
+ 669749 669837
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 14
+# columns: 2
+ 666871 667068
+ 667150 667281
+ 667372 667464
+ 667540 667641
+ 667734 667868
+ 667956 668082
+ 668172 668468
+ 668612 668745
+ 668855 668987
+ 669078 669134
+ 669226 669266
+ 669460 669513
+ 669619 669650
+ 669749 669837
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 13
+# columns: 2
+ 666871 667068
+ 667150 667437
+ 667540 667641
+ 667734 667868
+ 667956 668082
+ 668172 668468
+ 668612 668745
+ 668855 668987
+ 669078 669134
+ 669226 669266
+ 669460 669513
+ 669619 669650
+ 669749 669805
+
+
+
+
+
+
+
+
+# name: cds_exons
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 923492
+ 923828
+ 924093
+ 923756
+ 923978
+ 924288
+ 0
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 923492
+ 923828
+ 924093
+ 923756
+ 923978
+ 924288
+ 0
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 20 3
+ 404627
+ 404757
+ 404912
+ 405065
+ 405242
+ 405430
+ 405648
+ 405893
+ 406061
+ 406247
+ 406415
+ 406721
+ 406903
+ 407080
+ 407321
+ 407468
+ 407722
+ 408073
+ 408236
+ 408408
+ 404670
+ 404843
+ 404954
+ 405111
+ 405317
+ 405486
+ 405766
+ 405952
+ 406133
+ 406311
+ 406519
+ 406793
+ 406990
+ 407148
+ 407390
+ 407551
+ 407822
+ 408139
+ 408330
+ 408486
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 404915
+ 405065
+ 405230
+ 405430
+ 405648
+ 405893
+ 406061
+ 406247
+ 406415
+ 407535
+ 407722
+ 408073
+ 408236
+ 408408
+ 404954
+ 405111
+ 405317
+ 405486
+ 405766
+ 405952
+ 406133
+ 406311
+ 406519
+ 407551
+ 407822
+ 408139
+ 408330
+ 408486
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 2
+ 1
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 20 3
+ 404627
+ 404757
+ 404912
+ 405065
+ 405230
+ 405430
+ 405648
+ 405893
+ 406061
+ 406247
+ 406415
+ 406721
+ 406903
+ 407080
+ 407321
+ 407468
+ 407722
+ 408073
+ 408236
+ 408408
+ 404670
+ 404843
+ 404954
+ 405111
+ 405317
+ 405486
+ 405766
+ 405952
+ 406133
+ 406311
+ 406519
+ 406793
+ 406990
+ 407148
+ 407390
+ 407551
+ 407822
+ 408139
+ 408330
+ 408486
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 18 3
+ 404915
+ 405065
+ 405230
+ 405430
+ 405648
+ 405893
+ 406061
+ 406247
+ 406415
+ 406721
+ 406903
+ 407080
+ 407321
+ 407468
+ 407722
+ 408073
+ 408236
+ 408408
+ 404954
+ 405111
+ 405317
+ 405486
+ 405766
+ 405952
+ 406133
+ 406311
+ 406519
+ 406793
+ 406990
+ 407148
+ 407390
+ 407551
+ 407822
+ 408139
+ 408330
+ 408486
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 630569
+ 630832
+ 630978
+ 631104
+ 631265
+ 631431
+ 631603
+ 632009
+ 632128
+ 632421
+ 632528
+ 632716
+ 632884
+ 630704
+ 630896
+ 631034
+ 631180
+ 631337
+ 631519
+ 631859
+ 632044
+ 632349
+ 632450
+ 632616
+ 632807
+ 633086
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 0
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 630569
+ 630832
+ 630978
+ 631104
+ 631265
+ 631431
+ 631603
+ 631928
+ 632128
+ 632421
+ 632528
+ 632716
+ 632884
+ 630704
+ 630896
+ 631034
+ 631180
+ 631337
+ 631519
+ 631859
+ 632044
+ 632349
+ 632450
+ 632616
+ 632807
+ 633086
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 0
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 630569
+ 630832
+ 630978
+ 631104
+ 631265
+ 631431
+ 631603
+ 632000
+ 632128
+ 632421
+ 632528
+ 632716
+ 632884
+ 630704
+ 630896
+ 631034
+ 631180
+ 631337
+ 631519
+ 631859
+ 632044
+ 632349
+ 632450
+ 632616
+ 632807
+ 633086
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 0
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 630569
+ 630832
+ 630978
+ 631104
+ 631265
+ 631431
+ 631603
+ 632128
+ 632421
+ 632528
+ 632716
+ 632881
+ 630704
+ 630896
+ 631034
+ 631180
+ 631337
+ 631519
+ 632044
+ 632349
+ 632450
+ 632616
+ 632807
+ 633086
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 630569
+ 630832
+ 630978
+ 631104
+ 631265
+ 631431
+ 631603
+ 632128
+ 632421
+ 632528
+ 632716
+ 632884
+ 630704
+ 630896
+ 631034
+ 631180
+ 631337
+ 631519
+ 632044
+ 632349
+ 632450
+ 632616
+ 632807
+ 633086
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 626918
+ 627100
+ 627308
+ 627482
+ 627701
+ 627835
+ 627970
+ 628112
+ 628246
+ 629288
+ 629418
+ 629580
+ 627005
+ 627166
+ 627383
+ 627615
+ 627748
+ 627893
+ 628020
+ 628169
+ 628470
+ 629322
+ 629495
+ 629584
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 626918
+ 627100
+ 627308
+ 627482
+ 627701
+ 627835
+ 627970
+ 628112
+ 628246
+ 628935
+ 627005
+ 627166
+ 627383
+ 627615
+ 627748
+ 627893
+ 628020
+ 628169
+ 628470
+ 628996
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 626918
+ 627100
+ 627308
+ 627482
+ 627701
+ 627835
+ 627970
+ 628112
+ 628246
+ 629288
+ 629418
+ 629580
+ 627005
+ 627166
+ 627383
+ 627615
+ 627748
+ 627893
+ 628020
+ 628169
+ 628470
+ 629322
+ 629495
+ 629584
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 643062
+ 643304
+ 643643
+ 643876
+ 643208
+ 643554
+ 643745
+ 643972
+ 2
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 643062
+ 643304
+ 643643
+ 643876
+ 644159
+ 644349
+ 643208
+ 643554
+ 643745
+ 643949
+ 644256
+ 644476
+ 0
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 643062
+ 643304
+ 643643
+ 643876
+ 644159
+ 644349
+ 643208
+ 643554
+ 643745
+ 643949
+ 644256
+ 644485
+ 0
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 643062
+ 643304
+ 643643
+ 643876
+ 643208
+ 643554
+ 643745
+ 643921
+ 2
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 387478
+ 387583
+ 388267
+ 388538
+ 388715
+ 388850
+ 389049
+ 389225
+ 389409
+ 387503
+ 387672
+ 388406
+ 388609
+ 388760
+ 388940
+ 389138
+ 389301
+ 389568
+ 2
+ 2
+ 1
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 387646
+ 388267
+ 388538
+ 388715
+ 388850
+ 389049
+ 389225
+ 389409
+ 387655
+ 388406
+ 388609
+ 388760
+ 388940
+ 389138
+ 389301
+ 389568
+ 2
+ 1
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 388222
+ 388538
+ 388715
+ 388850
+ 389049
+ 389225
+ 389409
+ 388406
+ 388609
+ 388760
+ 388940
+ 389138
+ 389301
+ 389568
+ 1
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 16 3
+ 316204
+ 316344
+ 316539
+ 316792
+ 317008
+ 317167
+ 317294
+ 317561
+ 317765
+ 317979
+ 318145
+ 318296
+ 318565
+ 318986
+ 319204
+ 319372
+ 316258
+ 316441
+ 316714
+ 316898
+ 317091
+ 317194
+ 317457
+ 317643
+ 317846
+ 318041
+ 318202
+ 318434
+ 318814
+ 319102
+ 319297
+ 319508
+ 0
+ 2
+ 0
+ 1
+ 2
+ 2
+ 1
+ 2
+ 0
+ 2
+ 2
+ 1
+ 0
+ 2
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 16 3
+ 316204
+ 316344
+ 316539
+ 316792
+ 317008
+ 317167
+ 317294
+ 317553
+ 317765
+ 317979
+ 318145
+ 318362
+ 318565
+ 318986
+ 319204
+ 319372
+ 316258
+ 316441
+ 316714
+ 316898
+ 317091
+ 317194
+ 317440
+ 317643
+ 317846
+ 318041
+ 318202
+ 318434
+ 318814
+ 319102
+ 319297
+ 319508
+ 0
+ 2
+ 0
+ 1
+ 2
+ 2
+ 1
+ 1
+ 0
+ 2
+ 2
+ 1
+ 0
+ 2
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 1258759
+ 1259026
+ 1259357
+ 1259727
+ 1260011
+ 1260524
+ 1260745
+ 1260941
+ 1261269
+ 1258899
+ 1259219
+ 1259570
+ 1259871
+ 1260125
+ 1260626
+ 1260806
+ 1260978
+ 1261411
+ 0
+ 2
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 1258759
+ 1259026
+ 1259357
+ 1259727
+ 1260011
+ 1260524
+ 1260745
+ 1260941
+ 1261269
+ 1258899
+ 1259228
+ 1259570
+ 1259871
+ 1260125
+ 1260626
+ 1260806
+ 1260978
+ 1261411
+ 0
+ 2
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 45502
+ 45645
+ 46043
+ 46375
+ 45559
+ 45954
+ 46145
+ 46789
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 45502
+ 45645
+ 46043
+ 46372
+ 45559
+ 45954
+ 46145
+ 46789
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 33991
+ 34400
+ 35566
+ 35729
+ 36623
+ 36809
+ 37022
+ 34327
+ 35474
+ 35647
+ 35963
+ 36685
+ 36921
+ 37061
+ 0
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 33991
+ 34400
+ 35566
+ 35729
+ 36623
+ 36809
+ 37022
+ 34327
+ 35474
+ 35647
+ 35963
+ 36685
+ 36921
+ 37061
+ 0
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 33991
+ 34400
+ 35566
+ 35729
+ 36623
+ 36809
+ 37022
+ 34327
+ 35474
+ 35647
+ 35963
+ 36685
+ 36921
+ 37061
+ 0
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 33991
+ 34400
+ 35566
+ 35729
+ 36623
+ 36809
+ 37022
+ 34327
+ 35471
+ 35647
+ 35963
+ 36685
+ 36921
+ 37061
+ 0
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 33991
+ 34400
+ 35566
+ 35729
+ 36089
+ 36623
+ 36809
+ 34327
+ 35474
+ 35647
+ 35999
+ 36171
+ 36685
+ 36836
+ 0
+ 1
+ 2
+ 0
+ 2
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 38897
+ 39135
+ 39408
+ 40212
+ 40472
+ 40674
+ 39054
+ 39287
+ 39814
+ 40329
+ 40535
+ 40877
+ 2
+ 2
+ 1
+ 2
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 38897
+ 39135
+ 39408
+ 40212
+ 40472
+ 39054
+ 39287
+ 39814
+ 40329
+ 40597
+ 0
+ 0
+ 2
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 561006
+ 561901
+ 561695
+ 562382
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 561006
+ 561452
+ 561901
+ 561320
+ 561695
+ 562382
+ 0
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 813975
+ 816624
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 813975
+ 816624
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 1075983
+ 1076135
+ 1076310
+ 1076565
+ 1076871
+ 1077035
+ 1077340
+ 1078426
+ 1078681
+ 1078837
+ 1079245
+ 1079409
+ 1079620
+ 1080232
+ 1076010
+ 1076225
+ 1076424
+ 1076679
+ 1076932
+ 1077236
+ 1078353
+ 1078552
+ 1078749
+ 1078946
+ 1079330
+ 1079526
+ 1079779
+ 1080321
+ 2
+ 0
+ 1
+ 2
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 1
+ 2
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 1075991
+ 1076118
+ 1076310
+ 1076565
+ 1076871
+ 1077035
+ 1077340
+ 1078426
+ 1078681
+ 1078837
+ 1079245
+ 1079409
+ 1079620
+ 1080232
+ 1076010
+ 1076225
+ 1076424
+ 1076679
+ 1076932
+ 1077236
+ 1078353
+ 1078552
+ 1078749
+ 1078946
+ 1079330
+ 1079526
+ 1079779
+ 1080321
+ 0
+ 0
+ 1
+ 2
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 1
+ 2
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 511915
+ 512073
+ 512213
+ 512377
+ 512524
+ 513146
+ 513331
+ 511990
+ 512121
+ 512262
+ 512430
+ 512620
+ 513246
+ 513573
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 511915
+ 512073
+ 512213
+ 512377
+ 512524
+ 513146
+ 513331
+ 511990
+ 512121
+ 512262
+ 512430
+ 512620
+ 513249
+ 513573
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 907699
+ 907849
+ 908033
+ 908655
+ 909090
+ 907756
+ 907948
+ 908571
+ 909011
+ 909246
+ 0
+ 2
+ 1
+ 2
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 907699
+ 907849
+ 908039
+ 908655
+ 909090
+ 907756
+ 907948
+ 908571
+ 909011
+ 909246
+ 0
+ 2
+ 1
+ 2
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 1373484
+ 1373750
+ 1373916
+ 1374247
+ 1374741
+ 1375028
+ 1373661
+ 1373834
+ 1374102
+ 1374437
+ 1374847
+ 1375128
+ 1
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 1373484
+ 1373750
+ 1373916
+ 1374247
+ 1374741
+ 1375028
+ 1375382
+ 1373661
+ 1373834
+ 1374102
+ 1374437
+ 1374847
+ 1375221
+ 1375598
+ 0
+ 1
+ 2
+ 1
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 365625
+ 366723
+ 366986
+ 366326
+ 366860
+ 367150
+ 0
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 365625
+ 366366
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 23 3
+ 121581
+ 123578
+ 123784
+ 123991
+ 124210
+ 124498
+ 124713
+ 124920
+ 125133
+ 125328
+ 125741
+ 125935
+ 126075
+ 126685
+ 126934
+ 127531
+ 127650
+ 127867
+ 128027
+ 128478
+ 128967
+ 129852
+ 130038
+ 123501
+ 123669
+ 123897
+ 124123
+ 124394
+ 124632
+ 124818
+ 125046
+ 125226
+ 125655
+ 125843
+ 125998
+ 126589
+ 126840
+ 127453
+ 127573
+ 127782
+ 127935
+ 128312
+ 128551
+ 129060
+ 129914
+ 130099
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 0
+ 1
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 23 3
+ 121581
+ 123578
+ 123784
+ 123991
+ 124210
+ 124498
+ 124713
+ 124920
+ 125133
+ 125328
+ 125741
+ 125935
+ 126075
+ 126685
+ 126934
+ 127531
+ 127650
+ 127867
+ 128027
+ 128478
+ 128967
+ 129852
+ 130038
+ 123495
+ 123669
+ 123897
+ 124123
+ 124394
+ 124632
+ 124818
+ 125022
+ 125226
+ 125655
+ 125843
+ 125998
+ 126589
+ 126840
+ 127453
+ 127573
+ 127782
+ 127935
+ 128312
+ 128551
+ 129060
+ 129914
+ 130099
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 0
+ 1
+ 2
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 710101
+ 710240
+ 710694
+ 710954
+ 711091
+ 711262
+ 711504
+ 710136
+ 710333
+ 710801
+ 711016
+ 711184
+ 711408
+ 711763
+ 2
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 710911
+ 711091
+ 711262
+ 711504
+ 711016
+ 711184
+ 711408
+ 711763
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 233187
+ 233386
+ 233547
+ 234249
+ 234528
+ 234934
+ 235197
+ 235717
+ 235844
+ 236144
+ 236428
+ 236672
+ 236864
+ 237503
+ 233297
+ 233470
+ 233618
+ 234392
+ 234621
+ 234988
+ 235360
+ 235752
+ 236027
+ 236296
+ 236548
+ 236784
+ 237023
+ 237647
+ 1
+ 2
+ 2
+ 2
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 2
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 11 3
+ 233187
+ 233386
+ 233547
+ 234249
+ 234528
+ 234934
+ 235197
+ 235717
+ 235844
+ 236144
+ 236428
+ 233297
+ 233470
+ 233618
+ 234392
+ 234621
+ 234988
+ 235360
+ 235752
+ 236027
+ 236296
+ 236537
+ 1
+ 2
+ 2
+ 2
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 1218019
+ 1218281
+ 1218181
+ 1219325
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 1218019
+ 1218281
+ 1218181
+ 1219325
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 53022
+ 53484
+ 53703
+ 53184
+ 53625
+ 54495
+ 0
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 52239
+ 52434
+ 52938
+ 53484
+ 53703
+ 52347
+ 52731
+ 53184
+ 53625
+ 54495
+ 0
+ 2
+ 1
+ 0
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 50283
+ 50418
+ 50882
+ 50337
+ 50631
+ 50954
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 50283
+ 50418
+ 50882
+ 50337
+ 50631
+ 50954
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 50283
+ 50418
+ 50495
+ 50882
+ 50337
+ 50447
+ 50631
+ 50954
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 50283
+ 50418
+ 50882
+ 50337
+ 50631
+ 50954
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 175862
+ 176207
+ 176592
+ 177025
+ 176033
+ 176339
+ 176753
+ 178052
+ 0
+ 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 176607
+ 177025
+ 176753
+ 178052
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 415154
+ 415742
+ 416045
+ 416731
+ 416962
+ 417248
+ 417623
+ 415671
+ 415962
+ 416436
+ 416839
+ 417163
+ 417521
+ 417797
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 415154
+ 415742
+ 416045
+ 416743
+ 416962
+ 417248
+ 417623
+ 415671
+ 415962
+ 416436
+ 416839
+ 417163
+ 417521
+ 417797
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 410803
+ 411177
+ 411336
+ 410894
+ 411254
+ 411384
+ 0
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 410803
+ 411177
+ 410894
+ 411362
+ 0
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 944772
+ 945117
+ 945472
+ 945780
+ 945952
+ 946169
+ 946309
+ 946894
+ 947123
+ 947399
+ 944983
+ 945169
+ 945531
+ 945862
+ 946073
+ 946211
+ 946813
+ 947002
+ 947294
+ 947432
+ 0
+ 1
+ 2
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 944772
+ 945111
+ 945472
+ 945780
+ 945952
+ 946169
+ 946309
+ 946894
+ 947123
+ 947399
+ 944983
+ 945169
+ 945531
+ 945862
+ 946073
+ 946211
+ 946813
+ 947020
+ 947294
+ 947432
+ 0
+ 1
+ 2
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 944772
+ 945117
+ 945472
+ 945780
+ 945952
+ 946169
+ 946309
+ 946894
+ 947123
+ 947399
+ 944983
+ 945169
+ 945531
+ 945862
+ 946073
+ 946211
+ 946813
+ 947020
+ 947294
+ 947432
+ 0
+ 1
+ 2
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 730148
+ 730497
+ 730916
+ 731176
+ 730416
+ 730611
+ 731074
+ 731380
+ 0
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 730148
+ 730497
+ 730916
+ 731176
+ 730416
+ 730611
+ 731074
+ 731380
+ 0
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 918308
+ 918868
+ 919096
+ 919267
+ 919503
+ 919737
+ 919913
+ 920087
+ 918602
+ 919009
+ 919189
+ 919394
+ 919610
+ 919818
+ 919996
+ 920307
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 918308
+ 918868
+ 919096
+ 919267
+ 919503
+ 919737
+ 919913
+ 918602
+ 919009
+ 919189
+ 919394
+ 919610
+ 919818
+ 920000
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 602673
+ 602980
+ 603601
+ 603775
+ 602755
+ 603126
+ 603679
+ 604135
+ 0
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 602673
+ 602980
+ 603601
+ 603784
+ 602755
+ 603126
+ 603640
+ 604135
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 1148817
+ 1150117
+ 1150391
+ 1150967
+ 1151211
+ 1151502
+ 1152316
+ 1152676
+ 1152878
+ 1153035
+ 1153233
+ 1153717
+ 1149996
+ 1150319
+ 1150882
+ 1151118
+ 1151324
+ 1151851
+ 1152475
+ 1152809
+ 1152947
+ 1153124
+ 1153345
+ 1153895
+ 1
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 1148817
+ 1150117
+ 1150391
+ 1150967
+ 1151211
+ 1151502
+ 1152316
+ 1152676
+ 1152878
+ 1149996
+ 1150319
+ 1150882
+ 1151118
+ 1151324
+ 1151851
+ 1152475
+ 1152809
+ 1153095
+ 1
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 1148817
+ 1150117
+ 1150391
+ 1150967
+ 1151211
+ 1151502
+ 1152316
+ 1152676
+ 1152878
+ 1153035
+ 1153233
+ 1153717
+ 1149996
+ 1150319
+ 1150882
+ 1151118
+ 1151324
+ 1151851
+ 1152475
+ 1152809
+ 1152971
+ 1153124
+ 1153345
+ 1153895
+ 1
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 1148817
+ 1150117
+ 1150391
+ 1150967
+ 1151211
+ 1151502
+ 1152316
+ 1152676
+ 1152878
+ 1153035
+ 1153233
+ 1153717
+ 1149996
+ 1150319
+ 1150882
+ 1151118
+ 1151324
+ 1151851
+ 1152475
+ 1152809
+ 1152947
+ 1153124
+ 1153288
+ 1153895
+ 1
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 231163
+ 231783
+ 231655
+ 231915
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 231163
+ 231783
+ 231655
+ 231915
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 661362
+ 661900
+ 662041
+ 661790
+ 661949
+ 662191
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 661362
+ 661900
+ 662041
+ 661790
+ 661949
+ 662191
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 683064
+ 683174
+ 683401
+ 684863
+ 686055
+ 686504
+ 686678
+ 686843
+ 683077
+ 683317
+ 684777
+ 685965
+ 686424
+ 686597
+ 686751
+ 686884
+ 0
+ 0
+ 0
+ 2
+ 0
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 681723
+ 682242
+ 682731
+ 683174
+ 683401
+ 684863
+ 686055
+ 686504
+ 686678
+ 686843
+ 681921
+ 682403
+ 682892
+ 683317
+ 684777
+ 685965
+ 686424
+ 686597
+ 686751
+ 686884
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 681723
+ 682242
+ 682731
+ 683174
+ 683401
+ 684863
+ 686055
+ 686504
+ 686678
+ 686843
+ 681921
+ 682403
+ 682892
+ 683317
+ 684777
+ 685965
+ 686424
+ 686605
+ 686751
+ 686996
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 72583
+ 73087
+ 73287
+ 73488
+ 73822
+ 72670
+ 73164
+ 73396
+ 73741
+ 73884
+ 0
+ 2
+ 2
+ 0
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 72583
+ 72915
+ 73087
+ 73287
+ 73488
+ 73822
+ 72670
+ 73017
+ 73164
+ 73396
+ 73741
+ 73884
+ 0
+ 2
+ 1
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 934055
+ 934785
+ 935164
+ 935570
+ 935882
+ 936189
+ 936655
+ 934709
+ 935070
+ 935482
+ 935798
+ 936098
+ 936573
+ 936793
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 934055
+ 934785
+ 935164
+ 935570
+ 935882
+ 936189
+ 934709
+ 935070
+ 935482
+ 935798
+ 936098
+ 936582
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 109595
+ 111368
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 109595
+ 111368
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 109595
+ 111368
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 793575
+ 793828
+ 794021
+ 794327
+ 794541
+ 794898
+ 795101
+ 793731
+ 793930
+ 794180
+ 794410
+ 794650
+ 794969
+ 795159
+ 0
+ 1
+ 2
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 793575
+ 793828
+ 794021
+ 794327
+ 794541
+ 794898
+ 795101
+ 793731
+ 793930
+ 794198
+ 794410
+ 794650
+ 794969
+ 795159
+ 0
+ 1
+ 2
+ 2
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 298716
+ 300441
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 298716
+ 300441
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 298716
+ 300441
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 293396
+ 293500
+ 294055
+ 294210
+ 294511
+ 293410
+ 293753
+ 294121
+ 294387
+ 294889
+ 0
+ 0
+ 1
+ 0
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 293595
+ 294055
+ 294210
+ 294511
+ 293757
+ 294121
+ 294387
+ 294889
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 665307
+ 665861
+ 666113
+ 666350
+ 665777
+ 665910
+ 666256
+ 666420
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 665307
+ 665861
+ 666113
+ 666350
+ 665777
+ 665910
+ 666262
+ 666420
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 665307
+ 665861
+ 666113
+ 666350
+ 665777
+ 665910
+ 666256
+ 666420
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 665307
+ 665857
+ 666113
+ 665777
+ 665910
+ 666244
+ 0
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 419650
+ 420514
+ 420984
+ 421191
+ 421526
+ 421735
+ 421981
+ 419895
+ 420890
+ 421092
+ 421392
+ 421634
+ 421909
+ 422155
+ 0
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 418818
+ 418987
+ 419297
+ 419675
+ 420514
+ 420984
+ 421191
+ 421526
+ 421735
+ 421981
+ 418878
+ 419211
+ 419530
+ 419895
+ 420890
+ 421092
+ 421392
+ 421634
+ 421909
+ 422155
+ 0
+ 2
+ 2
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 418818
+ 418987
+ 419297
+ 419675
+ 420514
+ 420984
+ 421191
+ 421526
+ 421720
+ 421981
+ 418878
+ 419211
+ 419530
+ 419895
+ 420890
+ 421092
+ 421392
+ 421634
+ 421909
+ 422155
+ 0
+ 2
+ 2
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 1359086
+ 1359380
+ 1359719
+ 1360224
+ 1360437
+ 1360679
+ 1361074
+ 1361317
+ 1361538
+ 1359251
+ 1359497
+ 1359899
+ 1360353
+ 1360536
+ 1360832
+ 1361179
+ 1361410
+ 1361844
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 1358781
+ 1359126
+ 1359380
+ 1359719
+ 1360224
+ 1360437
+ 1360679
+ 1361074
+ 1361317
+ 1361538
+ 1358854
+ 1359251
+ 1359497
+ 1359899
+ 1360353
+ 1360536
+ 1360832
+ 1361179
+ 1361410
+ 1361844
+ 1
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 389876
+ 390037
+ 390352
+ 390483
+ 390762
+ 391003
+ 391216
+ 391458
+ 391652
+ 392021
+ 392262
+ 392374
+ 389944
+ 390251
+ 390400
+ 390565
+ 390865
+ 391124
+ 391264
+ 391542
+ 391717
+ 392073
+ 392301
+ 392449
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 11 3
+ 389876
+ 390037
+ 390352
+ 390483
+ 390762
+ 391003
+ 391216
+ 391458
+ 391652
+ 392021
+ 392262
+ 389944
+ 390251
+ 390400
+ 390565
+ 390865
+ 391124
+ 391264
+ 391542
+ 391717
+ 392077
+ 392294
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 389876
+ 390037
+ 390352
+ 390483
+ 390762
+ 391003
+ 391216
+ 391458
+ 391652
+ 392021
+ 392262
+ 392374
+ 389944
+ 390251
+ 390400
+ 390565
+ 390865
+ 391124
+ 391264
+ 391542
+ 391717
+ 392073
+ 392301
+ 392449
+ 0
+ 0
+ 1
+ 0
+ 1
+ 2
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 100683
+ 101679
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 100683
+ 101679
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 100683
+ 101679
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 635474
+ 635739
+ 636081
+ 636592
+ 636828
+ 636978
+ 635652
+ 635987
+ 636360
+ 636730
+ 636887
+ 637084
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 635474
+ 635739
+ 636081
+ 636592
+ 636828
+ 636984
+ 635652
+ 635987
+ 636360
+ 636730
+ 636887
+ 637084
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 21 3
+ 348046
+ 348212
+ 348373
+ 348562
+ 348735
+ 348880
+ 349067
+ 349238
+ 349550
+ 349803
+ 350049
+ 350226
+ 350474
+ 350658
+ 350871
+ 351044
+ 351252
+ 351412
+ 351729
+ 351912
+ 352126
+ 348128
+ 348268
+ 348455
+ 348641
+ 348786
+ 348977
+ 349100
+ 349367
+ 349721
+ 349887
+ 350148
+ 350297
+ 350571
+ 350784
+ 350967
+ 351161
+ 351330
+ 351633
+ 351820
+ 352002
+ 352198
+ 0
+ 1
+ 1
+ 2
+ 0
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 21 3
+ 348046
+ 348212
+ 348373
+ 348562
+ 348735
+ 348880
+ 349067
+ 349238
+ 349550
+ 349803
+ 350049
+ 350226
+ 350474
+ 350658
+ 350871
+ 351044
+ 351252
+ 351412
+ 351737
+ 351912
+ 352126
+ 348128
+ 348268
+ 348455
+ 348641
+ 348786
+ 348977
+ 349100
+ 349367
+ 349721
+ 349887
+ 350148
+ 350297
+ 350571
+ 350784
+ 350967
+ 351161
+ 351330
+ 351602
+ 351820
+ 352002
+ 352198
+ 0
+ 1
+ 1
+ 2
+ 0
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+ 0
+ 2
+ 1
+ 2
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 996432
+ 996848
+ 997177
+ 997418
+ 997604
+ 997755
+ 998420
+ 998733
+ 999109
+ 999504
+ 999760
+ 1000112
+ 996735
+ 996940
+ 997277
+ 997490
+ 997667
+ 997896
+ 998516
+ 999018
+ 999412
+ 999681
+ 1000027
+ 1000232
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 996432
+ 996848
+ 997177
+ 997418
+ 997604
+ 997755
+ 998169
+ 998420
+ 998733
+ 999109
+ 999504
+ 999760
+ 1000112
+ 996735
+ 996940
+ 997277
+ 997490
+ 997667
+ 997896
+ 998301
+ 998516
+ 999018
+ 999412
+ 999681
+ 1000027
+ 1000232
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 200526
+ 201576
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 200526
+ 201576
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 195980
+ 197115
+ 197300
+ 197501
+ 197775
+ 196543
+ 197220
+ 197423
+ 197672
+ 197974
+ 0
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 195980
+ 197115
+ 197300
+ 197501
+ 197775
+ 197974
+ 198267
+ 196543
+ 197220
+ 197423
+ 197672
+ 197905
+ 198184
+ 198384
+ 0
+ 0
+ 2
+ 1
+ 0
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 773543
+ 774096
+ 774231
+ 774652
+ 774785
+ 774968
+ 775122
+ 773692
+ 774154
+ 774540
+ 774701
+ 774880
+ 775048
+ 775180
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 773989
+ 774231
+ 774652
+ 774785
+ 774968
+ 775122
+ 774154
+ 774540
+ 774701
+ 774880
+ 775048
+ 775180
+ 0
+ 2
+ 1
+ 2
+ 2
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 202345
+ 202782
+ 202991
+ 203267
+ 202509
+ 202912
+ 203129
+ 203663
+ 0
+ 0
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 202345
+ 202782
+ 202991
+ 203267
+ 203760
+ 204029
+ 202509
+ 202912
+ 203129
+ 203600
+ 203944
+ 204190
+ 0
+ 0
+ 1
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 1141851
+ 1142575
+ 1142720
+ 1142957
+ 1142100
+ 1142633
+ 1142869
+ 1142960
+ 0
+ 2
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 1141851
+ 1142578
+ 1142720
+ 1142957
+ 1142100
+ 1142633
+ 1142869
+ 1142960
+ 0
+ 2
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 225985
+ 226170
+ 226395
+ 226848
+ 226081
+ 226311
+ 226691
+ 227176
+ 0
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 225985
+ 226170
+ 226395
+ 226848
+ 226081
+ 226311
+ 226691
+ 226960
+ 0
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 11 3
+ 1064847
+ 1065054
+ 1065379
+ 1065549
+ 1065934
+ 1066230
+ 1066606
+ 1066851
+ 1067762
+ 1067926
+ 1068356
+ 1064960
+ 1065294
+ 1065443
+ 1065855
+ 1066149
+ 1066525
+ 1066771
+ 1067550
+ 1067849
+ 1068247
+ 1070396
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 11 3
+ 1064847
+ 1065054
+ 1065379
+ 1065549
+ 1065934
+ 1066230
+ 1066606
+ 1066851
+ 1067762
+ 1067926
+ 1068356
+ 1064960
+ 1065279
+ 1065443
+ 1065855
+ 1066149
+ 1066525
+ 1066771
+ 1067550
+ 1067849
+ 1068247
+ 1070396
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 1036610
+ 1036797
+ 1036944
+ 1037089
+ 1037531
+ 1037921
+ 1038276
+ 1038519
+ 1038801
+ 1038995
+ 1039224
+ 1039488
+ 1039695
+ 1036693
+ 1036851
+ 1037015
+ 1037442
+ 1037747
+ 1038176
+ 1038377
+ 1038706
+ 1038899
+ 1039086
+ 1039390
+ 1039607
+ 1040046
+ 0
+ 0
+ 2
+ 2
+ 2
+ 1
+ 0
+ 0
+ 1
+ 1
+ 2
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 1036610
+ 1036797
+ 1036944
+ 1037093
+ 1037531
+ 1037924
+ 1038276
+ 1038519
+ 1038801
+ 1038995
+ 1039224
+ 1039488
+ 1039695
+ 1036693
+ 1036851
+ 1037019
+ 1037442
+ 1037747
+ 1038176
+ 1038377
+ 1038706
+ 1038899
+ 1039086
+ 1039390
+ 1039607
+ 1040046
+ 0
+ 0
+ 2
+ 1
+ 2
+ 1
+ 0
+ 0
+ 1
+ 1
+ 2
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 866216
+ 867408
+ 866941
+ 867493
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 866216
+ 867408
+ 866941
+ 867493
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 143773
+ 143934
+ 144064
+ 144193
+ 144315
+ 144447
+ 144927
+ 145132
+ 145345
+ 143825
+ 143978
+ 144110
+ 144228
+ 144352
+ 144560
+ 145005
+ 145208
+ 145401
+ 0
+ 1
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 143773
+ 143934
+ 144064
+ 144193
+ 144315
+ 144447
+ 144927
+ 145132
+ 145345
+ 143825
+ 143978
+ 144110
+ 144228
+ 144352
+ 144560
+ 145005
+ 145208
+ 145401
+ 0
+ 1
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 861108
+ 861367
+ 861605
+ 862041
+ 862313
+ 862487
+ 862752
+ 863458
+ 863859
+ 861278
+ 861511
+ 861909
+ 862212
+ 862393
+ 862613
+ 862804
+ 863541
+ 864019
+ 0
+ 1
+ 0
+ 1
+ 1
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 861108
+ 861367
+ 861605
+ 862041
+ 862313
+ 862487
+ 862752
+ 863458
+ 863859
+ 861278
+ 861511
+ 861909
+ 862212
+ 862393
+ 862640
+ 862804
+ 863541
+ 864019
+ 0
+ 1
+ 0
+ 1
+ 1
+ 2
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 1331856
+ 1332136
+ 1332388
+ 1332588
+ 1333236
+ 1332000
+ 1332199
+ 1332509
+ 1332730
+ 1333426
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 1331856
+ 1332136
+ 1332388
+ 1332588
+ 1333350
+ 1332000
+ 1332199
+ 1332509
+ 1332730
+ 1333426
+ 2
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 877947
+ 878539
+ 878734
+ 878910
+ 878456
+ 878655
+ 878810
+ 879553
+ 2
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 877947
+ 878539
+ 878734
+ 878910
+ 878456
+ 878655
+ 878810
+ 879286
+ 2
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 979610
+ 979890
+ 980184
+ 980777
+ 980986
+ 979799
+ 980103
+ 980355
+ 980894
+ 981157
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 979610
+ 979890
+ 980184
+ 980777
+ 979799
+ 980103
+ 980355
+ 980870
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 979610
+ 979890
+ 980184
+ 980777
+ 980986
+ 979799
+ 980103
+ 980355
+ 980894
+ 981157
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 19 3
+ 325473
+ 325913
+ 326106
+ 326332
+ 326594
+ 326931
+ 327237
+ 327488
+ 327663
+ 328000
+ 328188
+ 328424
+ 328898
+ 329119
+ 329311
+ 329573
+ 329781
+ 330027
+ 330243
+ 325642
+ 326014
+ 326229
+ 326518
+ 326816
+ 327085
+ 327387
+ 327577
+ 327867
+ 328108
+ 328323
+ 328556
+ 329031
+ 329212
+ 329437
+ 329699
+ 329925
+ 330156
+ 330404
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 2
+ 1
+ 1
+ 0
+ 2
+ 1
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 19 3
+ 325473
+ 325913
+ 326106
+ 326332
+ 326594
+ 326931
+ 327237
+ 327488
+ 327663
+ 328000
+ 328188
+ 328424
+ 328898
+ 329119
+ 329311
+ 329573
+ 329781
+ 330027
+ 330243
+ 325642
+ 326014
+ 326229
+ 326518
+ 326816
+ 327085
+ 327387
+ 327577
+ 327867
+ 328108
+ 328323
+ 328505
+ 329031
+ 329212
+ 329437
+ 329699
+ 329925
+ 330156
+ 330404
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 2
+ 1
+ 1
+ 0
+ 2
+ 1
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 20 3
+ 325473
+ 325913
+ 326106
+ 326332
+ 326594
+ 326931
+ 327237
+ 327488
+ 327663
+ 328000
+ 328188
+ 328424
+ 328686
+ 328884
+ 329119
+ 329311
+ 329573
+ 329781
+ 330027
+ 330243
+ 325642
+ 326014
+ 326229
+ 326518
+ 326816
+ 327085
+ 327387
+ 327577
+ 327867
+ 328108
+ 328323
+ 328556
+ 328735
+ 329031
+ 329212
+ 329437
+ 329699
+ 329925
+ 330156
+ 330404
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 2
+ 1
+ 1
+ 0
+ 2
+ 1
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 1185718
+ 1186451
+ 1187259
+ 1187588
+ 1186306
+ 1187164
+ 1187484
+ 1187901
+ 0
+ 0
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 3
+ 1185718
+ 1186451
+ 1187259
+ 1187588
+ 1186306
+ 1187164
+ 1187484
+ 1187901
+ 0
+ 0
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 948063
+ 948428
+ 948696
+ 949075
+ 949296
+ 949540
+ 949882
+ 950197
+ 950403
+ 950581
+ 950880
+ 951125
+ 951527
+ 948343
+ 948640
+ 948816
+ 949207
+ 949452
+ 949621
+ 950125
+ 950311
+ 950500
+ 950794
+ 951041
+ 951211
+ 951696
+ 1
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 17 3
+ 947784
+ 948087
+ 948234
+ 948428
+ 948696
+ 948911
+ 949075
+ 949296
+ 949540
+ 949733
+ 949882
+ 950197
+ 950403
+ 950581
+ 950880
+ 951125
+ 951527
+ 948009
+ 948147
+ 948343
+ 948595
+ 948816
+ 948992
+ 949207
+ 949452
+ 949621
+ 949796
+ 950125
+ 950311
+ 950500
+ 950794
+ 951041
+ 951211
+ 951696
+ 2
+ 0
+ 2
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 18 3
+ 947554
+ 947798
+ 948087
+ 948234
+ 948428
+ 948696
+ 948911
+ 949075
+ 949296
+ 949540
+ 949733
+ 949882
+ 950197
+ 950403
+ 950581
+ 950880
+ 951125
+ 951527
+ 947664
+ 948009
+ 948147
+ 948343
+ 948595
+ 948816
+ 948992
+ 949207
+ 949452
+ 949621
+ 949796
+ 950125
+ 950311
+ 950500
+ 950794
+ 951041
+ 951211
+ 951696
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 27 3
+ 645371
+ 645574
+ 645754
+ 645898
+ 646125
+ 646405
+ 646566
+ 646776
+ 647037
+ 647183
+ 647366
+ 647530
+ 647702
+ 647923
+ 648101
+ 648361
+ 648507
+ 648765
+ 648910
+ 649367
+ 649550
+ 649761
+ 650562
+ 650790
+ 651127
+ 651319
+ 651710
+ 645485
+ 645679
+ 645814
+ 646037
+ 646310
+ 646489
+ 646689
+ 646956
+ 647107
+ 647280
+ 647442
+ 647620
+ 647807
+ 647995
+ 648275
+ 648432
+ 648656
+ 648829
+ 649139
+ 649459
+ 649675
+ 650438
+ 650709
+ 650904
+ 651219
+ 651539
+ 651797
+ 1
+ 2
+ 0
+ 2
+ 2
+ 0
+ 1
+ 2
+ 1
+ 0
+ 2
+ 0
+ 1
+ 2
+ 0
+ 0
+ 0
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 26 3
+ 645371
+ 645574
+ 645754
+ 645898
+ 646125
+ 646566
+ 646776
+ 647037
+ 647183
+ 647366
+ 647530
+ 647702
+ 647923
+ 648101
+ 648361
+ 648507
+ 648765
+ 648910
+ 649367
+ 649550
+ 649761
+ 650562
+ 650790
+ 651127
+ 651319
+ 651710
+ 645485
+ 645679
+ 645814
+ 646037
+ 646310
+ 646689
+ 646956
+ 647107
+ 647280
+ 647442
+ 647620
+ 647807
+ 647995
+ 648275
+ 648432
+ 648656
+ 648829
+ 649139
+ 649459
+ 649675
+ 650438
+ 650709
+ 650904
+ 651219
+ 651539
+ 651797
+ 2
+ 0
+ 1
+ 0
+ 0
+ 1
+ 2
+ 1
+ 0
+ 2
+ 0
+ 1
+ 2
+ 0
+ 0
+ 0
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 0
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 967595
+ 969314
+ 969907
+ 968568
+ 969711
+ 970058
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 967595
+ 969314
+ 969907
+ 968568
+ 969705
+ 970058
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 976427
+ 977279
+ 976501
+ 977685
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 977232
+ 977685
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 180400
+ 181346
+ 182060
+ 180852
+ 181422
+ 182066
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 3
+ 180400
+ 181346
+ 182060
+ 180852
+ 181422
+ 182066
+ 0
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 166852
+ 167013
+ 166871
+ 167798
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 166928
+ 167798
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 114299
+ 114619
+ 114434
+ 115297
+ 0
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 114299
+ 114619
+ 114434
+ 115297
+ 0
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 519037
+ 520219
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 519037
+ 520219
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 807970
+ 808229
+ 808532
+ 809409
+ 809672
+ 809911
+ 810188
+ 810380
+ 808018
+ 808395
+ 809215
+ 809583
+ 809789
+ 810091
+ 810235
+ 810681
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 807970
+ 808229
+ 808532
+ 809409
+ 809672
+ 809911
+ 810188
+ 810380
+ 808018
+ 808395
+ 809215
+ 809583
+ 809789
+ 810091
+ 810235
+ 810681
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 18 3
+ 1226749
+ 1226852
+ 1227087
+ 1227247
+ 1227580
+ 1227816
+ 1228046
+ 1228331
+ 1228706
+ 1228897
+ 1229054
+ 1229233
+ 1229504
+ 1229717
+ 1229893
+ 1230065
+ 1230303
+ 1230465
+ 1226762
+ 1226938
+ 1227159
+ 1227310
+ 1227667
+ 1227958
+ 1228168
+ 1228448
+ 1228802
+ 1228957
+ 1229129
+ 1229338
+ 1229624
+ 1229795
+ 1229978
+ 1230117
+ 1230374
+ 1230593
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 2
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 18 3
+ 1226749
+ 1226852
+ 1227087
+ 1227247
+ 1227580
+ 1227816
+ 1228046
+ 1228331
+ 1228706
+ 1228897
+ 1229054
+ 1229233
+ 1229504
+ 1229717
+ 1229893
+ 1230065
+ 1230303
+ 1230471
+ 1226762
+ 1226938
+ 1227159
+ 1227310
+ 1227667
+ 1227958
+ 1228168
+ 1228448
+ 1228802
+ 1228957
+ 1229129
+ 1229338
+ 1229624
+ 1229795
+ 1229978
+ 1230117
+ 1230380
+ 1230593
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 2
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 962127
+ 963468
+ 963638
+ 964294
+ 964503
+ 964738
+ 964951
+ 965123
+ 965452
+ 965598
+ 965995
+ 966445
+ 963321
+ 963546
+ 964191
+ 964380
+ 964626
+ 964873
+ 965041
+ 965309
+ 965506
+ 965736
+ 966157
+ 966622
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 13 3
+ 962127
+ 963468
+ 963638
+ 964294
+ 964503
+ 964738
+ 964951
+ 965123
+ 965452
+ 965598
+ 965822
+ 965995
+ 966445
+ 963321
+ 963546
+ 964191
+ 964380
+ 964626
+ 964873
+ 965041
+ 965309
+ 965506
+ 965736
+ 965888
+ 966157
+ 966622
+ 0
+ 1
+ 0
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 272110
+ 272444
+ 272650
+ 273063
+ 273233
+ 273428
+ 273652
+ 273862
+ 274166
+ 272362
+ 272555
+ 272983
+ 273149
+ 273339
+ 273562
+ 273788
+ 274083
+ 274239
+ 1
+ 2
+ 0
+ 0
+ 2
+ 2
+ 1
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 272110
+ 272444
+ 272650
+ 273063
+ 273233
+ 273428
+ 273652
+ 273862
+ 274166
+ 272362
+ 272555
+ 272983
+ 273149
+ 273339
+ 273562
+ 273788
+ 274083
+ 274239
+ 1
+ 2
+ 0
+ 0
+ 2
+ 2
+ 1
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 352841
+ 353237
+ 353162
+ 354845
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 353213
+ 354845
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 1014085
+ 1014334
+ 1014767
+ 1014951
+ 1015199
+ 1015428
+ 1015684
+ 1016079
+ 1016340
+ 1016795
+ 1017058
+ 1017332
+ 1014238
+ 1014544
+ 1014873
+ 1015051
+ 1015305
+ 1015519
+ 1015826
+ 1016227
+ 1016450
+ 1016952
+ 1017184
+ 1017473
+ 0
+ 2
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 1
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 1014824
+ 1014951
+ 1015199
+ 1015428
+ 1015684
+ 1016079
+ 1016340
+ 1016795
+ 1017058
+ 1017332
+ 1014873
+ 1015051
+ 1015305
+ 1015519
+ 1015826
+ 1016227
+ 1016450
+ 1016952
+ 1017184
+ 1017473
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 0
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 1051803
+ 1052160
+ 1052546
+ 1053327
+ 1053807
+ 1054663
+ 1054936
+ 1055174
+ 1055478
+ 1055798
+ 1056187
+ 1056434
+ 1052038
+ 1052270
+ 1052776
+ 1053495
+ 1054201
+ 1054807
+ 1055089
+ 1055291
+ 1055709
+ 1056104
+ 1056289
+ 1056551
+ 0
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 1053171
+ 1053327
+ 1053807
+ 1054663
+ 1054936
+ 1055174
+ 1055478
+ 1055798
+ 1056187
+ 1056434
+ 1053188
+ 1053495
+ 1054201
+ 1054807
+ 1055089
+ 1055291
+ 1055709
+ 1056104
+ 1056289
+ 1056551
+ 0
+ 0
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 1051803
+ 1052160
+ 1052546
+ 1053327
+ 1053807
+ 1054285
+ 1054465
+ 1054663
+ 1054936
+ 1055174
+ 1055478
+ 1055798
+ 1056187
+ 1056434
+ 1052038
+ 1052270
+ 1052776
+ 1053495
+ 1054201
+ 1054386
+ 1054529
+ 1054807
+ 1055089
+ 1055291
+ 1055709
+ 1056104
+ 1056289
+ 1056551
+ 0
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 6914
+ 7156
+ 7383
+ 7563
+ 7761
+ 7941
+ 8235
+ 8416
+ 8570
+ 7069
+ 7232
+ 7450
+ 7649
+ 7835
+ 7987
+ 8325
+ 8464
+ 8666
+ 0
+ 2
+ 1
+ 1
+ 1
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 7314
+ 7563
+ 7761
+ 7941
+ 8235
+ 8416
+ 8570
+ 7450
+ 7649
+ 7835
+ 7987
+ 8325
+ 8464
+ 8666
+ 1
+ 1
+ 1
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 64397
+ 64581
+ 64750
+ 64900
+ 65109
+ 65330
+ 65562
+ 65738
+ 66106
+ 66261
+ 66449
+ 66677
+ 66834
+ 67323
+ 64475
+ 64656
+ 64807
+ 65017
+ 65217
+ 65456
+ 65652
+ 65864
+ 66160
+ 66342
+ 66557
+ 66749
+ 66897
+ 67512
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 64397
+ 64581
+ 64750
+ 64900
+ 65109
+ 65330
+ 65562
+ 65732
+ 66106
+ 66261
+ 66449
+ 66677
+ 66834
+ 67323
+ 64475
+ 64656
+ 64807
+ 65017
+ 65217
+ 65456
+ 65652
+ 65864
+ 66160
+ 66342
+ 66557
+ 66749
+ 66897
+ 67512
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 64397
+ 64569
+ 64750
+ 64900
+ 65109
+ 65330
+ 65562
+ 65738
+ 66106
+ 66261
+ 66449
+ 66677
+ 66834
+ 67323
+ 64475
+ 64656
+ 64807
+ 65017
+ 65217
+ 65456
+ 65652
+ 65864
+ 66160
+ 66342
+ 66557
+ 66749
+ 66897
+ 67512
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 74104
+ 74337
+ 74250
+ 74443
+ 1
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 74104
+ 74337
+ 74250
+ 74443
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 313594
+ 313879
+ 314086
+ 314440
+ 314651
+ 314890
+ 315576
+ 313759
+ 313995
+ 314225
+ 314551
+ 314802
+ 315015
+ 315831
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 313594
+ 313879
+ 314086
+ 314440
+ 314651
+ 314890
+ 315576
+ 313759
+ 313995
+ 314225
+ 314551
+ 314802
+ 315015
+ 315831
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 313745
+ 313871
+ 314086
+ 314440
+ 314651
+ 314890
+ 315576
+ 313752
+ 313995
+ 314225
+ 314551
+ 314802
+ 315015
+ 315831
+ 1
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 313594
+ 313879
+ 314086
+ 314440
+ 314651
+ 314890
+ 315576
+ 313759
+ 313995
+ 314225
+ 314551
+ 314802
+ 315015
+ 315831
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 313594
+ 313879
+ 314086
+ 314440
+ 314651
+ 315576
+ 313759
+ 313995
+ 314225
+ 314551
+ 314802
+ 315644
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 15 3
+ 739715
+ 740124
+ 740355
+ 740620
+ 740970
+ 741509
+ 741684
+ 741946
+ 742181
+ 742502
+ 742822
+ 743090
+ 743301
+ 743620
+ 743815
+ 740051
+ 740246
+ 740503
+ 740758
+ 741066
+ 741602
+ 741796
+ 742051
+ 742318
+ 742737
+ 742983
+ 743204
+ 743547
+ 743717
+ 743820
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 16 3
+ 739715
+ 740124
+ 740355
+ 740620
+ 740970
+ 741148
+ 741509
+ 741684
+ 741946
+ 742181
+ 742502
+ 742822
+ 743090
+ 743301
+ 743620
+ 743815
+ 740051
+ 740246
+ 740503
+ 740758
+ 741066
+ 741208
+ 741602
+ 741796
+ 742051
+ 742318
+ 742737
+ 742983
+ 743204
+ 743547
+ 743717
+ 743820
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+ 0
+ 2
+ 2
+ 0
+ 0
+ 2
+ 1
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 704278
+ 704587
+ 705063
+ 705301
+ 705533
+ 706100
+ 704494
+ 704668
+ 705129
+ 705367
+ 705656
+ 706457
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 6 3
+ 704278
+ 704587
+ 705063
+ 705301
+ 705533
+ 706100
+ 704494
+ 704668
+ 705129
+ 705367
+ 705641
+ 706457
+ 1
+ 2
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 592115
+ 593201
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 592115
+ 593201
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 132413
+ 132823
+ 133302
+ 133640
+ 133910
+ 134288
+ 134581
+ 132744
+ 133218
+ 133539
+ 133752
+ 134206
+ 134501
+ 135118
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 8 3
+ 132413
+ 132823
+ 133302
+ 133640
+ 133910
+ 134288
+ 134581
+ 135187
+ 132744
+ 133218
+ 133539
+ 133752
+ 134206
+ 134501
+ 135104
+ 135216
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 1198860
+ 1199197
+ 1199459
+ 1199710
+ 1200424
+ 1200643
+ 1200962
+ 1199115
+ 1199362
+ 1199642
+ 1200305
+ 1200537
+ 1200864
+ 1201302
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 1198860
+ 1199197
+ 1199459
+ 1199710
+ 1200424
+ 1200643
+ 1200962
+ 1199115
+ 1199362
+ 1199642
+ 1200305
+ 1200537
+ 1200864
+ 1201302
+ 0
+ 2
+ 1
+ 0
+ 1
+ 1
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 584397
+ 584860
+ 585053
+ 585237
+ 585500
+ 585779
+ 586023
+ 586192
+ 586439
+ 586649
+ 584619
+ 584957
+ 585145
+ 585369
+ 585686
+ 585943
+ 586102
+ 586321
+ 586567
+ 587037
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 10 3
+ 584397
+ 584860
+ 585053
+ 585237
+ 585500
+ 585776
+ 586023
+ 586192
+ 586439
+ 586649
+ 584619
+ 584957
+ 585145
+ 585369
+ 585686
+ 585943
+ 586102
+ 586321
+ 586567
+ 587037
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 448664
+ 448811
+ 449054
+ 449224
+ 449713
+ 449938
+ 450150
+ 448733
+ 448973
+ 449123
+ 449489
+ 449838
+ 450046
+ 450246
+ 0
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 448664
+ 448811
+ 449054
+ 449224
+ 449713
+ 449938
+ 450150
+ 448733
+ 448973
+ 449123
+ 449489
+ 449838
+ 450046
+ 450246
+ 0
+ 1
+ 2
+ 1
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1292541
+ 1293249
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1292541
+ 1293249
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 50 3
+ 373335
+ 373606
+ 373892
+ 374272
+ 374583
+ 375122
+ 375325
+ 375528
+ 375808
+ 376114
+ 376352
+ 376562
+ 376925
+ 377211
+ 377391
+ 377881
+ 378119
+ 378298
+ 378504
+ 378746
+ 378943
+ 379183
+ 379305
+ 379528
+ 379866
+ 380089
+ 380270
+ 380602
+ 380846
+ 381150
+ 381405
+ 381730
+ 381912
+ 382127
+ 382373
+ 382803
+ 383030
+ 383395
+ 383608
+ 384084
+ 384318
+ 384558
+ 384694
+ 384908
+ 385171
+ 385432
+ 385713
+ 385909
+ 386133
+ 386428
+ 373406
+ 373787
+ 374190
+ 374501
+ 374923
+ 375239
+ 375454
+ 375720
+ 376003
+ 376252
+ 376475
+ 376816
+ 377029
+ 377306
+ 377616
+ 378037
+ 378192
+ 378366
+ 378650
+ 378855
+ 379090
+ 379231
+ 379434
+ 379771
+ 380004
+ 380175
+ 380376
+ 380698
+ 380999
+ 381333
+ 381635
+ 381833
+ 382041
+ 382172
+ 382568
+ 382930
+ 383131
+ 383530
+ 383689
+ 384231
+ 384450
+ 384606
+ 384841
+ 384970
+ 385325
+ 385624
+ 385818
+ 386044
+ 386334
+ 386683
+ 0
+ 0
+ 1
+ 2
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 1
+ 1
+ 1
+ 0
+ 2
+ 0
+ 0
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 0
+ 1
+ 0
+ 2
+ 1
+ 2
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 2
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 49 3
+ 373694
+ 373892
+ 374272
+ 374583
+ 375125
+ 375325
+ 375528
+ 375808
+ 376114
+ 376352
+ 376562
+ 376925
+ 377211
+ 377391
+ 377881
+ 378119
+ 378298
+ 378504
+ 378746
+ 378943
+ 379183
+ 379305
+ 379528
+ 379866
+ 380089
+ 380270
+ 380602
+ 380846
+ 381150
+ 381405
+ 381730
+ 381912
+ 382127
+ 382373
+ 382803
+ 383030
+ 383395
+ 383608
+ 384084
+ 384318
+ 384558
+ 384694
+ 384908
+ 385171
+ 385432
+ 385713
+ 385909
+ 386133
+ 386428
+ 373787
+ 374190
+ 374501
+ 374923
+ 375239
+ 375454
+ 375720
+ 376003
+ 376252
+ 376475
+ 376816
+ 377029
+ 377306
+ 377616
+ 378037
+ 378192
+ 378366
+ 378650
+ 378855
+ 379090
+ 379231
+ 379434
+ 379771
+ 380004
+ 380175
+ 380376
+ 380698
+ 380999
+ 381333
+ 381635
+ 381833
+ 382041
+ 382172
+ 382568
+ 382930
+ 383131
+ 383530
+ 383689
+ 384231
+ 384450
+ 384606
+ 384841
+ 384970
+ 385325
+ 385624
+ 385818
+ 386044
+ 386334
+ 386683
+ 0
+ 2
+ 0
+ 1
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 1
+ 0
+ 1
+ 1
+ 1
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 0
+ 1
+ 0
+ 2
+ 1
+ 1
+ 2
+ 1
+ 0
+ 2
+ 0
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 0
+ 1
+ 0
+ 2
+ 1
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 775822
+ 776482
+ 777155
+ 777336
+ 777872
+ 778153
+ 778486
+ 778807
+ 779002
+ 779174
+ 779538
+ 779744
+ 776356
+ 776763
+ 777238
+ 777740
+ 778066
+ 778334
+ 778611
+ 778897
+ 779081
+ 779251
+ 779647
+ 779864
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 775822
+ 776482
+ 777155
+ 777336
+ 777872
+ 778153
+ 778486
+ 778807
+ 779002
+ 779174
+ 779538
+ 779744
+ 776356
+ 776763
+ 777238
+ 777740
+ 778066
+ 778334
+ 778611
+ 778897
+ 779081
+ 779251
+ 779647
+ 779864
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 11 3
+ 761321
+ 761886
+ 762510
+ 763013
+ 763299
+ 763980
+ 764157
+ 764699
+ 765025
+ 765485
+ 765753
+ 761811
+ 762392
+ 762579
+ 763211
+ 763431
+ 764067
+ 764598
+ 764867
+ 765256
+ 765601
+ 766054
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 9 3
+ 761321
+ 761886
+ 762510
+ 763013
+ 763299
+ 763980
+ 764157
+ 764699
+ 765025
+ 761811
+ 762392
+ 762579
+ 763211
+ 763431
+ 764067
+ 764598
+ 764932
+ 765092
+ 0
+ 1
+ 1
+ 0
+ 2
+ 1
+ 0
+ 2
+ 2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 20 3
+ 23519
+ 24542
+ 24752
+ 25041
+ 25524
+ 25825
+ 26081
+ 26292
+ 26543
+ 26862
+ 27099
+ 27372
+ 27618
+ 27803
+ 28708
+ 28890
+ 29160
+ 30147
+ 30410
+ 30902
+ 24452
+ 24656
+ 24963
+ 25436
+ 25744
+ 25998
+ 26204
+ 26453
+ 26777
+ 27013
+ 27282
+ 27534
+ 27714
+ 28432
+ 28806
+ 29081
+ 30066
+ 30312
+ 30817
+ 31080
+ 0
+ 2
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 1
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 20 3
+ 23519
+ 24542
+ 24752
+ 25041
+ 25524
+ 25825
+ 26081
+ 26292
+ 26543
+ 26862
+ 27099
+ 27372
+ 27618
+ 27803
+ 28708
+ 28890
+ 29160
+ 30147
+ 30410
+ 30902
+ 24452
+ 24656
+ 24963
+ 25436
+ 25744
+ 25998
+ 26204
+ 26453
+ 26777
+ 27013
+ 27282
+ 27537
+ 27714
+ 28432
+ 28806
+ 29081
+ 30066
+ 30312
+ 30817
+ 31080
+ 0
+ 2
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 1
+ 2
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 1
+ 0
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 306557
+ 306892
+ 307440
+ 307888
+ 308147
+ 308396
+ 308796
+ 306800
+ 307359
+ 307805
+ 308070
+ 308318
+ 308573
+ 308991
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 7 3
+ 306557
+ 306892
+ 307440
+ 307888
+ 308147
+ 308399
+ 308796
+ 306800
+ 307359
+ 307805
+ 308070
+ 308318
+ 308573
+ 308991
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 3
+ 1240582
+ 1241057
+ 1240785
+ 1241376
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 5 3
+ 1240582
+ 1241057
+ 1241425
+ 1241616
+ 1241761
+ 1240785
+ 1241344
+ 1241543
+ 1241678
+ 1241811
+ 0
+ 0
+ 0
+ 1
+ 1
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 667001
+ 667150
+ 667372
+ 667540
+ 667734
+ 667956
+ 668172
+ 668612
+ 668855
+ 669078
+ 669226
+ 669460
+ 669619
+ 669749
+ 667068
+ 667281
+ 667437
+ 667641
+ 667868
+ 668082
+ 668468
+ 668745
+ 668987
+ 669134
+ 669266
+ 669513
+ 669650
+ 669773
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 14 3
+ 667001
+ 667150
+ 667372
+ 667540
+ 667734
+ 667956
+ 668172
+ 668612
+ 668855
+ 669078
+ 669226
+ 669460
+ 669619
+ 669749
+ 667068
+ 667281
+ 667464
+ 667641
+ 667868
+ 668082
+ 668468
+ 668745
+ 668987
+ 669134
+ 669266
+ 669513
+ 669650
+ 669773
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 12 3
+ 667324
+ 667540
+ 667734
+ 667956
+ 668172
+ 668612
+ 668855
+ 669078
+ 669226
+ 669460
+ 669619
+ 669749
+ 667437
+ 667641
+ 667868
+ 668082
+ 668468
+ 668745
+ 668987
+ 669134
+ 669266
+ 669513
+ 669650
+ 669773
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+
+
+
+
+
+
+
+
+# name: cleave_conf
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: chr_num
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: transcript_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: tis
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+923492
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+923492
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+404627
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404915
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404627
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404915
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+630569
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630569
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630569
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630569
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630569
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+626918
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+626918
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+626918
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+643972
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+644476
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+644485
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+643921
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+389568
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389568
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389568
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+316204
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+316204
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1261411
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1261411
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+46789
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+46789
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+37061
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37061
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37061
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37061
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+36836
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+40877
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+40597
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+562382
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+562382
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+813975
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+813975
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1080321
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1080321
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+513573
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+513573
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+907699
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+907699
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1375128
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1375598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+365625
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+365625
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+130099
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+130099
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+711763
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+711763
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+237647
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+236537
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1219325
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1219325
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+53022
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+52239
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+50954
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50954
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50954
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50954
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+175862
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+176607
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+415154
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+415154
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+410803
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+410803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+944772
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+944772
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+944772
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+730148
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+730148
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+918308
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+918308
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+602673
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+602673
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+1153895
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1153095
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1153895
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1153895
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+231915
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+231915
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+662191
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+662191
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+686884
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+686884
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+686996
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+72583
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+72583
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+934055
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+934055
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+109595
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+109595
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+109595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+795159
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+795159
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+300441
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+300441
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+300441
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+293396
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+293595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+666420
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666420
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666420
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666244
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+419650
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+418818
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+418818
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1361844
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1361844
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+389876
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389876
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389876
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+100683
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+100683
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+100683
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+635474
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+635474
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+348046
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+348046
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+996432
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+996432
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+200526
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+200526
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+195980
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+195980
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+773543
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+773989
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+202345
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+202345
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1142960
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1142960
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+227176
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+226960
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1070396
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1070396
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1036610
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1036610
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+867493
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+867493
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+143773
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+143773
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+864019
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+864019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1333426
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1333426
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+879553
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+879286
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+981157
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+980870
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+981157
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+325473
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+325473
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+325473
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1187901
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1187901
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+951696
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+951696
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+951696
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+651797
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+651797
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+970058
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+970058
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+977685
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+977685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+182066
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+182066
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+167798
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+167798
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+114299
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+114299
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+519037
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+519037
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+807970
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+807970
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1226749
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1226749
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+966622
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+966622
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+274239
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+274239
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+354845
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+354845
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1014085
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1014824
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+1051803
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1053171
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1051803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+8666
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+8666
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+67512
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+67512
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+67512
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+74443
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+74443
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+315831
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315831
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315831
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315831
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315644
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+739715
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+739715
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+706457
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+706457
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+592115
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+592115
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+135118
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+135216
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1198860
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1198860
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+584397
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+584397
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+450246
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+450246
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1292541
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1292541
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+373335
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+373694
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+775822
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+775822
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+761321
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+761321
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+23519
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+23519
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+308991
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+308991
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1240582
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1240582
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+669773
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+669773
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+669773
+
+
+
+
+
+
+
+
+# name: source
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+
+
+
+# name: chr
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 4
+Chr1
+
+
+
+
+
+# name: is_valid
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: exons_confirmed
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: cdsStop
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+924285
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+924285
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+408483
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408483
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408483
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408483
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+633083
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633083
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633083
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633083
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633083
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+629581
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+628993
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+629581
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+643065
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+643065
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+643065
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+643065
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+387481
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+387649
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+388225
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+319505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+319505
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1258762
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1258762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+45505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+45505
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+33994
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33994
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33994
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33994
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33994
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+38900
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+38900
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+561009
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+561009
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+816621
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+816621
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1075986
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1075994
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+511918
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+511918
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+909243
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+909243
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1373487
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1373487
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+367147
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+366363
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+121584
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+121584
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+710104
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+710914
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+233190
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+233190
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1218022
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1218022
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+54492
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+54492
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+50286
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50286
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50286
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50286
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+178049
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+178049
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+417794
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+417794
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+411381
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+411359
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+947429
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947429
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947429
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+731377
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+731377
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+920304
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+919997
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+604132
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+604132
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+1148820
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148820
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148820
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148820
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+231166
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+231166
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+661365
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+661365
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+683067
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+681726
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+681726
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+73881
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+73881
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+936790
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+936579
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+111365
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+111365
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+111365
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+793578
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+793578
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+298719
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+298719
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+298719
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+294886
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+294886
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+665310
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665310
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665310
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665310
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+422152
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+422152
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+422152
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1359089
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1358784
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+392446
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+392291
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+392446
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+101676
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+101676
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+101676
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+637081
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+637081
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+352195
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+352195
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1000229
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1000229
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+201573
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+201573
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+197971
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+198381
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+775177
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+775177
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+203660
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+204187
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1141854
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1141854
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+225988
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+225988
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1064850
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1064850
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1040043
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1040043
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+866219
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+866219
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+145398
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+145398
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+861111
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+861111
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1331859
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1331859
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+877950
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+877950
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+979613
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+979613
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+979613
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+330401
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+330401
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+330401
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1185721
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1185721
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+948066
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947787
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947557
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+645374
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+645374
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+967598
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+967598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+976430
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+977235
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+180403
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+180403
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+166855
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+166931
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+115294
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+115294
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+520216
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+520216
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+810678
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+810678
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1230590
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1230590
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+962130
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+962130
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+272113
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+272113
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+352844
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+353216
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1017470
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1017470
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+1056548
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1056548
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1056548
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+6917
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+7317
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+64400
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+64400
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+64400
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+74107
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+74107
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+313597
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313597
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313748
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313597
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313597
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+743817
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+743817
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+704281
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+704281
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+593198
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+593198
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+132416
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+132416
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1201299
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1201299
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+587034
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+587034
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+448667
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+448667
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1293246
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1293246
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+386680
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+386680
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+779861
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+779861
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+766051
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+765089
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+31077
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+31077
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+306560
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+306560
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1241373
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1241808
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+667004
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+667004
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+667327
+
+
+
+
+
+
+
+
+# name: start
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: scalar
+923426
+
+
+
+# name: <cell-element>
+# type: scalar
+404600
+
+
+
+# name: <cell-element>
+# type: scalar
+630505
+
+
+
+# name: <cell-element>
+# type: scalar
+626741
+
+
+
+# name: <cell-element>
+# type: scalar
+642751
+
+
+
+# name: <cell-element>
+# type: scalar
+387276
+
+
+
+# name: <cell-element>
+# type: scalar
+316128
+
+
+
+# name: <cell-element>
+# type: scalar
+1258576
+
+
+
+# name: <cell-element>
+# type: scalar
+45295
+
+
+
+# name: <cell-element>
+# type: scalar
+33378
+
+
+
+# name: <cell-element>
+# type: scalar
+38751
+
+
+
+# name: <cell-element>
+# type: scalar
+560609
+
+
+
+# name: <cell-element>
+# type: scalar
+813471
+
+
+
+# name: <cell-element>
+# type: scalar
+1075542
+
+
+
+# name: <cell-element>
+# type: scalar
+511764
+
+
+
+# name: <cell-element>
+# type: scalar
+907642
+
+
+
+# name: <cell-element>
+# type: scalar
+1373233
+
+
+
+# name: <cell-element>
+# type: scalar
+365209
+
+
+
+# name: <cell-element>
+# type: scalar
+121066
+
+
+
+# name: <cell-element>
+# type: scalar
+710017
+
+
+
+# name: <cell-element>
+# type: scalar
+232840
+
+
+
+# name: <cell-element>
+# type: scalar
+1217947
+
+
+
+# name: <cell-element>
+# type: scalar
+52239
+
+
+
+# name: <cell-element>
+# type: scalar
+50074
+
+
+
+# name: <cell-element>
+# type: scalar
+175782
+
+
+
+# name: <cell-element>
+# type: scalar
+415079
+
+
+
+# name: <cell-element>
+# type: scalar
+410748
+
+
+
+# name: <cell-element>
+# type: scalar
+944572
+
+
+
+# name: <cell-element>
+# type: scalar
+729901
+
+
+
+# name: <cell-element>
+# type: scalar
+918299
+
+
+
+# name: <cell-element>
+# type: scalar
+602497
+
+
+
+# name: <cell-element>
+# type: scalar
+1148596
+
+
+
+# name: <cell-element>
+# type: scalar
+230993
+
+
+
+# name: <cell-element>
+# type: scalar
+661176
+
+
+
+# name: <cell-element>
+# type: scalar
+681395
+
+
+
+# name: <cell-element>
+# type: scalar
+72339
+
+
+
+# name: <cell-element>
+# type: scalar
+933512
+
+
+
+# name: <cell-element>
+# type: scalar
+108946
+
+
+
+# name: <cell-element>
+# type: scalar
+793352
+
+
+
+# name: <cell-element>
+# type: scalar
+298534
+
+
+
+# name: <cell-element>
+# type: scalar
+293342
+
+
+
+# name: <cell-element>
+# type: scalar
+665151
+
+
+
+# name: <cell-element>
+# type: scalar
+418748
+
+
+
+# name: <cell-element>
+# type: scalar
+1358573
+
+
+
+# name: <cell-element>
+# type: scalar
+389812
+
+
+
+# name: <cell-element>
+# type: scalar
+99894
+
+
+
+# name: <cell-element>
+# type: scalar
+635144
+
+
+
+# name: <cell-element>
+# type: scalar
+347891
+
+
+
+# name: <cell-element>
+# type: scalar
+996115
+
+
+
+# name: <cell-element>
+# type: scalar
+199639
+
+
+
+# name: <cell-element>
+# type: scalar
+195780
+
+
+
+# name: <cell-element>
+# type: scalar
+773411
+
+
+
+# name: <cell-element>
+# type: scalar
+202136
+
+
+
+# name: <cell-element>
+# type: scalar
+1141603
+
+
+
+# name: <cell-element>
+# type: scalar
+225664
+
+
+
+# name: <cell-element>
+# type: scalar
+1064449
+
+
+
+# name: <cell-element>
+# type: scalar
+1036537
+
+
+
+# name: <cell-element>
+# type: scalar
+865914
+
+
+
+# name: <cell-element>
+# type: scalar
+143564
+
+
+
+# name: <cell-element>
+# type: scalar
+860787
+
+
+
+# name: <cell-element>
+# type: scalar
+1331465
+
+
+
+# name: <cell-element>
+# type: scalar
+877861
+
+
+
+# name: <cell-element>
+# type: scalar
+979307
+
+
+
+# name: <cell-element>
+# type: scalar
+325379
+
+
+
+# name: <cell-element>
+# type: scalar
+1185549
+
+
+
+# name: <cell-element>
+# type: scalar
+947519
+
+
+
+# name: <cell-element>
+# type: scalar
+645091
+
+
+
+# name: <cell-element>
+# type: scalar
+967502
+
+
+
+# name: <cell-element>
+# type: scalar
+976096
+
+
+
+# name: <cell-element>
+# type: scalar
+180058
+
+
+
+# name: <cell-element>
+# type: scalar
+166588
+
+
+
+# name: <cell-element>
+# type: scalar
+114286
+
+
+
+# name: <cell-element>
+# type: scalar
+518251
+
+
+
+# name: <cell-element>
+# type: scalar
+807361
+
+
+
+# name: <cell-element>
+# type: scalar
+1226575
+
+
+
+# name: <cell-element>
+# type: scalar
+163419
+
+
+
+# name: <cell-element>
+# type: scalar
+962015
+
+
+
+# name: <cell-element>
+# type: scalar
+272110
+
+
+
+# name: <cell-element>
+# type: scalar
+352636
+
+
+
+# name: <cell-element>
+# type: scalar
+1013715
+
+
+
+# name: <cell-element>
+# type: scalar
+1051312
+
+
+
+# name: <cell-element>
+# type: scalar
+5927
+
+
+
+# name: <cell-element>
+# type: scalar
+64165
+
+
+
+# name: <cell-element>
+# type: scalar
+73930
+
+
+
+# name: <cell-element>
+# type: scalar
+313100
+
+
+
+# name: <cell-element>
+# type: scalar
+739679
+
+
+
+# name: <cell-element>
+# type: scalar
+703905
+
+
+
+# name: <cell-element>
+# type: scalar
+591826
+
+
+
+# name: <cell-element>
+# type: scalar
+132327
+
+
+
+# name: <cell-element>
+# type: scalar
+1198118
+
+
+
+# name: <cell-element>
+# type: scalar
+584260
+
+
+
+# name: <cell-element>
+# type: scalar
+448462
+
+
+
+# name: <cell-element>
+# type: scalar
+1292080
+
+
+
+# name: <cell-element>
+# type: scalar
+373335
+
+
+
+# name: <cell-element>
+# type: scalar
+775527
+
+
+
+# name: <cell-element>
+# type: scalar
+761282
+
+
+
+# name: <cell-element>
+# type: scalar
+23146
+
+
+
+# name: <cell-element>
+# type: scalar
+306479
+
+
+
+# name: <cell-element>
+# type: scalar
+1240375
+
+
+
+# name: <cell-element>
+# type: scalar
+666871
+
+
+
+
+
+# name: tss_conf
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: paralogs
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: stop
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: scalar
+924727
+
+
+
+# name: <cell-element>
+# type: scalar
+408620
+
+
+
+# name: <cell-element>
+# type: scalar
+633260
+
+
+
+# name: <cell-element>
+# type: scalar
+629820
+
+
+
+# name: <cell-element>
+# type: scalar
+644903
+
+
+
+# name: <cell-element>
+# type: scalar
+389647
+
+
+
+# name: <cell-element>
+# type: scalar
+319651
+
+
+
+# name: <cell-element>
+# type: scalar
+1261426
+
+
+
+# name: <cell-element>
+# type: scalar
+47019
+
+
+
+# name: <cell-element>
+# type: scalar
+37871
+
+
+
+# name: <cell-element>
+# type: scalar
+40944
+
+
+
+# name: <cell-element>
+# type: scalar
+562424
+
+
+
+# name: <cell-element>
+# type: scalar
+816750
+
+
+
+# name: <cell-element>
+# type: scalar
+1080630
+
+
+
+# name: <cell-element>
+# type: scalar
+513624
+
+
+
+# name: <cell-element>
+# type: scalar
+909377
+
+
+
+# name: <cell-element>
+# type: scalar
+1375762
+
+
+
+# name: <cell-element>
+# type: scalar
+367341
+
+
+
+# name: <cell-element>
+# type: scalar
+130577
+
+
+
+# name: <cell-element>
+# type: scalar
+711803
+
+
+
+# name: <cell-element>
+# type: scalar
+237817
+
+
+
+# name: <cell-element>
+# type: scalar
+1220137
+
+
+
+# name: <cell-element>
+# type: scalar
+54693
+
+
+
+# name: <cell-element>
+# type: scalar
+51199
+
+
+
+# name: <cell-element>
+# type: scalar
+178401
+
+
+
+# name: <cell-element>
+# type: scalar
+418011
+
+
+
+# name: <cell-element>
+# type: scalar
+411598
+
+
+
+# name: <cell-element>
+# type: scalar
+947484
+
+
+
+# name: <cell-element>
+# type: scalar
+731558
+
+
+
+# name: <cell-element>
+# type: scalar
+920508
+
+
+
+# name: <cell-element>
+# type: scalar
+604293
+
+
+
+# name: <cell-element>
+# type: scalar
+1154652
+
+
+
+# name: <cell-element>
+# type: scalar
+232508
+
+
+
+# name: <cell-element>
+# type: scalar
+662456
+
+
+
+# name: <cell-element>
+# type: scalar
+687315
+
+
+
+# name: <cell-element>
+# type: scalar
+74097
+
+
+
+# name: <cell-element>
+# type: scalar
+937044
+
+
+
+# name: <cell-element>
+# type: scalar
+111610
+
+
+
+# name: <cell-element>
+# type: scalar
+795376
+
+
+
+# name: <cell-element>
+# type: scalar
+302315
+
+
+
+# name: <cell-element>
+# type: scalar
+295041
+
+
+
+# name: <cell-element>
+# type: scalar
+666452
+
+
+
+# name: <cell-element>
+# type: scalar
+422439
+
+
+
+# name: <cell-element>
+# type: scalar
+1362019
+
+
+
+# name: <cell-element>
+# type: scalar
+392817
+
+
+
+# name: <cell-element>
+# type: scalar
+101835
+
+
+
+# name: <cell-element>
+# type: scalar
+637263
+
+
+
+# name: <cell-element>
+# type: scalar
+352481
+
+
+
+# name: <cell-element>
+# type: scalar
+1000438
+
+
+
+# name: <cell-element>
+# type: scalar
+201776
+
+
+
+# name: <cell-element>
+# type: scalar
+198685
+
+
+
+# name: <cell-element>
+# type: scalar
+775345
+
+
+
+# name: <cell-element>
+# type: scalar
+204336
+
+
+
+# name: <cell-element>
+# type: scalar
+1143053
+
+
+
+# name: <cell-element>
+# type: scalar
+227302
+
+
+
+# name: <cell-element>
+# type: scalar
+1071047
+
+
+
+# name: <cell-element>
+# type: scalar
+1040225
+
+
+
+# name: <cell-element>
+# type: scalar
+867733
+
+
+
+# name: <cell-element>
+# type: scalar
+145685
+
+
+
+# name: <cell-element>
+# type: scalar
+864125
+
+
+
+# name: <cell-element>
+# type: scalar
+1333567
+
+
+
+# name: <cell-element>
+# type: scalar
+880158
+
+
+
+# name: <cell-element>
+# type: scalar
+981885
+
+
+
+# name: <cell-element>
+# type: scalar
+330620
+
+
+
+# name: <cell-element>
+# type: scalar
+1188517
+
+
+
+# name: <cell-element>
+# type: scalar
+951827
+
+
+
+# name: <cell-element>
+# type: scalar
+651907
+
+
+
+# name: <cell-element>
+# type: scalar
+970130
+
+
+
+# name: <cell-element>
+# type: scalar
+977761
+
+
+
+# name: <cell-element>
+# type: scalar
+182358
+
+
+
+# name: <cell-element>
+# type: scalar
+167842
+
+
+
+# name: <cell-element>
+# type: scalar
+116109
+
+
+
+# name: <cell-element>
+# type: scalar
+520438
+
+
+
+# name: <cell-element>
+# type: scalar
+810869
+
+
+
+# name: <cell-element>
+# type: scalar
+1230828
+
+
+
+# name: <cell-element>
+# type: scalar
+166240
+
+
+
+# name: <cell-element>
+# type: scalar
+966757
+
+
+
+# name: <cell-element>
+# type: scalar
+274569
+
+
+
+# name: <cell-element>
+# type: scalar
+354969
+
+
+
+# name: <cell-element>
+# type: scalar
+1017930
+
+
+
+# name: <cell-element>
+# type: scalar
+1056828
+
+
+
+# name: <cell-element>
+# type: scalar
+8737
+
+
+
+# name: <cell-element>
+# type: scalar
+67625
+
+
+
+# name: <cell-element>
+# type: scalar
+74737
+
+
+
+# name: <cell-element>
+# type: scalar
+315902
+
+
+
+# name: <cell-element>
+# type: scalar
+744185
+
+
+
+# name: <cell-element>
+# type: scalar
+706631
+
+
+
+# name: <cell-element>
+# type: scalar
+594237
+
+
+
+# name: <cell-element>
+# type: scalar
+135831
+
+
+
+# name: <cell-element>
+# type: scalar
+1201528
+
+
+
+# name: <cell-element>
+# type: scalar
+587220
+
+
+
+# name: <cell-element>
+# type: scalar
+450426
+
+
+
+# name: <cell-element>
+# type: scalar
+1293358
+
+
+
+# name: <cell-element>
+# type: scalar
+386848
+
+
+
+# name: <cell-element>
+# type: scalar
+780063
+
+
+
+# name: <cell-element>
+# type: scalar
+766159
+
+
+
+# name: <cell-element>
+# type: scalar
+31228
+
+
+
+# name: <cell-element>
+# type: scalar
+309109
+
+
+
+# name: <cell-element>
+# type: scalar
+1242122
+
+
+
+# name: <cell-element>
+# type: scalar
+669837
+
+
+
+
+
+# name: is_alt
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1
+
+
+
+
+
+# name: cdsStop_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: tss_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: is_correctly_gff3_referenced
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+
+
+# name: name2
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: splicegraph
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: polya
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: strand
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
++
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 1
+-
+
+
+
+
+
+# name: transcript_complete
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: tis_conf
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: cleave
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+924727
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+924356
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+408620
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408620
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408620
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+408620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+633260
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633260
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633260
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633260
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+633260
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+629820
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+629820
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+629820
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+642751
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+642751
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+642751
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+642751
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+387276
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+387277
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+387280
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+319645
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+319651
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1258576
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1258577
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+45295
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+45295
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+33665
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33665
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33378
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33665
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+33966
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+38751
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+38751
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+560609
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+560609
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+816750
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+816750
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1075542
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1075544
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+511764
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+511764
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+909377
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+909377
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1373233
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1373233
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+367341
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+367341
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+121123
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+121066
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+710017
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+710062
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+232840
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+232840
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1218004
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1217947
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+54686
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+54693
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+50089
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50074
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50089
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+50089
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+178401
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+178401
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+418011
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+418011
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+411598
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+411598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+947483
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947484
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947484
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+731558
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+731526
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+920508
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+920489
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+604293
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+604273
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+1148658
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148658
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148658
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1148596
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+230993
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+230993
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+661176
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+661308
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+681395
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+681395
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+681395
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+74097
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+74097
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+937044
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+937044
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+111610
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+111536
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+111598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+793352
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+793358
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+298534
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+298534
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+298534
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+295041
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+295041
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+665167
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665167
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665151
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+665167
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+422438
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+422439
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+422259
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1358916
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1358573
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+392817
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+392797
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+392812
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+101835
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+101835
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+101835
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+637263
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+637263
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+352481
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+352304
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1000438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+201776
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+201776
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+198636
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+198685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+775345
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+775345
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+204336
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1141603
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1141603
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+225664
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+225664
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1064453
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1064449
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1040225
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1040225
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+865914
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+865914
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+145651
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+145685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+860787
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+860787
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1331465
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1331573
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+877861
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+877861
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+979307
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+979307
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+979307
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+330620
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+330620
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+330620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1185549
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1185555
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+947657
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947643
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+947519
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+645091
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+645091
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+967502
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+967520
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+976096
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+977101
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+180119
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+180058
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+166588
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+166617
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+115550
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+116109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+520438
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+520438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+810691
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+810869
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1230828
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1230828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+962032
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+962015
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+352636
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+352636
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1017930
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1017930
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+1056752
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1056752
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1056828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+5927
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+6789
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+64165
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+64166
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+64166
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+73930
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+73930
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+313214
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313228
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313209
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313100
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+313228
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+744185
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+744185
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+703905
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+703905
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+594237
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+593290
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+132327
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+132329
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1201528
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1201496
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+587220
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+587220
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+448462
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+448468
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1293358
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+386848
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+386847
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+780028
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+780063
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+766154
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+766159
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+31228
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+31121
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+306479
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+306479
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1242121
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1242122
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+666871
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666871
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666871
+
+
+
+
+
+
+
+
+# name: name
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+
+
+# name: anno_id
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: polya_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: transcript_status
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 4
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 5
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 4
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 5
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 4
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 4
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 4
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 0
+ 0
+ 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 5
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1
+ 1
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 3
+ 1
+ 1
+ 1
+
+
+
+
+
+# name: gene_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+
+
+# name: <cell-element>
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: Source
+# type: sq_string
+# elements: 1
+# length: 6
+TAIR10
+
+
+# name: Type
+# type: sq_string
+# elements: 1
+# length: 4
+mrna
+
+
+# name: ID
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+
+
+
+
+# name: utr3_exons
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 924288
+ 924470
+ 924313
+ 924727
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 924288
+ 924356
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 408486
+ 408620
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 408486
+ 408620
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 408486
+ 408620
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 408486
+ 408620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 633086
+ 633260
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 633086
+ 633260
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 633086
+ 633260
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 633086
+ 633260
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 633086
+ 633260
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 629584
+ 629820
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 628996
+ 629418
+ 629580
+ 629322
+ 629495
+ 629820
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 629584
+ 629820
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 642751
+ 643062
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 642751
+ 643062
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 642751
+ 643062
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 642751
+ 643062
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 387276
+ 387478
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 387277
+ 387583
+ 387503
+ 387646
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 387280
+ 387583
+ 387503
+ 388222
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 319508
+ 319645
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 319508
+ 319651
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1258576
+ 1258759
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1258577
+ 1258759
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 45295
+ 45502
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 45295
+ 45502
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 33665
+ 33991
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 33665
+ 33991
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 33378
+ 33980
+ 33589
+ 33991
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 33665
+ 33991
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 33966
+ 33991
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 38751
+ 38897
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 38751
+ 38897
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 560609
+ 561006
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 560609
+ 561006
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 816624
+ 816750
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 816624
+ 816750
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1075542
+ 1075983
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1075544
+ 1075991
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 511764
+ 511915
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 511764
+ 511915
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 909246
+ 909377
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 909246
+ 909377
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1373233
+ 1373484
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1373233
+ 1373484
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 367150
+ 367341
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 366366
+ 366986
+ 366860
+ 367341
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 121123
+ 121492
+ 121406
+ 121581
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 121066
+ 121492
+ 121406
+ 121581
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 710017
+ 710101
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 710062
+ 710240
+ 710694
+ 710136
+ 710333
+ 710911
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 232840
+ 233187
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 232840
+ 233187
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1218004
+ 1218019
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1217947
+ 1218019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 54495
+ 54686
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 54495
+ 54693
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 50089
+ 50283
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 50074
+ 50283
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 50089
+ 50283
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 50089
+ 50283
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 178052
+ 178401
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 178052
+ 178401
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 417797
+ 418011
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 417797
+ 418011
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 411384
+ 411598
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 411362
+ 411598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947432
+ 947483
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947432
+ 947484
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947432
+ 947484
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 731380
+ 731558
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 731380
+ 731526
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 920307
+ 920508
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 920000
+ 920489
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 604135
+ 604293
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 604135
+ 604273
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1148658
+ 1148817
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1148658
+ 1148817
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1148658
+ 1148817
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1148596
+ 1148817
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 230993
+ 231163
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 230993
+ 231163
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 661176
+ 661362
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 661308
+ 661362
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 4 2
+ 681395
+ 682242
+ 682731
+ 683022
+ 681921
+ 682403
+ 682892
+ 683064
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 681395
+ 681723
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 681395
+ 681723
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 73884
+ 74097
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 73884
+ 74097
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 936793
+ 937044
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 936582
+ 937044
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 111368
+ 111610
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 111368
+ 111536
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 111368
+ 111598
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 793352
+ 793575
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 793358
+ 793575
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 298534
+ 298716
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 298534
+ 298716
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 298534
+ 298716
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 294889
+ 295041
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 294889
+ 295041
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 665167
+ 665307
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 665167
+ 665307
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 665151
+ 665249
+ 665234
+ 665307
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 665167
+ 665307
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 422155
+ 422438
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 422155
+ 422439
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 422155
+ 422259
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1358916
+ 1359086
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1358573
+ 1358781
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 392449
+ 392817
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 392294
+ 392374
+ 392576
+ 392301
+ 392496
+ 392797
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 392449
+ 392576
+ 392496
+ 392812
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 101679
+ 101835
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 101679
+ 101835
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 101679
+ 101835
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 637084
+ 637263
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 637084
+ 637263
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 352198
+ 352481
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 352198
+ 352304
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1000232
+ 1000438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 201576
+ 201776
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 201576
+ 201776
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 197974
+ 198267
+ 198184
+ 198636
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 198384
+ 198685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 775180
+ 775345
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 775180
+ 775345
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 203663
+ 204336
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1141603
+ 1141851
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1141603
+ 1141851
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 225664
+ 225985
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 225664
+ 225985
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1064453
+ 1064847
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1064449
+ 1064847
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1040046
+ 1040225
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1040046
+ 1040225
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 865914
+ 866216
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 865914
+ 866216
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 145401
+ 145651
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 145401
+ 145685
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 860787
+ 861108
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 860787
+ 861108
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1331465
+ 1331856
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1331573
+ 1331856
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 877861
+ 877947
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 877861
+ 877947
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 979307
+ 979610
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 979307
+ 979610
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 979307
+ 979610
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 330404
+ 330620
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 330404
+ 330620
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 330404
+ 330620
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1185549
+ 1185718
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1185555
+ 1185718
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947657
+ 948063
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947643
+ 947784
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 947519
+ 947554
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 645091
+ 645371
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 645091
+ 645371
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 967502
+ 967595
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 967520
+ 967595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 976096
+ 976427
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 977101
+ 977232
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 180119
+ 180400
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 180058
+ 180400
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 166588
+ 166852
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 166617
+ 166928
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 115297
+ 115550
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 115297
+ 115961
+ 115340
+ 116109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 520219
+ 520438
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 520219
+ 520438
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 810681
+ 810691
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 810681
+ 810869
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1230593
+ 1230828
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1230593
+ 1230828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 962032
+ 962127
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 962015
+ 962127
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 352636
+ 352841
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 352636
+ 353213
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1017473
+ 1017568
+ 1017482
+ 1017930
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1017473
+ 1017568
+ 1017482
+ 1017930
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1056551
+ 1056752
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1056551
+ 1056752
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1056551
+ 1056828
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 5927
+ 6436
+ 6263
+ 6914
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 6789
+ 7156
+ 7069
+ 7314
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 64165
+ 64397
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 64166
+ 64397
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 64166
+ 64397
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 73930
+ 74104
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 73930
+ 74104
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 313214
+ 313566
+ 313418
+ 313594
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 313228
+ 313594
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 313209
+ 313745
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 313100
+ 313566
+ 313452
+ 313594
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 313228
+ 313594
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 743820
+ 744185
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 743820
+ 744185
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 703905
+ 704278
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 703905
+ 704278
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 593201
+ 593866
+ 593230
+ 594237
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 593201
+ 593290
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 132327
+ 132413
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 132329
+ 132413
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1201302
+ 1201528
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1201302
+ 1201496
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 587037
+ 587220
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 587037
+ 587220
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 448462
+ 448664
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 448468
+ 448664
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1293249
+ 1293358
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 386683
+ 386848
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 386683
+ 386847
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 779864
+ 780028
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 779864
+ 780063
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 766054
+ 766154
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 3 2
+ 765092
+ 765485
+ 765753
+ 765256
+ 765601
+ 766159
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 31080
+ 31228
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 31080
+ 31121
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 306479
+ 306557
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 306479
+ 306557
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 1241376
+ 1241761
+ 1241678
+ 1242121
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 1241811
+ 1242122
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 666871
+ 667001
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 1 2
+ 666871
+ 667001
+
+
+
+# name: <cell-element>
+# type: int64 matrix
+# ndims: 2
+ 2 2
+ 666871
+ 667150
+ 667068
+ 667324
+
+
+
+
+
+
+
+
+# name: tss
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+923426
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+923426
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+404600
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404600
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404600
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+404600
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+630505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630505
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+630505
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+626741
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+626780
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+626741
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+644521
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+644903
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+644539
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+644532
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+389647
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389647
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389647
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+316187
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+316128
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1261426
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1261425
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+47019
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+47019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+37840
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37780
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37757
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37780
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+37871
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+40944
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+40927
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+562424
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+813471
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+813486
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1080630
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1080630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+513624
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+513611
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+907642
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+907651
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1375742
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1375762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+365209
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+365567
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+130570
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+130577
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+711803
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+711803
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+237817
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+237817
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1219914
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1220137
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+52869
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+51108
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+51199
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+51197
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+51187
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+175782
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+176141
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+415079
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+415079
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+410748
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+410748
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+944595
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+944572
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+944595
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+729935
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+729901
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+918299
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+918299
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+602497
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+602601
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+1154652
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1154652
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1154652
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1154596
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+232508
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+232322
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+662427
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+662456
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+687315
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+687315
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+687315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+72339
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+72357
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+933512
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+933512
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+109032
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+109076
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+108946
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+795368
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+795376
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+300729
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+300846
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+302315
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+293342
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+293342
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: int64 scalar
+666451
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666452
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666451
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+666451
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+418767
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+418767
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+418748
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1361981
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1362019
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+389812
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389821
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+389823
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+99922
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+100031
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+99894
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+635144
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+635144
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+347891
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+347974
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+996115
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+996115
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+199639
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+199791
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+195812
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+195780
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+773411
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+773411
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+202136
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+202136
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1143053
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1143051
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+227302
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+227302
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1070927
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1071047
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1036537
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1036537
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+867733
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+867674
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+143564
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+143715
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+864125
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+864075
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1333567
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1333534
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+880158
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+880158
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+981885
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+981868
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+981762
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+325379
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+325379
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+325379
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1188517
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1188276
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+951730
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+951810
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+951827
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+651907
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+651907
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+970130
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+977761
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+977761
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+182358
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+182293
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+167842
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+167842
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+114286
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+114286
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+518251
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+518254
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+807396
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+807361
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1226575
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1226575
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+966757
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+274569
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+274569
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+354969
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+354969
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1013715
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1013715
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+1051343
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1053126
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1051312
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+8737
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+8737
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+67625
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+67625
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+67625
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+74737
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+74731
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: int64 scalar
+315902
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315902
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315902
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315902
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+315902
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+739679
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+739679
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+706631
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+706630
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+591826
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+591826
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+135322
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+135831
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1198118
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1198508
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+584260
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+584260
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+450425
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+450426
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1292080
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1292111
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+373501
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+775527
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+775622
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+761282
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+761282
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+23146
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+23416
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+309109
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+309109
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: int64 scalar
+1240375
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+1240375
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: int64 scalar
+669837
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+669837
+
+
+
+# name: <cell-element>
+# type: int64 scalar
+669805
+
+
+
+
+
+
+
+
+# name: cleave_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: alias
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 0
+
+
+
+
+
+# name: cdsStop_conf
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: transcripts
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03710.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03710.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02145.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02145.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02145.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02145.4
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02850.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02850.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02850.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02850.4
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02850.5
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02840.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02840.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02840.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02880.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02880.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02880.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02880.4
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02090.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02090.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02090.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01920.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01920.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04590.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04590.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01080.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01080.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01060.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01060.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01060.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01060.4
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01060.5
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01070.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01070.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02630.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02630.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03310.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03310.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04140.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04140.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02470.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02470.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03630.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03630.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04870.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04870.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02065.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02065.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01320.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01320.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03055.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03055.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01650.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01650.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04490.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04490.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01110.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01110.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01100.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01100.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01100.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01100.4
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01480.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01480.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02190.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02190.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02160.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02160.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03770.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03770.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03770.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03070.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03070.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03687.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03687.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02750.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02750.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04300.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04300.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04300.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04300.4
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01640.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01640.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02930.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02930.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02990.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02990.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02990.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01160.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01160.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03740.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03740.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01260.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01260.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01260.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03250.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03250.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01830.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01830.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01830.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01800.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01800.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 4
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02950.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02950.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02950.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02950.4
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02205.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02205.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02205.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04830.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04830.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02100.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02100.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02100.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01240.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01240.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01240.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02860.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02860.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02010.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02010.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03910.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03910.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01550.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01550.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01540.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01540.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03180.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03180.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01560.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01560.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04270.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04270.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01620.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01620.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04120.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04120.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04020.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04020.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03470.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03470.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01370.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01370.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03457.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03457.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04750.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04750.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03520.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03520.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03860.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03860.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03860.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01950.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01950.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01950.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04400.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04400.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03780.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03780.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03780.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02890.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02890.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03840.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03840.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03850.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03850.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01490.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01490.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01453.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01453.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01290.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01290.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02500.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02500.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03290.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03290.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04510.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04510.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01448.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01448.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01448.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03830.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03830.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01740.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01740.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02020.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02020.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03960.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03960.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04080.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04080.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04080.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01020.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01020.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01140.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01140.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01140.3
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01170.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01170.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 5
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01910.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01910.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01910.3
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01910.4
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01910.5
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03090.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03090.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03040.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03040.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02720.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02720.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01340.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01340.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04430.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04430.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02690.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02690.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02280.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02280.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04640.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04640.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02080.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02080.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03190.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03190.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03160.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G03160.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01040.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01040.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01880.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G01880.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04550.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G04550.2
+
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 3
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02960.1
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02960.2
+
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 22
+Transcript:AT1G02960.3
+
+
+
+
+
+
+
+
+# name: tis_info
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: is_complete
+# type: cell
+# rows: 1
+# columns: 100
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/temp/P_values_parametric_1_of_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,9220 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:09:05 2013 UTC <galaxy@ip-10-149-27-54>
+# name: P_VALS
+# type: cell
+# rows: 100
+# columns: 13
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.7047729843942587,-9.73850375123872e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.3705449381485693,1.677059346567052e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.918497571678391,-4.568323201191496e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.642854152579879,9.942184031800466e-17)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.4922809248686352,5.485533540867573e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.9385743830391379
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.7054088455437573
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.113304852690962,3.38225312755561e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.0038788161331,1.152115268329668e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.947317223954005
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.02135850768652236,4.753432657198431e-17)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.5791406578880098,-7.708760860713319e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.057089661928465,-4.427234198598591e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6453190760569992,1.043837261250798e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.7357372780348108,-1.095735319843118e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.9237601550574732,1.713789943960052e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.767165525700738,-1.234610369369174e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+4.733153512704381e-05
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.1381731365332209
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.3410169697616848,6.640923521476997e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.3478644639848191,1.252777391262935e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.727160462831534,1.430834775674686e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.1289854038874585,-5.894720875992708e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6331347547781632,1.922681477268144e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.03266479630873597,4.699736525303829e-17)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.050231726111515,1.066766662127094e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.7973252676447815,5.515825929923917e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6990470152239037,2.610556697805914e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.508657102800845,-6.332532825488345e-17)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.8063133321747236,-1.493401601358682e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.02422042857573552
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(2.024951360592971,2.078508346766493e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.018817736833879,-1.578854622740564e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.864139427797046e-07
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.4684635380390317,5.582603528881181e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.5345321275249729
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.647690677889673
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(2.510786657990783,2.851556853399991e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.1488054826367799,-3.372369109797543e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.3160357848108884,5.739306240942715e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6006494402856356,6.604713198652876e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.2206668514722223,4.079733062121578e-32)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.379227011647324,-5.024537404627736e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.272510351200648
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.013350767640418,-2.659564357089667e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(7.359682858203913e-12,6.800570340485306e-26)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.1571745622517608,9.063207877473611e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.11761365246367
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.3810041993497219
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.2858563672864881,-2.036574573230061e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.893573657003726,2.470680030061977e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.79626356820493e-13,-1.83121068610146e-27)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.161804861716175
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.4817309794088154,-2.401604383994638e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.5294944988264448,1.955138744187521e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.4188404983527704,-1.392072463350567e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.7113873575361785
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.7838498840472755,-1.028686092536447e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.6071680630402591
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.3174783739752697,-4.047816345598962e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.295518022721592
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.4991233928132521
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.5518342912781777,-9.28970976084131e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(2.065173090528356e-11,-1.505285969339228e-25)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.5699434226476526
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.2112433269989617,-1.410100160619634e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.160076089575085,-1.694425421465041e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.8467078213522625
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.027884007211025
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.264537156030193,-1.529309998039481e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.8152514058824051
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.8584975666650115
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.862175792711852e-58,1.101823575364413e-72)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.396285322930226
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6237436048886749,-2.024294364786824e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(2.770987365952102,7.589481242719728e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.461835108035119,1.155071010589339e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.001490213892088538
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.06067987214901,2.109849114402975e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.6645365643365709,-1.980421125023491e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.2899092350729878,3.855778010963484e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.772581546858259e-99
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(2.166970056302482,-3.989057958724343e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.1993439983717951,4.474592521751872e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.69458154950562,9.733575690741299e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.5989808096668001,1.303653035845813e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.437664385062097,2.749178136149656e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.568590524905402,-1.009636639171317e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.06753664571692257,-7.904136335963237e-17)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.489858560874365
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(9.559873530617703e-37,4.428698857960225e-51)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.371798997300066e-07,5.99278547956655e-23)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.2592391518189411,1.560498911070718e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(0.4246691533857037,7.481014443596152e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(3.079783698282814e-21,-1.220984617533035e-35)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+0.4508449354715666
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: scalar
+1.417848697388566
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.49852469712957,1.038758426555662e-15)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.096275305294062,7.538162171839681e-16)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 2
+# name: <cell-element>
+# type: complex scalar
+(1.455786913083531,-1.589446255009013e-31)
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/temp/example_condition_A_replicate_1.bam_1_of_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,5808 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:05:21 2013 UTC <galaxy@ip-10-149-27-54>
+# name: COUNTS
+# type: cell
+# rows: 100
+# columns: 1
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+# name: <cell-element>
+# type: scalar
+957
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 813
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 129
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+# name: <cell-element>
+# type: scalar
+2385
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1561
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 6 24 79 33 130 552
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+# name: <cell-element>
+# type: scalar
+902
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 789
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 1 15 12 15 22 1 9 38
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+# name: <cell-element>
+# type: scalar
+1307
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1039
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 27 113 2 101 25
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+# name: <cell-element>
+# type: scalar
+1144
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 851
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 11 0 5 59 40 89 33 56
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8158
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 1086 121 322 89 224
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+# name: <cell-element>
+# type: scalar
+3090
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2708
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 216 166
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+# name: <cell-element>
+# type: scalar
+3154
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2992
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 82 80
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+# name: <cell-element>
+# type: scalar
+1283
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1213
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 28
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7436
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 130 56 235 347 71 141 1036 149 183 216
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+# name: <cell-element>
+# type: scalar
+3234
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2831
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 341 62
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+# name: <cell-element>
+# type: scalar
+782
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 716
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 19 47
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+# name: <cell-element>
+# type: scalar
+1778
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1708
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 39 31
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+# name: <cell-element>
+# type: scalar
+3311
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3220
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 47 44
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+# name: <cell-element>
+# type: scalar
+700
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 643
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 31 26
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+# name: <cell-element>
+# type: scalar
+1455
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1330
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 50 75
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+# name: <cell-element>
+# type: scalar
+809
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 763
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 30 16
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+# name: <cell-element>
+# type: scalar
+2269
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1546
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 142 581
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9632
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 256 112
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+# name: <cell-element>
+# type: scalar
+922
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 738
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 80 104
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+# name: <cell-element>
+# type: scalar
+323
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 302
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 14 7
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+# name: <cell-element>
+# type: scalar
+1131
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1050
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 79 2
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+# name: <cell-element>
+# type: scalar
+4305
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3205
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 1079 21
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+# name: <cell-element>
+# type: scalar
+1732
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1182
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 33 60 59 170 21 207
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+# name: <cell-element>
+# type: scalar
+1378
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1172
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 12 194
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+# name: <cell-element>
+# type: scalar
+1117
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1089
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 18 10
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+# name: <cell-element>
+# type: scalar
+372
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 318
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 54
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+# name: <cell-element>
+# type: scalar
+3971
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3510
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 161 162 39 99
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+# name: <cell-element>
+# type: scalar
+723
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 584
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 134 5
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+# name: <cell-element>
+# type: scalar
+1919
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1744
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 132 43
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+# name: <cell-element>
+# type: scalar
+1293
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1042
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 48 203
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+# name: <cell-element>
+# type: scalar
+1792
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1585
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 31 7 57 8 17 3 20 64
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+# name: <cell-element>
+# type: scalar
+1937
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1688
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 70 179
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+# name: <cell-element>
+# type: scalar
+1126
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 935
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 85 106
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+# name: <cell-element>
+# type: scalar
+1832
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1760
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 23 20 20 9
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+# name: <cell-element>
+# type: scalar
+2291
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1923
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 162 206
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+# name: <cell-element>
+# type: scalar
+9319
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8906
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 360 53
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+# name: <cell-element>
+# type: scalar
+1394
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1239
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 29 13 31 82
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+# name: <cell-element>
+# type: scalar
+1208
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1109
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 55
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+# name: <cell-element>
+# type: scalar
+217
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 195
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 9 1 8 4
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+# name: <cell-element>
+# type: scalar
+3298
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3102
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 160 36
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+# name: <cell-element>
+# type: scalar
+1393
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1011
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 0 51 51 68 118 94
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+# name: <cell-element>
+# type: scalar
+1488
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1243
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 15 29 59 142
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+# name: <cell-element>
+# type: scalar
+4250
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3418
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 494 338
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+# name: <cell-element>
+# type: scalar
+838
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 725
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 7 30 39 36 1
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+# name: <cell-element>
+# type: scalar
+847
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 682
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 39 31 64 12 19
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+# name: <cell-element>
+# type: scalar
+2206
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2104
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 61 41
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9219
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 201 580
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8833
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 1036 131
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+# name: <cell-element>
+# type: scalar
+1179
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1059
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 61 59
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+# name: <cell-element>
+# type: scalar
+3457
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3129
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 276 52
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+# name: <cell-element>
+# type: scalar
+1177
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 972
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 167 38
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+# name: <cell-element>
+# type: scalar
+2010
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1551
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 110 349
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+# name: <cell-element>
+# type: scalar
+887
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 801
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 12 74
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+# name: <cell-element>
+# type: scalar
+1662
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1558
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 53 51
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+# name: <cell-element>
+# type: scalar
+1289
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1240
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 35 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+# name: <cell-element>
+# type: scalar
+4901
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4645
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 39 217
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+# name: <cell-element>
+# type: scalar
+4017
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3784
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 107 126
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+# name: <cell-element>
+# type: scalar
+7512
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 6368
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 443 701
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+# name: <cell-element>
+# type: scalar
+1525
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1430
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 65 30
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+# name: <cell-element>
+# type: scalar
+2330
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1874
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 56 400
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+# name: <cell-element>
+# type: scalar
+2037
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1579
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 414
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+# name: <cell-element>
+# type: scalar
+2559
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2054
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 148 155 5 73 124
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+# name: <cell-element>
+# type: scalar
+2422
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2340
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 0 0 46 36
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+# name: <cell-element>
+# type: scalar
+2478
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2225
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 103 150
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+# name: <cell-element>
+# type: scalar
+1073
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 723
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 12 81 159 98
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+# name: <cell-element>
+# type: scalar
+502
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 488
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 6 8
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9629
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 371 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+# name: <cell-element>
+# type: scalar
+1166
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 643
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 196 327
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+# name: <cell-element>
+# type: scalar
+1346
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1134
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 55 157
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+# name: <cell-element>
+# type: scalar
+2243
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1885
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 158 200
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+# name: <cell-element>
+# type: scalar
+756
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 610
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 146
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9532
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 185 283
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+# name: <cell-element>
+# type: scalar
+1578
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1274
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 289 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+# name: <cell-element>
+# type: scalar
+1245
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1189
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 33 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+# name: <cell-element>
+# type: scalar
+292
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 106
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 5 39 1 108 10 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+# name: <cell-element>
+# type: scalar
+305
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 289
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 1
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9487
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 305 208
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+# name: <cell-element>
+# type: scalar
+1890
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1778
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 81 31
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+# name: <cell-element>
+# type: scalar
+1461
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1338
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 79
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+# name: <cell-element>
+# type: scalar
+1415
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 988
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 94 31 284 18
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+# name: <cell-element>
+# type: scalar
+2682
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1291
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 1391
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+# name: <cell-element>
+# type: scalar
+1058
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 964
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 13 18 0 34 29
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+# name: <cell-element>
+# type: scalar
+1101
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 863
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 136 102
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+# name: <cell-element>
+# type: scalar
+1498
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 986
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 14 38 22 21 147 48 3 17 54 148
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+# name: <cell-element>
+# type: scalar
+1451
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1399
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 27 25
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+# name: <cell-element>
+# type: scalar
+1412
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1329
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 35 48
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+# name: <cell-element>
+# type: scalar
+4153
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3690
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 110 353
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+# name: <cell-element>
+# type: scalar
+2167
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1958
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 120 89
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8949
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 662 389
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+# name: <cell-element>
+# type: scalar
+9898
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9612
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 137 149
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+# name: <cell-element>
+# type: scalar
+1335
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1175
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 160
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+# name: <cell-element>
+# type: scalar
+308
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 211
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 51 46
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+# name: <cell-element>
+# type: scalar
+1519
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1441
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 55 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+# name: <cell-element>
+# type: scalar
+1078
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 957
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 70 51
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9652
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 224 124
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8975
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 27 998
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+# name: <cell-element>
+# type: scalar
+2563
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2482
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 53 28
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+# name: <cell-element>
+# type: scalar
+2164
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1829
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 140 195
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+# name: <cell-element>
+# type: scalar
+3974
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3527
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 117 75 1 108 146
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/temp/example_condition_A_replicate_2.bam_1_of_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,5808 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:06:35 2013 UTC <galaxy@ip-10-149-27-54>
+# name: COUNTS
+# type: cell
+# rows: 100
+# columns: 1
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+# name: <cell-element>
+# type: scalar
+844
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 692
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 28 124
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+# name: <cell-element>
+# type: scalar
+2458
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1575
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 7 15 73 31 116 641
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+# name: <cell-element>
+# type: scalar
+932
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 825
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 1 12 15 9 16 7 5 42
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+# name: <cell-element>
+# type: scalar
+1551
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1238
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 32 106 5 147 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+# name: <cell-element>
+# type: scalar
+1110
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 831
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 9 0 2 48 29 119 26 46
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8163
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 1006 122 354 104 251
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+# name: <cell-element>
+# type: scalar
+3109
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2707
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 217 185
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+# name: <cell-element>
+# type: scalar
+3123
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2959
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 94 70
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+# name: <cell-element>
+# type: scalar
+1403
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1318
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 51 34
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7383
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 130 62 237 392 78 146 1009 165 200 198
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+# name: <cell-element>
+# type: scalar
+3046
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2664
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 322 60
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+# name: <cell-element>
+# type: scalar
+864
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 767
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 24 73
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+# name: <cell-element>
+# type: scalar
+2089
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2009
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 43 37
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+# name: <cell-element>
+# type: scalar
+3436
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3375
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 26 35
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+# name: <cell-element>
+# type: scalar
+787
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 716
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 40 31
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+# name: <cell-element>
+# type: scalar
+1484
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1369
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 71
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+# name: <cell-element>
+# type: scalar
+836
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 784
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 38 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+# name: <cell-element>
+# type: scalar
+2417
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1714
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 138 565
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9650
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 204 146
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+# name: <cell-element>
+# type: scalar
+843
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 686
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 91 66
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+# name: <cell-element>
+# type: scalar
+333
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 313
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 18 2
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+# name: <cell-element>
+# type: scalar
+1080
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 974
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 103 3
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+# name: <cell-element>
+# type: scalar
+3903
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2920
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 958 25
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+# name: <cell-element>
+# type: scalar
+1535
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1046
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 30 50 56 130 16 207
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+# name: <cell-element>
+# type: scalar
+1520
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1293
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 212
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+# name: <cell-element>
+# type: scalar
+1390
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1337
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 22 31
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+# name: <cell-element>
+# type: scalar
+395
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 331
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 64
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+# name: <cell-element>
+# type: scalar
+4033
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3567
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 151 163 46 106
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+# name: <cell-element>
+# type: scalar
+732
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 603
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 125 4
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+# name: <cell-element>
+# type: scalar
+1895
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1730
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 126 39
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+# name: <cell-element>
+# type: scalar
+1338
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1080
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 64 194
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+# name: <cell-element>
+# type: scalar
+1912
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1689
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 30 7 65 6 8 4 20 83
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+# name: <cell-element>
+# type: scalar
+2184
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1925
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 62 197
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+# name: <cell-element>
+# type: scalar
+1092
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 885
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 115 92
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+# name: <cell-element>
+# type: scalar
+1817
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1740
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 24 14 25 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+# name: <cell-element>
+# type: scalar
+2432
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2043
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 168 221
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+# name: <cell-element>
+# type: scalar
+8998
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8614
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 340 44
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+# name: <cell-element>
+# type: scalar
+1402
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1268
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 39 15 33 47
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+# name: <cell-element>
+# type: scalar
+1295
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1156
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 51 88
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+# name: <cell-element>
+# type: scalar
+253
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 233
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 12 2 5 1
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+# name: <cell-element>
+# type: scalar
+3076
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2858
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 161 57
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+# name: <cell-element>
+# type: scalar
+1518
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1050
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 0 55 40 85 160 128
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+# name: <cell-element>
+# type: scalar
+1487
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1242
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 21 29 70 125
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+# name: <cell-element>
+# type: scalar
+4600
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3642
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 551 407
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+# name: <cell-element>
+# type: scalar
+938
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 804
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 16 35 40 43 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+# name: <cell-element>
+# type: scalar
+999
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 785
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 51 34 85 17 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+# name: <cell-element>
+# type: scalar
+2139
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2039
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 73 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9133
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 205 662
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8880
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 997 123
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+# name: <cell-element>
+# type: scalar
+1083
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 963
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 64 56
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+# name: <cell-element>
+# type: scalar
+3582
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3237
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 269 76
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+# name: <cell-element>
+# type: scalar
+1187
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 959
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 189 39
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+# name: <cell-element>
+# type: scalar
+2079
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1680
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 106 293
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+# name: <cell-element>
+# type: scalar
+722
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 647
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 60
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+# name: <cell-element>
+# type: scalar
+1636
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1532
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 53 51
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+# name: <cell-element>
+# type: scalar
+1357
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1293
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 50 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+# name: <cell-element>
+# type: scalar
+5037
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4770
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 225
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+# name: <cell-element>
+# type: scalar
+3533
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3331
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 97 105
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+# name: <cell-element>
+# type: scalar
+7443
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 6271
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 407 765
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+# name: <cell-element>
+# type: scalar
+1422
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1321
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 75 26
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+# name: <cell-element>
+# type: scalar
+2492
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1901
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 67 524
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+# name: <cell-element>
+# type: scalar
+1774
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1372
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 360
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+# name: <cell-element>
+# type: scalar
+2492
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2031
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 120 135 3 80 123
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+# name: <cell-element>
+# type: scalar
+2415
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2328
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 0 0 50 37
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+# name: <cell-element>
+# type: scalar
+2730
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2455
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 130 145
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+# name: <cell-element>
+# type: scalar
+1274
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 867
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 19 101 183 104
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+# name: <cell-element>
+# type: scalar
+543
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 529
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 6 8
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9544
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 456 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+# name: <cell-element>
+# type: scalar
+1300
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 733
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 249 318
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+# name: <cell-element>
+# type: scalar
+1481
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1189
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 53 239
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+# name: <cell-element>
+# type: scalar
+2568
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2200
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 167 201
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+# name: <cell-element>
+# type: scalar
+655
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 521
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 134
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9520
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 214 266
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+# name: <cell-element>
+# type: scalar
+1713
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1389
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 314 10
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+# name: <cell-element>
+# type: scalar
+1203
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1148
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 35 20
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+# name: <cell-element>
+# type: scalar
+353
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 117
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 8 61 1 135 6 25
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+# name: <cell-element>
+# type: scalar
+337
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 311
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 21 5
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9483
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 309 208
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+# name: <cell-element>
+# type: scalar
+1904
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1799
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 84 21
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+# name: <cell-element>
+# type: scalar
+1436
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1332
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 60
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+# name: <cell-element>
+# type: scalar
+1444
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 980
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 107 32 310 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+# name: <cell-element>
+# type: scalar
+2593
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1297
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 1296
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+# name: <cell-element>
+# type: scalar
+1031
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 949
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 19 12 0 22 29
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+# name: <cell-element>
+# type: scalar
+1115
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 875
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 136 104
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+# name: <cell-element>
+# type: scalar
+1435
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 925
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 17 35 31 16 131 50 5 19 44 162
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+# name: <cell-element>
+# type: scalar
+1468
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1409
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 36 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+# name: <cell-element>
+# type: scalar
+1554
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1480
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 27 47
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+# name: <cell-element>
+# type: scalar
+4674
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4179
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 102 393
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+# name: <cell-element>
+# type: scalar
+2301
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2105
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 105 91
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8909
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 716 375
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+# name: <cell-element>
+# type: scalar
+9578
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9249
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 146 183
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+# name: <cell-element>
+# type: scalar
+1386
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1219
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 167
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+# name: <cell-element>
+# type: scalar
+273
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 184
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 41 48
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+# name: <cell-element>
+# type: scalar
+1540
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1465
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 33
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+# name: <cell-element>
+# type: scalar
+1119
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1008
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 70 41
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9655
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 225 120
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9038
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 30 932
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+# name: <cell-element>
+# type: scalar
+2539
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2440
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 62 37
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+# name: <cell-element>
+# type: scalar
+2160
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1837
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 129 194
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+# name: <cell-element>
+# type: scalar
+4052
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3572
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 131 92 0 106 151
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/temp/example_condition_B_replicate_1.bam_1_of_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,5808 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:07:50 2013 UTC <galaxy@ip-10-149-27-54>
+# name: COUNTS
+# type: cell
+# rows: 100
+# columns: 1
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+# name: <cell-element>
+# type: scalar
+458
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 381
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 17 60
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+# name: <cell-element>
+# type: scalar
+1735
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1120
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 7 28 46 21 99 414
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+# name: <cell-element>
+# type: scalar
+2074
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1845
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 3 22 30 35 43 9 8 79
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+# name: <cell-element>
+# type: scalar
+1160
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 934
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 26 81 5 93 21
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+# name: <cell-element>
+# type: scalar
+1130
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 866
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 10 0 3 48 26 116 25 36
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8135
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 1029 131 374 101 230
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+# name: <cell-element>
+# type: scalar
+2191
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1926
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 137 128
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+# name: <cell-element>
+# type: scalar
+2898
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2746
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 92 60
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+# name: <cell-element>
+# type: scalar
+882
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 832
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 32 18
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7439
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 128 51 288 318 77 157 1015 142 186 199
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+# name: <cell-element>
+# type: scalar
+2231
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1968
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 198 65
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+# name: <cell-element>
+# type: scalar
+728
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 662
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 23 43
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+# name: <cell-element>
+# type: scalar
+984
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 947
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 21 16
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+# name: <cell-element>
+# type: scalar
+1477
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1436
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 26 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+# name: <cell-element>
+# type: scalar
+570
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 515
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 25 30
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+# name: <cell-element>
+# type: scalar
+1308
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1212
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 37 59
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+# name: <cell-element>
+# type: scalar
+779
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 739
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 30 10
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+# name: <cell-element>
+# type: scalar
+2119
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1448
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 238 433
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9666
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 186 148
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+# name: <cell-element>
+# type: scalar
+603
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 509
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 49 45
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+# name: <cell-element>
+# type: scalar
+1699
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1622
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 58 19
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+# name: <cell-element>
+# type: scalar
+670
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 619
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 49 2
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+# name: <cell-element>
+# type: scalar
+2448
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1821
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 600 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+# name: <cell-element>
+# type: scalar
+1249
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 875
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 32 40 35 107 13 147
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+# name: <cell-element>
+# type: scalar
+1213
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1017
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 5 191
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+# name: <cell-element>
+# type: scalar
+1614
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1551
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 25 38
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+# name: <cell-element>
+# type: scalar
+224
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 193
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 31
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+# name: <cell-element>
+# type: scalar
+3312
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2935
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 124 139 26 88
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+# name: <cell-element>
+# type: scalar
+1127
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 924
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 195 8
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+# name: <cell-element>
+# type: scalar
+1629
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1479
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 106 44
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+# name: <cell-element>
+# type: scalar
+1289
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1013
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 40 236
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+# name: <cell-element>
+# type: scalar
+1444
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1292
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 13 10 47 6 7 1 12 56
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+# name: <cell-element>
+# type: scalar
+956
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 856
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 31 69
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+# name: <cell-element>
+# type: scalar
+976
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 757
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 34 185
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+# name: <cell-element>
+# type: scalar
+1716
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1645
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 27 25 12 7
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+# name: <cell-element>
+# type: scalar
+2076
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1753
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 164 159
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+# name: <cell-element>
+# type: scalar
+6263
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 5990
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 239 34
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+# name: <cell-element>
+# type: scalar
+906
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 816
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 24 10 13 43
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+# name: <cell-element>
+# type: scalar
+1095
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 986
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 29 80
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9279
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 390 21 175 135
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+# name: <cell-element>
+# type: scalar
+1719
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1612
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 88 19
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+# name: <cell-element>
+# type: scalar
+803
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 562
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 2 27 29 44 80 59
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+# name: <cell-element>
+# type: scalar
+1046
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 859
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 8 19 51 109
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+# name: <cell-element>
+# type: scalar
+4120
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3337
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 432 351
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+# name: <cell-element>
+# type: scalar
+708
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 615
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 11 32 21 29 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+# name: <cell-element>
+# type: scalar
+671
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 573
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 28 37 12 21
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+# name: <cell-element>
+# type: scalar
+4071
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3879
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 101 91
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9126
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 202 672
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8955
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 912 133
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+# name: <cell-element>
+# type: scalar
+436
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 393
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 27 16
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+# name: <cell-element>
+# type: scalar
+4011
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3596
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 328 87
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+# name: <cell-element>
+# type: scalar
+959
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 871
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 54 34
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+# name: <cell-element>
+# type: scalar
+1553
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1223
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 67 263
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+# name: <cell-element>
+# type: scalar
+447
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 414
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 6 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+# name: <cell-element>
+# type: scalar
+1709
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1606
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 65 38
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+# name: <cell-element>
+# type: scalar
+1059
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1020
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 25 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9414
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 98 488
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+# name: <cell-element>
+# type: scalar
+2956
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2804
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 81 71
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+# name: <cell-element>
+# type: scalar
+6924
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 5848
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 347 729
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+# name: <cell-element>
+# type: scalar
+1068
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1001
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 50 17
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+# name: <cell-element>
+# type: scalar
+1051
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 820
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 32 199
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+# name: <cell-element>
+# type: scalar
+1814
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1413
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 41 360
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+# name: <cell-element>
+# type: scalar
+1994
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1624
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 84 127 3 47 109
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+# name: <cell-element>
+# type: scalar
+2067
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1990
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 34 13 10 20
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+# name: <cell-element>
+# type: scalar
+4504
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4067
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 171 266
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+# name: <cell-element>
+# type: scalar
+1157
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 798
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 19 120 135 85
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+# name: <cell-element>
+# type: scalar
+1268
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1242
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 11 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9589
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 411 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+# name: <cell-element>
+# type: scalar
+928
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 523
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 181 224
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+# name: <cell-element>
+# type: scalar
+894
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 733
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 33 128
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+# name: <cell-element>
+# type: scalar
+2035
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1741
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 145 149
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+# name: <cell-element>
+# type: scalar
+569
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 468
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 101
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9548
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 452
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+# name: <cell-element>
+# type: scalar
+1193
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 970
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 217 6
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+# name: <cell-element>
+# type: scalar
+750
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 725
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 16 9
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+# name: <cell-element>
+# type: scalar
+1808
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 626
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 30 249 4 735 42 122
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+# name: <cell-element>
+# type: scalar
+1712
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1574
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 125 13
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+# name: <cell-element>
+# type: scalar
+8471
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8058
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 188 225
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+# name: <cell-element>
+# type: scalar
+988
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 943
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 36 9
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+# name: <cell-element>
+# type: scalar
+4637
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4261
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 178 198
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+# name: <cell-element>
+# type: scalar
+1260
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 874
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 106 17 248 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+# name: <cell-element>
+# type: scalar
+1691
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1206
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 295 190
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+# name: <cell-element>
+# type: scalar
+1290
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1188
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 20 12 0 38 32
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+# name: <cell-element>
+# type: scalar
+205
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 163
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+# name: <cell-element>
+# type: scalar
+1177
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 798
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 18 28 11 16 108 26 5 10 44 113
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+# name: <cell-element>
+# type: scalar
+847
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 823
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 9
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+# name: <cell-element>
+# type: scalar
+1075
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1016
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 24 35
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+# name: <cell-element>
+# type: scalar
+3873
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3449
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 85 339
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+# name: <cell-element>
+# type: scalar
+1826
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1678
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 68 80
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8982
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 663 355
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+# name: <cell-element>
+# type: scalar
+7417
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7161
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 256
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+# name: <cell-element>
+# type: scalar
+850
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 773
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 21 56
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+# name: <cell-element>
+# type: scalar
+1611
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1115
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 294 202
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+# name: <cell-element>
+# type: scalar
+1029
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 973
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 27 29
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+# name: <cell-element>
+# type: scalar
+1014
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 929
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 85
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9688
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 218 94
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8957
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 21 1022
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+# name: <cell-element>
+# type: scalar
+2156
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2084
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 28
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+# name: <cell-element>
+# type: scalar
+971
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 817
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 76 78
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+# name: <cell-element>
+# type: scalar
+3242
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2852
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 119 51 2 91 127
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/temp/example_condition_B_replicate_2.bam_1_of_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,5808 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:09:04 2013 UTC <galaxy@ip-10-149-27-54>
+# name: COUNTS
+# type: cell
+# rows: 100
+# columns: 1
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03710
+
+
+
+# name: <cell-element>
+# type: scalar
+507
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 435
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 14 58
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02145
+
+
+
+# name: <cell-element>
+# type: scalar
+1764
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1091
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 2 22 50 27 101 471
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02850
+
+
+
+# name: <cell-element>
+# type: scalar
+2409
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2126
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 4 25 40 37 60 8 17 92
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02840
+
+
+
+# name: <cell-element>
+# type: scalar
+1146
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 926
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 25 76 7 96 16
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02880
+
+
+
+# name: <cell-element>
+# type: scalar
+1109
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 856
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 4 1 3 41 26 115 31 32
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02090
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8135
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 1043 161 326 114 221
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01920
+
+
+
+# name: <cell-element>
+# type: scalar
+2224
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1895
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 207 122
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04590
+
+
+
+# name: <cell-element>
+# type: scalar
+2718
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2547
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 118 53
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01080
+
+
+
+# name: <cell-element>
+# type: scalar
+863
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 826
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 23 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01060
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7381
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 126 55 252 367 80 182 996 159 210 192
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01070
+
+
+
+# name: <cell-element>
+# type: scalar
+1934
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1714
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 158 62
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02630
+
+
+
+# name: <cell-element>
+# type: scalar
+663
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 603
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 22 38
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03310
+
+
+
+# name: <cell-element>
+# type: scalar
+1104
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1061
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 16 27
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04140
+
+
+
+# name: <cell-element>
+# type: scalar
+1138
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1113
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 11 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02470
+
+
+
+# name: <cell-element>
+# type: scalar
+568
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 525
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 19 24
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03630
+
+
+
+# name: <cell-element>
+# type: scalar
+1132
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1041
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 47
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04870
+
+
+
+# name: <cell-element>
+# type: scalar
+840
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 805
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 25 10
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02065
+
+
+
+# name: <cell-element>
+# type: scalar
+2046
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1467
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 175 404
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01320
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9662
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 189 149
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03055
+
+
+
+# name: <cell-element>
+# type: scalar
+661
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 520
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 92 49
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01650
+
+
+
+# name: <cell-element>
+# type: scalar
+1562
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1489
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 50 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04490
+
+
+
+# name: <cell-element>
+# type: scalar
+700
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 631
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 67 2
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01110
+
+
+
+# name: <cell-element>
+# type: scalar
+2500
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1857
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 625 18
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01100
+
+
+
+# name: <cell-element>
+# type: scalar
+1268
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 872
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 34 51 29 102 18 162
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01480
+
+
+
+# name: <cell-element>
+# type: scalar
+1169
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 974
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 1 194
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02190
+
+
+
+# name: <cell-element>
+# type: scalar
+1440
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1400
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 19 21
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02160
+
+
+
+# name: <cell-element>
+# type: scalar
+170
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 146
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 24
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03770
+
+
+
+# name: <cell-element>
+# type: scalar
+3289
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2910
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 140 142 25 72
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03070
+
+
+
+# name: <cell-element>
+# type: scalar
+955
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 778
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 173 4
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03687
+
+
+
+# name: <cell-element>
+# type: scalar
+1627
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1476
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 111 40
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02750
+
+
+
+# name: <cell-element>
+# type: scalar
+1399
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1061
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 43 295
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04300
+
+
+
+# name: <cell-element>
+# type: scalar
+1562
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1405
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 8
+ 23 6 45 4 6 2 20 51
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01640
+
+
+
+# name: <cell-element>
+# type: scalar
+877
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 766
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 31 80
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02930
+
+
+
+# name: <cell-element>
+# type: scalar
+942
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 736
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 43 163
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02990
+
+
+
+# name: <cell-element>
+# type: scalar
+1616
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1544
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 22 25 17 8
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01160
+
+
+
+# name: <cell-element>
+# type: scalar
+2101
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1774
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 155 172
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03740
+
+
+
+# name: <cell-element>
+# type: scalar
+5558
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 5325
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 201 32
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01260
+
+
+
+# name: <cell-element>
+# type: scalar
+897
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 805
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 20 8 23 41
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03250
+
+
+
+# name: <cell-element>
+# type: scalar
+1067
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 970
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 26 71
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01830
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9292
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 369 18 180 141
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01800
+
+
+
+# name: <cell-element>
+# type: scalar
+1718
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1623
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 77 18
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02950
+
+
+
+# name: <cell-element>
+# type: scalar
+804
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 568
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 3 27 31 32 88 55
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02205
+
+
+
+# name: <cell-element>
+# type: scalar
+1027
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 853
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 12 16 41 105
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04830
+
+
+
+# name: <cell-element>
+# type: scalar
+3996
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3199
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 490 307
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02100
+
+
+
+# name: <cell-element>
+# type: scalar
+628
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 518
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 18 27 31 32 2
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01240
+
+
+
+# name: <cell-element>
+# type: scalar
+632
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 532
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 19 49 9 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02860
+
+
+
+# name: <cell-element>
+# type: scalar
+3992
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3795
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 109 88
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02010
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9172
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 201 627
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03910
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8898
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 954 148
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01550
+
+
+
+# name: <cell-element>
+# type: scalar
+491
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 440
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 36 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01540
+
+
+
+# name: <cell-element>
+# type: scalar
+3609
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3269
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 270 70
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03180
+
+
+
+# name: <cell-element>
+# type: scalar
+1063
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 977
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 44
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01560
+
+
+
+# name: <cell-element>
+# type: scalar
+1353
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1059
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 73 221
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04270
+
+
+
+# name: <cell-element>
+# type: scalar
+486
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 446
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 8 32
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01620
+
+
+
+# name: <cell-element>
+# type: scalar
+1554
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1451
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 61 42
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04120
+
+
+
+# name: <cell-element>
+# type: scalar
+920
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 887
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 23 10
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04020
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9441
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 72 487
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03470
+
+
+
+# name: <cell-element>
+# type: scalar
+2843
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2685
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 73 85
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01370
+
+
+
+# name: <cell-element>
+# type: scalar
+7402
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 6231
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 394 777
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03457
+
+
+
+# name: <cell-element>
+# type: scalar
+1058
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1005
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 44 9
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04750
+
+
+
+# name: <cell-element>
+# type: scalar
+980
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 789
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 23 168
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03520
+
+
+
+# name: <cell-element>
+# type: scalar
+1641
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1329
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 42 270
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03860
+
+
+
+# name: <cell-element>
+# type: scalar
+1976
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1635
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 81 107 3 47 103
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01950
+
+
+
+# name: <cell-element>
+# type: scalar
+2232
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2153
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 26 9 20 24
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04400
+
+
+
+# name: <cell-element>
+# type: scalar
+4617
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4167
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 185 265
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03780
+
+
+
+# name: <cell-element>
+# type: scalar
+1159
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 781
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 27 117 134 100
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02890
+
+
+
+# name: <cell-element>
+# type: scalar
+1451
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1418
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 13 20
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03840
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9567
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 433 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03850
+
+
+
+# name: <cell-element>
+# type: scalar
+1108
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 612
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 214 282
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01490
+
+
+
+# name: <cell-element>
+# type: scalar
+799
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 655
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 39 105
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01453
+
+
+
+# name: <cell-element>
+# type: scalar
+1965
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1675
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 138 152
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01290
+
+
+
+# name: <cell-element>
+# type: scalar
+578
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 446
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 132
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02500
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9566
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 434
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03290
+
+
+
+# name: <cell-element>
+# type: scalar
+1232
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1008
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 209 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04510
+
+
+
+# name: <cell-element>
+# type: scalar
+754
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 731
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 15 8
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01448
+
+
+
+# name: <cell-element>
+# type: scalar
+1711
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 601
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 6
+ 28 287 2 641 37 115
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03830
+
+
+
+# name: <cell-element>
+# type: scalar
+1818
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1653
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 146 19
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01740
+
+
+
+# name: <cell-element>
+# type: scalar
+8455
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8051
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 174 230
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02020
+
+
+
+# name: <cell-element>
+# type: scalar
+934
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 883
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 37 14
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03960
+
+
+
+# name: <cell-element>
+# type: scalar
+4699
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 4340
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 159 200
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04080
+
+
+
+# name: <cell-element>
+# type: scalar
+1263
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 890
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 4
+ 94 17 247 15
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01020
+
+
+
+# name: <cell-element>
+# type: scalar
+1776
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1280
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 287 209
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01140
+
+
+
+# name: <cell-element>
+# type: scalar
+1409
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1278
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 25 18 0 41 47
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01170
+
+
+
+# name: <cell-element>
+# type: scalar
+175
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 136
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 14 25
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01910
+
+
+
+# name: <cell-element>
+# type: scalar
+1269
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 827
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 10
+ 18 35 21 22 127 33 6 16 45 119
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03090
+
+
+
+# name: <cell-element>
+# type: scalar
+833
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 810
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 11 12
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03040
+
+
+
+# name: <cell-element>
+# type: scalar
+1062
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1002
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 20 40
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02720
+
+
+
+# name: <cell-element>
+# type: scalar
+3862
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 3439
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 108 315
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01340
+
+
+
+# name: <cell-element>
+# type: scalar
+1662
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1529
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 57 76
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04430
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 8903
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 710 387
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02690
+
+
+
+# name: <cell-element>
+# type: scalar
+7659
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 7408
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 251
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02280
+
+
+
+# name: <cell-element>
+# type: scalar
+742
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 678
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 9 55
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04640
+
+
+
+# name: <cell-element>
+# type: scalar
+1451
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1010
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 263 178
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02080
+
+
+
+# name: <cell-element>
+# type: scalar
+1031
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 975
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 33 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03190
+
+
+
+# name: <cell-element>
+# type: scalar
+753
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 696
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 0 57
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G03160
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9685
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 204 111
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01040
+
+
+
+# name: <cell-element>
+# type: scalar
+10000
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 9011
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 32 957
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G01880
+
+
+
+# name: <cell-element>
+# type: scalar
+1946
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 1882
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 41 23
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G04550
+
+
+
+# name: <cell-element>
+# type: scalar
+1075
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 901
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 2
+ 53 121
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+# name: <cell-element>
+# type: cell
+# rows: 1
+# columns: 7
+# name: <cell-element>
+# type: sq_string
+# elements: 1
+# length: 14
+Gene:AT1G02960
+
+
+
+# name: <cell-element>
+# type: scalar
+3395
+
+
+
+# name: <cell-element>
+# type: sparse matrix
+# nnz: 1
+# rows: 1
+# columns: 1
+1 1 2980
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 1
+# columns: 5
+ 102 74 3 92 144
+
+
+
+# name: <cell-element>
+# type: matrix
+# rows: 0
+# columns: 0
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/variance_function_1.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,1124 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:09:05 2013 UTC <galaxy@ip-10-149-27-54>
+# name: VARIANCE1
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 5
+# name: data
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 8
+# name: x
+# type: matrix
+# rows: 276
+# columns: 1
+ -0.6833812334047907
+ -0.6351935380498582
+ 0.0002676097647148204
+ 0.008984413270075901
+ 0.3854857835385831
+ 0.9214256247447771
+ 0.9671076008822687
+ 1.06730569344731
+ 1.222803256420449
+ 1.246504845993285
+ 1.249174167305002
+ 1.374217828403327
+ 1.383148643159435
+ 1.39211140742845
+ 1.504802707898532
+ 1.512742975636874
+ 1.793299997280322
+ 1.858720221866363
+ 1.870869249673204
+ 1.895207901374988
+ 1.94696029232134
+ 1.950840496518627
+ 1.951577816302224
+ 2.080982069732103
+ 2.111794189331381
+ 2.30130308654365
+ 2.346256887203381
+ 2.423243219746997
+ 2.443257168192183
+ 2.489255342621425
+ 2.535583503152155
+ 2.53837436521161
+ 2.59963426232541
+ 2.601138120612441
+ 2.604773166418073
+ 2.624591312399266
+ 2.638861121805705
+ 2.639717995071114
+ 2.666653324253649
+ 2.705628950974717
+ 2.709413262934348
+ 2.728673698313363
+ 2.743378032980916
+ 2.770913820248701
+ 2.775176264408742
+ 2.804384977892022
+ 2.832504558593536
+ 2.884517225879028
+ 2.890427891722309
+ 2.892025848445413
+ 2.913231418839616
+ 2.915325331748858
+ 2.947286052113701
+ 2.974114114210898
+ 2.974962534900434
+ 2.996712049498361
+ 2.996782416820018
+ 3.0647282235623
+ 3.067149629015368
+ 3.090788503971225
+ 3.11398884919686
+ 3.12787365655992
+ 3.142145597909063
+ 3.157104777475194
+ 3.178330382452176
+ 3.183089890645656
+ 3.188920263453963
+ 3.25881952530437
+ 3.281247080101629
+ 3.329598123749154
+ 3.330927208179796
+ 3.331024996520879
+ 3.348187622299709
+ 3.349904087274605
+ 3.367295942972851
+ 3.36746289554451
+ 3.382826559751085
+ 3.38444432440666
+ 3.419307790945601
+ 3.431652286106596
+ 3.442440475996615
+ 3.449189130596366
+ 3.449929420406366
+ 3.450754701200709
+ 3.46565467202683
+ 3.466434062810305
+ 3.480074864445704
+ 3.481913333815904
+ 3.484235528796702
+ 3.523418569293708
+ 3.524697107836651
+ 3.525728026748714
+ 3.525947853574447
+ 3.527159412222734
+ 3.53877924721809
+ 3.56551761864124
+ 3.596890627362499
+ 3.597334179074515
+ 3.602971021712368
+ 3.65062119724365
+ 3.674474454579012
+ 3.678752389818325
+ 3.678763116230078
+ 3.688328844823047
+ 3.700982292022176
+ 3.713304660860759
+ 3.716130268623892
+ 3.745619279014551
+ 3.748925960321961
+ 3.764367786634761
+ 3.784264106978202
+ 3.802426082202587
+ 3.824735114150635
+ 3.825707508317699
+ 3.831016123593371
+ 3.83711739421476
+ 3.848499954098443
+ 3.850874599611493
+ 3.855064078065424
+ 3.859374157671713
+ 3.863528276520088
+ 3.871263402499793
+ 3.880243633530991
+ 3.882530554148294
+ 3.890087569638467
+ 3.892720048124537
+ 3.899981718171424
+ 3.930573247565717
+ 3.931887785265438
+ 3.970354066093234
+ 3.970515795044499
+ 3.978357290248281
+ 3.992151015248081
+ 4.005479002485021
+ 4.023197887585891
+ 4.052175150346082
+ 4.052480000428031
+ 4.053853379531467
+ 4.075892563861373
+ 4.07753744390572
+ 4.085976934425602
+ 4.109797327447354
+ 4.111279568813716
+ 4.117157460113159
+ 4.137987410687454
+ 4.155863267944699
+ 4.166693999005181
+ 4.16744941210952
+ 4.196879601483558
+ 4.2044926354636
+ 4.206310369795395
+ 4.24022094145521
+ 4.248843565917821
+ 4.252210921486945
+ 4.262852832517678
+ 4.290827110034652
+ 4.294139337580926
+ 4.30592926367226
+ 4.310799125385514
+ 4.317183205701451
+ 4.331555392333135
+ 4.334353742609347
+ 4.338073406205408
+ 4.412744815974918
+ 4.423951294484441
+ 4.43460126701708
+ 4.453396882127109
+ 4.477697875664315
+ 4.500376248621553
+ 4.50876526814104
+ 4.51442882854796
+ 4.56954300834494
+ 4.594270394461617
+ 4.607701924981973
+ 4.60960436496965
+ 4.619934928374763
+ 4.625943458038219
+ 4.629658265979011
+ 4.634707563554457
+ 4.646791717153577
+ 4.669153767576629
+ 4.673014108700764
+ 4.68272846051556
+ 4.704777591865675
+ 4.705965173439033
+ 4.725850496348063
+ 4.747543709061567
+ 4.75461246209718
+ 4.798334892646747
+ 4.799914262780603
+ 4.804021044733257
+ 4.811634750492613
+ 4.813269048061025
+ 4.816363419135937
+ 4.819827246901278
+ 4.842946003273059
+ 4.844187086458591
+ 4.859705651650803
+ 4.859812404361672
+ 4.863934062496969
+ 4.867534450455582
+ 4.894080188778505
+ 4.896628942316751
+ 4.901527225964197
+ 4.912694799733611
+ 4.929810968690763
+ 4.933698410407108
+ 4.943091524385554
+ 4.943706905124013
+ 4.953092101738478
+ 4.966335035199676
+ 4.975994484577808
+ 4.996992016238126
+ 5.000515787228054
+ 5.006205516058236
+ 5.044856182869496
+ 5.050164254016807
+ 5.056245805348308
+ 5.079616233308949
+ 5.090714171531762
+ 5.093379459800494
+ 5.096763047049705
+ 5.106294181366582
+ 5.113939010744149
+ 5.142996964246954
+ 5.167482511225858
+ 5.181539998366291
+ 5.237167419637067
+ 5.2548878086207
+ 5.270430640739011
+ 5.280612431745435
+ 5.291469349209253
+ 5.295814236329918
+ 5.305219692852843
+ 5.313205979041787
+ 5.313435052025778
+ 5.332718793265369
+ 5.336361506203941
+ 5.337538079701318
+ 5.363479203421722
+ 5.377592863204739
+ 5.398102273865895
+ 5.40139132722789
+ 5.413875707182309
+ 5.438079308923196
+ 5.46383180502561
+ 5.470167623474696
+ 5.608182078677081
+ 5.614951260949585
+ 5.693390946703289
+ 5.708752001955319
+ 5.726847747587197
+ 5.773196754230931
+ 5.779818163653597
+ 5.803666122447944
+ 5.823045895483019
+ 5.85773948567858
+ 5.912150740388256
+ 5.918132746702433
+ 5.921898454987526
+ 5.945420608606575
+ 5.958372222465343
+ 6.024657514463746
+ 6.051915027830951
+ 6.132175470221938
+ 6.258030759426767
+ 6.352324586587449
+ 6.390181342954701
+ 6.431331081933479
+ 6.535241271013659
+ 6.59736839218635
+ 6.872128101338986
+ 6.924120633068402
+ 6.92557432177101
+ 6.930005887916956
+ 6.952728644624869
+
+
+# name: y
+# type: matrix
+# rows: 276
+# columns: 1
+ 0.5098619448660886
+ 0.5614458792100752
+ 0.0005354344191126676
+ 0.01821268593811656
+ 0.300125135105736
+ 0.6226456101523772
+ 5.790012164317421
+ 6.882614894599708
+ 2.928244242028988
+ 4.190711302206591
+ 0.2995616530371554
+ 17.23261410111295
+ 1.794026542150055
+ 2.360617288467401
+ 0.5572623255604892
+ 13.20152159602447
+ 0.1111746356041626
+ 1.595829705979434
+ 0.3233927878766432
+ 8.077489522620343
+ 0.1030762842837191
+ 8.947040131825315
+ 3.016315931133838
+ 0.1976437966296227
+ 15.47311815458021
+ 1.442791904480445
+ 0.979581837298045
+ 29.87227932611871
+ 12.97764035922703
+ 20.4435072256478
+ 18.21471964041553
+ 48.21858092449051
+ 1.41297250642486
+ 3.274309977134548
+ 5.925674133696653
+ 16.99509526122546
+ 1.843010440058799
+ 0.2592376401819984
+ 3.458358651048227
+ 15.7539642356789
+ 3.107706109581367
+ 9.580053098486419
+ 6.725510114976441
+ 6.170624771256398
+ 20.57397380665206
+ 5.561364513857107
+ 17.17176144974188
+ 8.887674192406642
+ 18.07268234111858
+ 3.849063313669099
+ 3.861436722749122
+ 8.850231011878519
+ 21.93447790910894
+ 45.98441120043708
+ 140.0088953160563
+ 0.06482648164717611
+ 0.841439055377299
+ 4.103961883308571
+ 2.560405750393033
+ 124.1886033190991
+ 13.44247443672744
+ 8.993487218620574
+ 19.64365489310051
+ 0.7118914951765414
+ 2.598345322347509
+ 3.283085039649825
+ 18.86665041326702
+ 51.93864294574792
+ 51.441285740258
+ 63.59768787839218
+ 2.091531432494282
+ 46.23386094018772
+ 1.395814465039317
+ 4.5
+ 0.0001900431189985708
+ 0.2810746969706186
+ 18.67471001321769
+ 0.0006979292989759984
+ 4.438319886752966
+ 5.237601716253023
+ 60.42858431296156
+ 37.26767995132049
+ 0.06516140813037113
+ 0.3214524723274196
+ 1.650555779444144
+ 4.396694943135049
+ 0.903641451836221
+ 43.30052363579657
+ 2.804111355861398
+ 83.90977767232167
+ 23.70674616091612
+ 0.1429087600638377
+ 48.07407801263168
+ 5.016841948711778
+ 49.61524565567376
+ 11.82265263276051
+ 1.026231401821365
+ 0.6112268811795358
+ 249.9876586205725
+ 0.2273354882406347
+ 3.276589482850615
+ 54.78120310547195
+ 5.982911718346099
+ 3.623715441379241
+ 1.789608320551799
+ 6.069630590964783
+ 3.410406646103851
+ 82.22800448783204
+ 20.11022669550441
+ 7.816088960080262
+ 0.2883919025007873
+ 10.67548248004392
+ 111.5290640552081
+ 10.00864044051327
+ 68.69055299798212
+ 11.78460386156929
+ 294.4809073631238
+ 23.99998402448317
+ 29.57235225438896
+ 6.854014318717571
+ 15.46213461897019
+ 8.565402876319306
+ 26.66213140467827
+ 93.38726668302101
+ 31.19419628516797
+ 8.433341608745263
+ 80.08503698914599
+ 35.81395756842375
+ 0.3233476628295432
+ 0.3492055305221813
+ 0.1527494793012827
+ 44.06836677073816
+ 25.73148751695291
+ 5.709803019864283
+ 99.2429160517087
+ 45.51701452734231
+ 1.774784677283192
+ 7.796727340949031
+ 20.91333402326189
+ 18
+ 201.4362745125418
+ 8.208415622339452
+ 1.367380575449007
+ 23.63590651465912
+ 34.61141346448374
+ 236.1791113925006
+ 60.9779286723651
+ 625.4968132566719
+ 127.5051133406701
+ 0.03413714024334135
+ 98.97722333990743
+ 158.4522012018566
+ 3.41535793811879
+ 111.1738318719641
+ 393.7791485816516
+ 14.80308840521456
+ 101.5674531669078
+ 38.64007145119295
+ 24.5
+ 42.86848581468963
+ 34.38714066922311
+ 54.59456481079737
+ 40.78027658226088
+ 2.858862456747437
+ 118.2487794185459
+ 463.6603814081025
+ 174.6817908959457
+ 82.81225870770531
+ 5.784924306597853
+ 9.883020911959306
+ 397.9898317565905
+ 112.5
+ 60.14204465112706
+ 546.9314016625565
+ 60.08604499239323
+ 64.78656295020969
+ 4.775025797206339
+ 14.64686765407009
+ 0.2440096903325543
+ 549.2979973859448
+ 211.8646040255697
+ 8.323714905438553
+ 29.2389044906079
+ 300.4286714954522
+ 335.033851728749
+ 236.9134385187773
+ 19.3259964786152
+ 124.2315426601552
+ 8.220994008233166
+ 0.5
+ 8
+ 312.7360524269463
+ 156.858472180786
+ 2.591867043863306
+ 67.17480337556589
+ 59.58973847910766
+ 32
+ 9.577667878791127
+ 578
+ 56.20615874801912
+ 0
+ 142.9783453661942
+ 298.8856585562471
+ 57.79378020275452
+ 1.476586999894243
+ 453.5486464995402
+ 50.33324089056941
+ 82.64077764918559
+ 32.67506893202144
+ 93.209185909593
+ 12.5
+ 130.5094553396254
+ 186.6201169833191
+ 2.234139366707373
+ 241.7793155172543
+ 213.5882189628277
+ 77.09760868930012
+ 128
+ 74.35779072677653
+ 1.151528038485153
+ 84.68581280829852
+ 0.3795900371882776
+ 7.431380318790831
+ 778.7657271065079
+ 14.1958493888998
+ 160.6411561931741
+ 210.0111289065943
+ 10.36323193293244
+ 144.5
+ 0.2048950887373653
+ 1999.250022236772
+ 124.7380815523628
+ 420.5
+ 343.4444401093227
+ 8
+ 1.801728624385869
+ 162
+ 313.8837916877746
+ 0
+ 2.541139840616955
+ 0.05351441629747863
+ 1.904495297825732
+ 417.7346959108357
+ 0.5
+ 1352
+ 2
+ 364.5
+ 139.169294801233
+ 144.5
+ 199.5377027326574
+ 0.03506029515081736
+ 8
+ 2234.627834591213
+ 975.896911148824
+ 0.360002547189904
+ 512
+ 29.91575360294924
+ 1012.5
+ 784.0268295459406
+ 8.183391814447306
+ 98
+ 0.1731518000579298
+ 3612.5
+ 514.5284767173813
+ 4330.297503866355
+ 123.1958169282804
+ 1364.860874146628
+ 2522.892576923072
+ 3362
+ 1458
+ 2503.87078382964
+ 2178
+ 760.5
+ 226.5406681080648
+ 364.5
+ 3200
+
+
+# name: weights
+# type: matrix
+# rows: 276
+# columns: 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+# name: censor
+# type: scalar
+0
+
+
+# name: baseline
+# type: scalar
+0
+
+
+# name: style
+# type: sq_string
+# elements: 1
+# length: 1
+n
+
+
+# name: scales
+# type: scalar
+1
+
+
+# name: xlim
+# type: matrix
+# rows: 2
+# columns: 1
+ 0
+ 0
+
+
+
+
+# name: evaluation_structure
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 8
+# name: type
+# type: sq_string
+# elements: 1
+# length: 4
+tree
+
+
+# name: module
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: name
+# type: sq_string
+# elements: 1
+# length: 3
+std
+
+
+# name: directory
+# type: null_sq_string
+# elements: 0
+
+
+# name: parameters
+# type: scalar
+0
+
+
+
+
+# name: lower_left
+# type: scalar
+0
+
+
+# name: upper_right
+# type: scalar
+0
+
+
+# name: grid
+# type: scalar
+10
+
+
+# name: cut
+# type: scalar
+0.8
+
+
+# name: maxk
+# type: scalar
+1000
+
+
+# name: derivative
+# type: scalar
+0
+
+
+
+
+# name: smoothing_parameters
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 11
+# name: alpha
+# type: matrix
+# rows: 1
+# columns: 3
+ 0.7 0 0
+
+
+# name: adaptive_criterion
+# type: sq_string
+# elements: 1
+# length: 2
+cp
+
+
+# name: degree
+# type: scalar
+2
+
+
+# name: family
+# type: sq_string
+# elements: 1
+# length: 5
+gamma
+
+
+# name: link
+# type: sq_string
+# elements: 1
+# length: 7
+default
+
+
+# name: kernel
+# type: sq_string
+# elements: 1
+# length: 4
+tcub
+
+
+# name: kernel_type
+# type: sq_string
+# elements: 1
+# length: 3
+sph
+
+
+# name: deren
+# type: scalar
+0
+
+
+# name: deit
+# type: sq_string
+# elements: 1
+# length: 7
+default
+
+
+# name: demint
+# type: scalar
+20
+
+
+# name: debug
+# type: scalar
+0
+
+
+
+
+# name: fit_points
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 6
+# name: evaluation_points
+# type: matrix
+# rows: 1
+# columns: 5
+ -0.6833812334047907 6.952728644624869 3.134673705610039 1.225646236102624 5.043701175117453
+
+
+# name: fitted_values
+# type: matrix
+# rows: 5
+# columns: 11
+ -0.4780349615759775 0.4587946918492114 0.09380772433542278 -0.1543985200998657 0.1085069753247653 -0.1844125625275044 -57.51542512411198 1.838442210570626 46.45377801533508 5.496650281465815 2
+ 0.00859546465794736 0.007463435776044136 0.0008117835380887783 0.0007249534430119331 0.002716168211500031 0.003149482487915661 -378.4377848891691 2.895747872410059 268.9166003580786 20.28403121746227 2
+ -0.0297824890329883 -0.02733483136307369 0.02093604488816905 -0.004346713975171855 0.02556184535382897 -0.004016124707926654 -208.0739935791972 1.946885589084127 159.2390941728792 2.526600534106447 2
+ 0.06233179397904487 0.1244223524446979 0.005509507785338125 0.03660531158017293 0.01817563090439375 0.02794515347375807 -98.46773324014573 1.860487041131217 78.59199362705083 3.587622811958401 2
+ -0.004917206421938047 0.01110022821252987 0.000330409508454102 -0.0003187189574629413 0.000980250805272323 -0.001671662903533849 -373.9952488212735 2.741261752696345 265.423616098305 9.408763927513387 2
+
+
+# name: evaluation_vectors
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 4
+# name: cell
+# type: matrix
+# rows: 2
+# columns: 1
+ 0
+ 1
+
+
+# name: splitvar
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 0 0 0 0
+
+
+# name: lo
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 0 0 0 1
+
+
+# name: hi
+# type: matrix
+# rows: 1
+# columns: 5
+ 0 0 1 2 2
+
+
+
+
+# name: fit_limits
+# type: matrix
+# rows: 1
+# columns: 2
+ -0.6833812334047907 6.952728644624869
+
+
+# name: family_link
+# type: matrix
+# rows: 1
+# columns: 2
+ 7 4
+
+
+# name: kappa
+# type: matrix
+# rows: 1
+# columns: 6
+ -383.1157592790227 4.205160419924432 3.947487842478111 1 0 1
+
+
+
+
+# name: parametric_component
+# type: matrix
+# rows: 1
+# columns: 31
+ 4.01438090124264 4.039035554624711 1.185611582819957 0.08954622424519122 0.06019292349075954 0.1306893397024039 0.1563251713629077 0.3998478689518 0 -9.946965241061817e-10 0 0.9999999486648966 -3.24489640006e-15 -9.946965241061817e-10 -3.24489640006e-15 1.600152182383303 0.6491090428643189 0.3966294519227455 0.6491090265427149 -0.2804593165841786 0.9179788003366177 -0.2804594335615753 -0.7071067968934422 8.050863200882512e-08 0.7071067654796481 -0.1081198631397258 0.1438443421160909 0.112957298071852 0.06019292349075954 0.04447715216714684 0.03621200115668121
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/results/variance_function_2.mat	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,1132 @@
+# Created by Octave 3.6.2, Tue Feb 05 20:09:05 2013 UTC <galaxy@ip-10-149-27-54>
+# name: VARIANCE2
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 5
+# name: data
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 8
+# name: x
+# type: matrix
+# rows: 278
+# columns: 1
+ -0.6837237318715028
+ 0.06174800706844703
+ 0.3938359345009124
+ 0.6936268096559794
+ 0.9122011167435973
+ 0.9161666558511761
+ 1.086562522614452
+ 1.090141698976293
+ 1.098632846081095
+ 1.098700261688975
+ 1.247630065657648
+ 1.508740013379464
+ 1.618800348362312
+ 1.702738617754124
+ 1.770683859700156
+ 1.792807669949503
+ 1.87635935853639
+ 1.941669549847872
+ 1.941970369931589
+ 2.017802948251929
+ 2.090749535590951
+ 2.140229670178254
+ 2.1500519573627
+ 2.196694709486154
+ 2.304005701521318
+ 2.304500516266279
+ 2.344717584725904
+ 2.347986504652476
+ 2.352634472154888
+ 2.406323592433772
+ 2.449225908696831
+ 2.478076857683252
+ 2.48382232268649
+ 2.504058279551312
+ 2.557647373888049
+ 2.563523151155118
+ 2.563735930504469
+ 2.67767480537634
+ 2.68021091770176
+ 2.685152330257218
+ 2.6866168913027
+ 2.692091126103321
+ 2.696648173029505
+ 2.701138866636309
+ 2.70805161496842
+ 2.739678738898509
+ 2.74093288633136
+ 2.746278502501331
+ 2.748323566646953
+ 2.762180911756001
+ 2.764268674173852
+ 2.767844607969534
+ 2.771345324739451
+ 2.833214757922426
+ 2.857079620381533
+ 2.86149897045788
+ 2.880732388557353
+ 2.880949884236717
+ 2.891782292595328
+ 2.891787454295845
+ 2.916986833055203
+ 2.917762953154436
+ 2.928815529016648
+ 2.939898166242062
+ 2.970414465569701
+ 3.05028210275491
+ 3.056550252011113
+ 3.08649424007081
+ 3.089021357119376
+ 3.090526280779387
+ 3.09061347841052
+ 3.090805858442458
+ 3.093298287488152
+ 3.11055019199932
+ 3.114662332422402
+ 3.115725414147837
+ 3.13534476640749
+ 3.15214874092909
+ 3.157818952910483
+ 3.177085977697478
+ 3.180068491795122
+ 3.196507095511479
+ 3.219776951192828
+ 3.219938595156166
+ 3.236271063210053
+ 3.238596262695897
+ 3.238622270382975
+ 3.258184511042348
+ 3.258209498242059
+ 3.261307672704753
+ 3.273138257683985
+ 3.277144732992177
+ 3.295644661278247
+ 3.295837253233735
+ 3.30967197554672
+ 3.31252126260721
+ 3.31364708015119
+ 3.315551573005444
+ 3.319025994877266
+ 3.333296891516658
+ 3.367104971509389
+ 3.371089020913112
+ 3.381333481597382
+ 3.38259036877319
+ 3.382894834196399
+ 3.401101232166583
+ 3.401177026091906
+ 3.40777598978751
+ 3.424259372526096
+ 3.435846433621081
+ 3.445001937877656
+ 3.447215326423599
+ 3.466500324258321
+ 3.496335771780778
+ 3.498261890607032
+ 3.525896628494842
+ 3.550215158651694
+ 3.587040773972411
+ 3.591337838935608
+ 3.598486741570843
+ 3.624783410872607
+ 3.637684796476905
+ 3.653042350005317
+ 3.659594662386923
+ 3.669839693286666
+ 3.675314648961579
+ 3.676570805196315
+ 3.693510770935168
+ 3.700599285814474
+ 3.712732666501156
+ 3.725889265995356
+ 3.728806916286573
+ 3.737575678868684
+ 3.737640745130216
+ 3.750319896857612
+ 3.766264089362134
+ 3.794839201090781
+ 3.796482184690774
+ 3.816856416946188
+ 3.827728663378093
+ 3.831036527965425
+ 3.849869447193602
+ 3.850168159123043
+ 3.850300845641791
+ 3.870924309170324
+ 3.880258694019726
+ 3.934771313609195
+ 3.967309085255758
+ 3.970291913552122
+ 3.983056440768356
+ 3.987633758403662
+ 4.020384449024863
+ 4.03328099952925
+ 4.043073489125093
+ 4.057518917478322
+ 4.080979358171917
+ 4.131447422745107
+ 4.13323353081808
+ 4.14388459674826
+ 4.15445190993935
+ 4.178274397261848
+ 4.243628001636987
+ 4.255180963745262
+ 4.256188338927372
+ 4.315835089910593
+ 4.323528187705366
+ 4.343172424194938
+ 4.357715673055751
+ 4.358835834519239
+ 4.360156889436634
+ 4.362942117524167
+ 4.363098624788363
+ 4.381690282465024
+ 4.412736410900316
+ 4.412778981044502
+ 4.430787553370068
+ 4.442651256490317
+ 4.448418932931327
+ 4.494170404470387
+ 4.516744556825715
+ 4.52713936959471
+ 4.548733055985126
+ 4.569714490304562
+ 4.59170044353263
+ 4.605155996397983
+ 4.605242940947991
+ 4.629862798578463
+ 4.649424629297087
+ 4.654429533956064
+ 4.658948564073307
+ 4.663331322393925
+ 4.672741511961561
+ 4.677490847567717
+ 4.686764703424206
+ 4.707318789136448
+ 4.749317899616689
+ 4.754032678873459
+ 4.755490465765986
+ 4.756908335620226
+ 4.761806895306663
+ 4.764808391879312
+ 4.774858581905033
+ 4.774924637360026
+ 4.828548979652879
+ 4.844187086458591
+ 4.883025211799247
+ 4.901568155021455
+ 4.907544117680292
+ 4.908056053531867
+ 4.927253685157205
+ 4.945207488773801
+ 4.945256827797232
+ 4.952173058084705
+ 4.983606621708336
+ 5.000584958242754
+ 5.01396308418893
+ 5.014443784488533
+ 5.039884572964992
+ 5.072248590936808
+ 5.108771923346613
+ 5.12735419916178
+ 5.132852926820505
+ 5.146028211303397
+ 5.158248299892336
+ 5.178836964178177
+ 5.178970608915471
+ 5.181449722914155
+ 5.198461365947709
+ 5.210480250531378
+ 5.216832991062214
+ 5.233778845410465
+ 5.246452553112158
+ 5.260581348332298
+ 5.27556037942542
+ 5.286171927979069
+ 5.288267030694535
+ 5.293315555829349
+ 5.295247341944374
+ 5.305789381386738
+ 5.327930463402223
+ 5.351858133476067
+ 5.361852817838315
+ 5.392026766517009
+ 5.418320158942733
+ 5.427161519729163
+ 5.487695442128418
+ 5.511414398014781
+ 5.531050789197131
+ 5.535779814289461
+ 5.578733578716419
+ 5.581791670759578
+ 5.593699382398812
+ 5.598421958998375
+ 5.629239797571959
+ 5.674261469894548
+ 5.698100710092929
+ 5.74790412745876
+ 5.789910004502656
+ 5.795269027081676
+ 5.83627165770228
+ 5.857933154483459
+ 5.91384877998279
+ 5.916202062607435
+ 5.938854596835685
+ 6.036376680772958
+ 6.045005314036012
+ 6.091975207898088
+ 6.093569770045136
+ 6.134592158096624
+ 6.189290290437902
+ 6.417444895389531
+ 6.476202836110654
+ 6.531606225208026
+ 6.532664111291542
+ 6.624115110677359
+ 6.838405200847344
+ 6.89719976504262
+ 6.913240209212707
+
+
+# name: y
+# type: matrix
+# rows: 278
+# columns: 1
+ 0.5095128105889919
+ 2.262890989492474
+ 0.3903719176547771
+ 0.003839794327176179
+ 0.3917961576267153
+ 0.496893837511402
+ 7.567980505420947
+ 1.685461076123281
+ 0.0003700448443042101
+ 0.001583723349696673
+ 0.1150036957558873
+ 12.87751485408255
+ 2.870984752978563
+ 0.1723395917674941
+ 4.588390742570005
+ 2.148519041909404
+ 1.144045334454488
+ 1.004323412123323
+ 17.22379945006875
+ 1.053407918098356
+ 10.74263120456703
+ 0.5462425905480218
+ 2.606281302384316
+ 1.824426951409311
+ 0.2847278134999736
+ 8.751508279579989
+ 37.53685881304948
+ 2.816933632549801
+ 5.041012616330716
+ 11.76866786127581
+ 15.964992427774
+ 2.704612128199408
+ 0.07467211870818209
+ 25.71792964454761
+ 12.646384232166
+ 31.03048801094295
+ 7.157799659878497
+ 0.8418322427126725
+ 17.26157534096623
+ 50.1090176598573
+ 3.938591528206427
+ 38.43861162504254
+ 39.26418566485877
+ 10.98116344553044
+ 0.0006362411438755319
+ 11.35863078981493
+ 0.5858538344805686
+ 4.059245305277956
+ 10.51531849309278
+ 38.79804374952369
+ 22.80997050547674
+ 12.71915897537465
+ 6.668584472241394
+ 0.0008172164025779054
+ 3.528197481757015
+ 3.589683182832203
+ 53.84986923287117
+ 36.9806756408968
+ 51.81573326646112
+ 0.9193214924445007
+ 11.40291322301973
+ 0.4892928254180323
+ 25.56162911063156
+ 10.47539394445285
+ 4.5
+ 16.67347386036222
+ 36.61111542576936
+ 6.140759039343298
+ 2.67879046113072
+ 6.965678000266726
+ 7.145939865379905
+ 17.53912632527845
+ 5.510984395324954
+ 4.565656077236426
+ 0.6107524045157247
+ 44.87800362415224
+ 31.68304694687573
+ 28.88041757211065
+ 0.1326295092775012
+ 15.69432191852325
+ 0.9497159281593975
+ 6.239608926743183
+ 1.127931527145661
+ 20.57511668565869
+ 2.868866242400571
+ 0.2383249665199263
+ 0.3380965677503775
+ 0.1189552204883287
+ 18.30422151798077
+ 2.243951000983381
+ 86.60547316148667
+ 60.5
+ 17.43519099066326
+ 0.0005645808026262814
+ 25.1054243244803
+ 35.2979971078162
+ 2.617655847694602
+ 0.1503558422449883
+ 25.07963462065321
+ 21.29308861248387
+ 0.08062339413751202
+ 93.61118902992681
+ 11.46074728431915
+ 3.2212220909995
+ 1.083900153566068
+ 17.65221538732596
+ 1.92602520012967
+ 53.2311882281321
+ 22.28872505539069
+ 3.583418585972517
+ 13.94302863035861
+ 10.7507774521911
+ 21.01778409915793
+ 1.127811889399884
+ 1.887870662802517
+ 5.653240354397706
+ 11.50036957558872
+ 5.777646429812394
+ 50.7213718715639
+ 4.661622164066101
+ 14.88641784073798
+ 72.56869163238274
+ 53.75000964928081
+ 18.02409241043141
+ 66.57760750659131
+ 3.989009822875355
+ 0.1171681483774458
+ 30.55919037570892
+ 0.7412895458428543
+ 83.33135616607402
+ 0.07890085258687321
+ 13.35910285199716
+ 1.249366663768299
+ 7.79494880360532
+ 0.9181308748332482
+ 106.3921500888627
+ 19.00851241582381
+ 2.763205174640964
+ 53.1857790604999
+ 41.93033263885174
+ 15.7927846475879
+ 15.44556024941331
+ 0.09082545122977904
+ 0.04928298427633633
+ 5.134615943214277
+ 144.2045655465189
+ 43.76162830689096
+ 9.57849896670632
+ 8
+ 42.4531833840209
+ 6.016508594494942
+ 21.51904670522827
+ 5.717876684214008
+ 8.286281189893426
+ 119.6182328287741
+ 32.0990231127498
+ 202.5908175513118
+ 13.17926760757914
+ 1.979611199950268
+ 18.52660612743934
+ 439.0796236488824
+ 670.0413786389963
+ 25.7917458355514
+ 123.3965219031716
+ 152.323399026547
+ 24.82013448743075
+ 12.50518413769069
+ 5.585321488235243
+ 145.2882926543925
+ 38.20824400245006
+ 8.189037768595981
+ 4.5
+ 119.2384328499567
+ 2.535606663085825
+ 59.9730856777977
+ 31.16914771144889
+ 338
+ 0.02485817059294484
+ 0.7766392300095919
+ 5.185276266923797
+ 110.116552519697
+ 8.601269367714169
+ 270.8514958450469
+ 543.5051672954272
+ 0.05862129698714816
+ 74.88223459185733
+ 144.5
+ 21.63534895991268
+ 50.58683598060291
+ 536.7538588085558
+ 12.6952289795521
+ 2.078276634789749
+ 84.5
+ 13.17535528840555
+ 244.3457722262002
+ 0.6805884503107203
+ 3.726301055476219
+ 49.57020185604524
+ 425.5479680122224
+ 179.3510453262694
+ 51.77014068844062
+ 0.10929374572545
+ 5.134940811146142
+ 30.96112585651044
+ 2
+ 143.1443174846983
+ 0.7592791592896813
+ 82.86905454705295
+ 57.87230629294996
+ 18
+ 112.5
+ 7.916787061613076
+ 2.097412593499173
+ 450
+ 0.5
+ 144.5
+ 34.19672040897215
+ 80.24143186888391
+ 59.51029515959627
+ 60.71257252937583
+ 225.5462885974688
+ 312.5
+ 2273.573248113467
+ 125.3902452855249
+ 107.881261698402
+ 12.5
+ 45.99355213633316
+ 93.26797939755375
+ 165.4852034614071
+ 35.77962908834288
+ 4.5
+ 8.632186775251466
+ 51.15784902960518
+ 24.5
+ 1.875114482072241
+ 288
+ 0.2068083135269022
+ 42.53473699158519
+ 0.5
+ 1555.619385970493
+ 98
+ 110.3351589580429
+ 69.62635351188125
+ 40.5
+ 14.74306022481423
+ 38.11485731129793
+ 1.261804747487579
+ 89.37477174828831
+ 86.35282028414471
+ 696.8618376765238
+ 28.72606530132975
+ 1394.700550373311
+ 648
+ 1.805052914514951
+ 248.24852220784
+ 351.8088925759497
+ 1717.05861787253
+ 266.1121842193227
+ 576.4607548007504
+ 1200.5
+ 1152
+ 248.6603663960368
+ 512
+ 220.5
+ 102.7360122575716
+ 242
+ 1233.477909589782
+ 162
+ 2599.462654032517
+ 0.5
+ 73.53753364090731
+ 1012.5
+ 1104.5
+ 1574.372465098846
+ 2.534770870396374
+ 882
+ 2112.5
+ 180.5
+
+
+# name: weights
+# type: matrix
+# rows: 278
+# columns: 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+# name: censor
+# type: scalar
+0
+
+
+# name: baseline
+# type: scalar
+0
+
+
+# name: style
+# type: sq_string
+# elements: 1
+# length: 1
+n
+
+
+# name: scales
+# type: scalar
+1
+
+
+# name: xlim
+# type: matrix
+# rows: 2
+# columns: 1
+ 0
+ 0
+
+
+
+
+# name: evaluation_structure
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 8
+# name: type
+# type: sq_string
+# elements: 1
+# length: 4
+tree
+
+
+# name: module
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 3
+# name: name
+# type: sq_string
+# elements: 1
+# length: 3
+std
+
+
+# name: directory
+# type: null_sq_string
+# elements: 0
+
+
+# name: parameters
+# type: scalar
+0
+
+
+
+
+# name: lower_left
+# type: scalar
+0
+
+
+# name: upper_right
+# type: scalar
+0
+
+
+# name: grid
+# type: scalar
+10
+
+
+# name: cut
+# type: scalar
+0.8
+
+
+# name: maxk
+# type: scalar
+1000
+
+
+# name: derivative
+# type: scalar
+0
+
+
+
+
+# name: smoothing_parameters
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 11
+# name: alpha
+# type: matrix
+# rows: 1
+# columns: 3
+ 0.7 0 0
+
+
+# name: adaptive_criterion
+# type: sq_string
+# elements: 1
+# length: 2
+cp
+
+
+# name: degree
+# type: scalar
+2
+
+
+# name: family
+# type: sq_string
+# elements: 1
+# length: 5
+gamma
+
+
+# name: link
+# type: sq_string
+# elements: 1
+# length: 7
+default
+
+
+# name: kernel
+# type: sq_string
+# elements: 1
+# length: 4
+tcub
+
+
+# name: kernel_type
+# type: sq_string
+# elements: 1
+# length: 3
+sph
+
+
+# name: deren
+# type: scalar
+0
+
+
+# name: deit
+# type: sq_string
+# elements: 1
+# length: 7
+default
+
+
+# name: demint
+# type: scalar
+20
+
+
+# name: debug
+# type: scalar
+0
+
+
+
+
+# name: fit_points
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 6
+# name: evaluation_points
+# type: matrix
+# rows: 1
+# columns: 7
+ -0.6837237318715028 6.913240209212707 3.114758238670602 1.21551725339955 2.165137746035076 5.013999223941655 4.064378731306128
+
+
+# name: fitted_values
+# type: matrix
+# rows: 7
+# columns: 11
+ -0.01330035006682273 0.03549149179896849 0.1171744754683572 -0.1157830276837744 0.1436402017837177 -0.1560111882333693 -107.7016511367838 1.80158141020965 80.52755086076489 6.283471469295979 2
+ -0.00322819774656935 -0.002942076412471462 0.000229194745680672 0.0003147470408328135 0.004963490633641321 0.006166109709918072 -366.3976007523046 2.805436492021192 267.1463897916529 16.38279486152116 2
+ -0.1382583082248194 -0.3151712696066232 0.02790531465043584 0.03272622243426083 0.03240992631060767 0.03768146004595135 -161.6897918193248 2.133747885643269 130.4556649799812 1.729428847787989 2
+ 0.07272184174380869 0.07335641909763269 0.01023466211516438 0.02742166543143666 0.02773520037321356 0.02631840711620755 -114.5747801738878 1.928611167838315 87.50517249826758 3.471247450024657 2
+ 0.08100726007375658 0.05350461332979739 0.0261079364404702 0.001117115458406925 0.03533605016257906 -0.008540646183670259 -144.5321677263554 1.876727159571737 113.5097456430282 2.542181043101372 2
+ 0.0008821100229878809 0.003341839823870485 0.002664146062638081 -0.009764906705681444 0.004653318505989421 -0.01351712615463752 -337.9024717149328 2.528354686181343 247.1484042796377 5.710033194810371 2
+ -0.03332092173150825 0.005610510035149119 0.0106149310659126 0.005675385127543298 0.01426256403251089 0.005931200770144539 -321.7080844695797 2.350231475064818 235.9857941424283 3.75878515578307 2
+
+
+# name: evaluation_vectors
+# type: scalar struct
+# ndims: 2
+ 1 1
+# length: 4
+# name: cell
+# type: matrix
+# rows: 2
+# columns: 1
+ 0
+ 1
+
+
+# name: splitvar
+# type: matrix
+# rows: 1
+# columns: 7
+ 0 0 0 0 0 0 0
+
+
+# name: lo
+# type: matrix
+# rows: 1
+# columns: 7
+ 0 0 0 0 2 1 2
+
+
+# name: hi
+# type: matrix
+# rows: 1
+# columns: 7
+ 0 0 1 2 3 2 5
+
+
+
+
+# name: fit_limits
+# type: matrix
+# rows: 1
+# columns: 2
+ -0.6837237318715028 6.913240209212707
+
+
+# name: family_link
+# type: matrix
+# rows: 1
+# columns: 2
+ 7 4
+
+
+# name: kappa
+# type: matrix
+# rows: 1
+# columns: 6
+ -375.7721737197621 4.326393078218434 3.999531468963915 1 0 1
+
+
+
+
+# name: parametric_component
+# type: matrix
+# rows: 1
+# columns: 31
+ 3.90847716899872 3.785893132825661 1.141655260726247 0.06671440640915378 0.05997601419754899 0.1360995310701148 0.1762974062515398 0.4032892358880494 1.169276954369894e-16 0 1.169276954369894e-16 0.9999999922835233 -1.561047579446026e-10 0 -1.561047579446026e-10 1.596710771828427 0.6764432915558409 0.2912884333568486 0.6764432880157893 -0.2059720129428417 0.9566352745913731 -0.205972040072825 -0.7071067834446033 1.908104674112378e-08 0.7071067789284913 -0.1121234137810513 0.1476679348555476 0.1371987652463793 0.05997601419754899 0.04529459702766524 0.03905309530472187
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/examples/run_example.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,26 @@
+#/bin/bash
+include ../bin/rdiff_config.sh
+
+set -e 
+
+echo
+echo ${PROG}: This program is part of the rDiff version $RDIFF_VERSION.
+echo
+echo rDiff performs differential expression testing from RNA-Seq measurements.
+echo
+
+if [ -z "$1" -o "$1" == '--help' ];
+then
+echo Usage: $0 poisson\|param\|nonparam
+  echo " or:" $0 --help
+  false
+fi
+if [ "$1" != 'poisson' -a "$1" != 'param' -a "$1" != 'nonparam' ];
+then
+echo invalid parameter: $1
+  false
+fi
+
+
+
+../bin/rdiff -o results -d data/ -a example_condition_A_replicate_1.bam,example_condition_A_replicate_2.bam -b example_condition_B_replicate_1.bam,example_condition_B_replicate_2.bam -g data/genes_example.gff3 -m $1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/galaxy/README	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,1 @@
+This directory contains wrappers for using rDiff as a Galaxy tool.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/galaxy/rdiff.xml	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,51 @@
+<tool id="rdiff-web" name="rDiff" version="0.3">
+    <description>Determines differentially expressed transcripts from read alignments</description>
+    <command interpreter="bash"> 
+        rdiff_run.sh $test_meth $anno_input $read_length $rdiff_out $rdiff_out.extra_files_path
+        #for $i in $replicate_groups
+        #for $j in $i.replicates
+        $j.bam_alignment?
+        #end for
+        :
+        #end for
+        >> $Log_File 
+    </command>
+  <inputs>
+
+    <!-- genome annotation in GFF format -->
+	<param format="gff3" name="anno_input" type="data" label="Genome annotation in GFF3 file" help="A tab delimited format for storing sequence features and annotations"/>
+
+    <!-- RNA-seq samples and corresponding replicates -->
+   <repeat name="replicate_groups" title="Sample" min="2" max="2">
+     <repeat name="replicates" title="Replicate">
+        <param format="bam" name="bam_alignment" type="data" label="BAM alignment file" help="BAM is the binary version of the SAM format, a tab-delimited text file that contains sequence alignment data."/>
+     </repeat>
+   </repeat>
+
+    
+     <param name="test_meth" type="select" label="rDiff testing method" help="Statistical test on differential transcript expression data." >
+            <option value="poisson">Poisson</option>
+            <option value="param">Parametric</option>
+            <option value="nonparam">Nonparametric</option>
+    </param>
+    <param name="read_length" type="text" value="75" help="default 75 nucleotide." label="Read length from sequencing experiment"/>
+
+  </inputs>
+
+  <outputs>
+    <data format="txt" name="rdiff_out" label="${tool.name} on ${on_string}: Differential Testing Result" />
+    <data format="txt" name="Log_File" label="${tool.name} on ${on_string}: log"/>
+  </outputs>
+  
+  <help>
+
+.. class:: infomark
+
+**What it does** 
+
+rDiff_ is a tool for differential expression testing of RNA-Seq data.
+
+.. _rDiff: http://bioweb.me/rdiff
+
+  </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/galaxy/rdiff_run.sh	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,90 @@
+#/bin/bash
+# Galaxy wrapper script for rDiff version 0.3
+# Copyright (C) 2013 cBio Department Memorial Sloan-Kettering Cancer Center
+
+#Licence Information: GPL
+#This program is free software; you can redistribute it and/or modify 
+#it under the terms of the GNU General Public License as published by 
+#the Free Software Foundation; either version 3 of the License, or 
+#(at your option) any later version
+
+set -e 
+
+PROG=`basename $0`
+DIR=`dirname $0`
+. ${DIR}/../bin/rdiff_config.sh
+
+echo
+echo ${PROG}: This program is part of the rDiff version $RDIFF_VERSION.
+echo
+echo rDiff performs differential expression testing from RNA-Seq measurements.
+echo 
+
+if [ -z "$1" -o "$1" == '--help' ];
+then
+  echo Usage: $0 poisson\|param\|nonparam in.gff readLength out.resultfile out_result_dir S1_in.bam?:S2_in.bam?:   
+  echo "     :" $0 poisson\|param\|nonparam in.gff readLength out.resultfile out_result_dir S1_R1_in.bam?S1_R2_in.bam?:S2_R1_in.bam?S2_R2_in.bam?:   
+  echo "   or:" $0 --help
+  echo 
+  false
+fi
+
+if [ "$1" != 'poisson' -a "$1" != 'param' -a "$1" != 'nonparam' ];
+then
+  echo invalid parameter: $1
+  echo 
+  echo "For usage:" $0 --help
+  false
+fi
+
+TEST_METH=$1 ## Test method 
+shift
+GFF_INPUT=$1 ## Genome annotation in GFF format 
+shift
+readlength=$1 ## Sequencing read length 
+shift 
+RDIFF_OUT=$1 ## rDiff result file
+shift
+RDIFF_OUT_PATH=$1 ## temp session working directory 
+shift
+
+if [ -d $RDIFF_OUT_PATH ]
+then       
+	echo "Using the extra file path as : $RDIFF_OUT_PATH"
+else
+	mkdir -p ${RDIFF_OUT_PATH} ## create the temp working directory
+fi 
+
+## changing tool working directory to the session path
+cd ${RDIFF_OUT_PATH}
+
+## Seperating the files according to the sample and correspondinf replicates. 
+SAMPLE_LIST=()
+for SAMPLES in $@
+do
+    IFS='?' 
+    for BAM_FILE in ${SAMPLES}
+    do
+        if [ $BAM_FILE = ":" ]; ## samples are seperated with ':'
+        then
+            SAMPLE_LIST+=(${SAMPLE_FNAME%?}) ## samples are separating 
+            SAMPLE_FNAME=""
+            continue
+        fi
+        if [ ! -f ${BAM_FILE}.bai ]
+        then
+            echo "Indexing $BAM_FILE"
+            ${RDIFF_SAMTOOLS_INCLUDE_DIR}/samtools index $BAM_FILE
+        else
+            echo "$BAM_FILE already indexed"
+        fi
+        La_fn=$BAM_FILE
+        SAMPLE_FNAME="$SAMPLE_FNAME$BAM_FILE," ## adding a ',' between each BAM files.
+    done
+done
+
+## rDiff execution call 
+${DIR}/../bin/rdiff -o ${RDIFF_OUT_PATH} -d / -g ${GFF_INPUT} -a ${SAMPLE_LIST[0]} -b ${SAMPLE_LIST[1]} -m ${TEST_METH} -L ${readlength}
+
+## rdiff out file
+ln -fs ${RDIFF_OUT_PATH}/P_values_rDiff_"${TEST_METH/param/parametric}".tab ${RDIFF_OUT}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/Makefile	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,24 @@
+include ../bin/rdiff_config.sh
+
+all:	get_reads.mex interval_overlap.mex get_reads.mexa64 interval_overlap.mexa64
+octave:	get_reads.mex interval_overlap.mex
+matlab:	get_reads.mexa64 interval_overlap.mexa64
+
+
+get_reads.mexa64:	get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp
+	rm -f *.o
+	${MATLAB_MEX_PATH} -g -O get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp -I${RDIFF_SAMTOOLS_INCLUDE_DIR} -L${RDIFF_SAMTOOLS_LIB_DIR} -lbam -lz -lcurses -I$(RDIFF_MATLAB_INCLUDE_DIR)
+
+interval_overlap.mexa64:	interval_overlap.cpp
+	${MATLAB_MEX_PATH} -g -O interval_overlap.cpp -I$(RDIFF_MATLAB_INCLUDE_DIR)
+
+get_reads.mex:	get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp
+	rm -f *.o
+	${RDIFF_OCTAVE_MKOCT} -g --mex get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp -I${RDIFF_SAMTOOLS_INCLUDE_DIR} -L${RDIFF_SAMTOOLS_LIB_DIR} -lbam -lz -lcurses
+
+interval_overlap.mex: interval_overlap.cpp
+	rm -f *.o
+	${RDIFF_OCTAVE_MKOCT} -g --mex interval_overlap.cpp
+
+clean:	
+	rm -f *.o *.mexa64 *.mex 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/Makefile.bck	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,30 @@
+include ../bin/rdiff_config.sh
+
+MEX=${MATLAB_MEX_PATH}
+MKOCTFILE=${OCTAVE_MKOCT}
+MATLAB_INCL=${MATLAB_INCLUDE_DIR}
+SAMDIR=${SAMTOOLS_DIR}
+
+
+all:	get_reads.mex interval_overlap.mex get_reads.mexa64 interval_overlap.mexa64
+octave:	get_reads.mex interval_overlap.mex
+matlab:	get_reads.mexa64 interval_overlap.mexa64
+
+
+get_reads.mexa64:	get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp
+	rm -f *.o
+	${MEX} -g -O get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp -I${SAMDIR} -L${SAMDIR} -lbam -lz -lcurses -I$(MATLAB_INCL)
+
+interval_overlap.mexa64:	interval_overlap.cpp
+	${MEX} -g -O interval_overlap.cpp -I$(MATLAB_INCL)
+
+get_reads.mex:	get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp
+	rm -f *.o
+	${MKOCTFILE} -g --mex get_reads.cpp get_reads_direct.cpp mex_input.cpp read.cpp -I${SAMDIR} -L${SAMDIR} -lbam -lz -lcurses
+
+interval_overlap.mex: interval_overlap.cpp
+	rm -f *.o
+	${MKOCTFILE} -g --mex interval_overlap.cpp
+
+clean:	
+	rm -f *.o *.mexa64 *.mex 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/get_reads.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,197 @@
+/* written by Jonas Behr, Regina Bohnert, Philipp Drewe and Gunnar Raetsch, FML Tuebingen, Germany, 2012 */
+
+#include <stdio.h>
+#include <signal.h>
+#include <mex.h>
+#include <vector>
+	using std::vector;
+#include "get_reads_direct.h"
+#include "mex_input.h"
+#include "read.h"
+#include <sys/types.h>
+#define MAXLINE 10000
+
+/*
+ * input: 
+ * 1 bam file
+ * 2 chromosome
+ * 3 region start (1-based index)
+ * 4 region end (1-based index)
+ * 5 strand (either '+' or '-' or '0')
+ * [6] collapse flag: if true the reads are collapsed to a coverage track
+ * [7] subsample percentage: percentage of reads to be subsampled (in per mill)
+ * [8] intron length filter
+ * [9] exon length filter
+ * [10] mismatch filter
+ *
+ * output: 
+ * 1 coverage
+ * [2] intron cell array
+ *
+ * example call: 
+ * [cov introns] = get_reads('polyA_left_I+_el15_mm1_spliced.bam', 'I', 10000, 12000, '-', 1, 30);
+ */
+void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
+  
+  if (nrhs<5 || nrhs>10 || (nlhs!=1 && nlhs!=2)) {
+    fprintf(stderr, "usage: [x [introns]] = get_reads(fname, chr, start, end, strand, [collapse], [subsample], [max intron length], [min exonlength], [max mismatches]);\n");
+    return; 
+  }
+  
+  /* obligatory arguments
+   * **********************/
+  char *fname = get_string(prhs[0]);
+	//fprintf(stdout, "arg1: %s\n", fname);
+  char *chr = get_string(prhs[1]);
+	//fprintf(stdout, "arg2: %s\n", chr);
+  int from_pos = get_int(prhs[2]);
+	//fprintf(stdout, "arg3: %d\n", from_pos);
+  int to_pos = get_int(prhs[3]);
+	//fprintf(stdout, "arg4: %d\n", to_pos);
+  char *strand = get_string(prhs[4]);
+	//fprintf(stdout, "arg5: %s\n", strand);
+
+  if (from_pos>to_pos)
+     mexErrMsgTxt("Start (arg 3) must be <= end (arg 4)\n");
+
+  if (strand[0]!='+' && strand[0]!='-' && strand[0]!='0') 
+    mexErrMsgTxt("Unknown strand (arg 5): either + or - or 0");
+
+  /* optional arguments
+   * ******************/	
+  int collapse = 0;
+  if (nrhs>=6)
+    collapse = get_int(prhs[5]);
+  
+  int subsample = 1000;	
+  if (nrhs>=7)
+    subsample = get_int(prhs[6]);
+	  
+  int intron_len_filter = 1e9;
+  if (nrhs>=8)
+    intron_len_filter = get_int(prhs[7]);
+
+  int exon_len_filter = -1;
+  if (nrhs>=9)
+    exon_len_filter = get_int(prhs[8]);
+
+  int filter_mismatch = 1e9;
+  if (nrhs>=10)
+    filter_mismatch = get_int(prhs[9]);
+
+  /* call function to get reads
+   * **************************/	
+  char region[MAXLINE];
+  sprintf(region, "%s:%i-%i", chr, from_pos, to_pos);
+
+  vector<CRead*> all_reads;
+  
+  get_reads_from_bam(fname, region, &all_reads, strand[0], subsample);
+ 
+	/* filter reads
+	* **************/	
+	vector<CRead*> reads;
+	for (int i=0; i<all_reads.size(); i++) 
+	{
+		if (all_reads[i]->max_intron_len()<intron_len_filter && all_reads[i]->min_exon_len()>exon_len_filter && all_reads[i]->get_mismatches()<=filter_mismatch && all_reads[i]->multiple_alignment_index==0)
+			reads.push_back(all_reads[i]);
+	}
+
+ 
+  /* prepare output
+   * **************/	
+  int num_rows = reads.size();
+  int num_pos = to_pos-from_pos+1;
+  
+  // read coverages collapsed 
+  if (collapse) {
+    plhs[0] = mxCreateNumericMatrix(1, num_pos, mxUINT32_CLASS, mxREAL);
+    uint32_t *mask_ret = (uint32_t*) mxGetData(plhs[0]);
+    if (num_pos>0 && mask_ret==NULL)
+      mexErrMsgTxt("Error allocating memory\n");
+    for (int i=0; i<reads.size(); i++) 
+	{
+        reads[i]->get_coverage(from_pos, to_pos, mask_ret);
+    }
+  }
+  // reads not collapsed
+  else {
+    uint32_t nzmax = 0; // maximal number of nonzero elements 
+    int len = to_pos-from_pos+1;
+    for (uint i=0; i<reads.size(); i++) {
+	for (uint n = 0; n < reads[i]->block_starts.size(); n++) {
+	  uint32_t from, to;
+	  if (reads[i]->block_starts[n]+reads[i]->start_pos-from_pos >= 0)
+	    from = reads[i]->block_starts[n]+reads[i]->start_pos-from_pos;
+	  else
+	    from = 0;
+	  if (reads[i]->block_starts[n]+reads[i]->start_pos-from_pos+reads[i]->block_lengths[n] >= 0)
+	    to = reads[i]->block_starts[n]+reads[i]->start_pos-from_pos+reads[i]->block_lengths[n];
+	  else
+	    to = 0;
+	  for (int bp=from; bp<to&bp<len; bp++) {
+	    nzmax++;
+	  }
+	}
+    }
+    // 1st row: row indices
+    // 2nd row: column indices
+    plhs[0] = mxCreateDoubleMatrix(2, nzmax, mxREAL);
+    double *mask_ret = (double*) mxGetData(plhs[0]);
+    if (nzmax>0 && mask_ret==NULL)
+      mexErrMsgTxt("Error allocating memory\n");
+    uint32_t mask_ret_c = 0; // counter
+    for (uint i=0; i<reads.size(); i++) 
+	{
+		reads[i]->get_reads_sparse(from_pos, to_pos, mask_ret, mask_ret_c, i);
+    }
+    if (mask_ret_c!=2*nzmax)
+      mexErrMsgTxt("Error filling index arrays for sparse matrix\n");
+    
+  }
+  // introns
+  if (nlhs==2) 
+  {
+    vector<int> intron_list;
+	for (int i=0; i<reads.size(); i++) 
+	{
+		reads[i]->get_introns(&intron_list);
+	}
+
+    plhs[1] = mxCreateNumericMatrix(2, intron_list.size()/2, mxUINT32_CLASS, mxREAL);
+	uint32_t *p_intron_list = (uint32_t*) mxGetData(plhs[1]);
+	for (int p = 0; p<intron_list.size(); p++) 
+	{	
+		p_intron_list[p] = intron_list[p];
+	}
+	intron_list.clear();	
+  }
+  //// introns
+  //if (nlhs==2) 
+  //{
+  //  // use x = [introns{:}]' in matlab to get the array of introns
+  //  const int cnum_rows = num_rows;
+  //  plhs[1] = mxCreateCellArray(1, &cnum_rows);
+  //  mxArray *intron_cell = plhs[1];
+  //  if (num_rows>0 && intron_cell==NULL)
+  //    mexErrMsgTxt("Error allocating memory\n");
+  //  vector<int> intron_list;
+  //  for (int i=0; i<reads.size(); i++) 
+  //  {
+  //    reads[i]->get_introns(&intron_list);
+  //    mxArray * mx_intron_list = mxCreateNumericMatrix(2, intron_list.size()/2, mxUINT32_CLASS, mxREAL);		
+  //    uint32_t *p_intron_list = (uint32_t*) mxGetData(mx_intron_list);
+  //    
+  //    for (int p = 0; p<intron_list.size(); p++) 
+  //    {
+  //      p_intron_list[p] = intron_list[p];
+  //    }
+  //    mxSetCell(intron_cell, i, mx_intron_list);
+  //    intron_list.clear();	
+  //  }
+  //}
+	for (int i=0; i<all_reads.size(); i++)
+		delete all_reads[i];
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/get_reads_direct.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,283 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#include <stdio.h>
+#include <assert.h>
+#include "sam.h"
+#include "get_reads_direct.h"
+
+#include <vector>
+  using std::vector;
+#include <string>
+  using std::string;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+	int beg, end;
+	samfile_t *in;
+} tmpstruct_t;
+
+typedef struct {
+    uint64_t u, v;
+} pair64_t;
+
+static inline int is_overlap(uint32_t beg, uint32_t end, const bam1_t *b)
+{
+    uint32_t rbeg = b->core.pos;
+    uint32_t rend = b->core.n_cigar? bam_calend(&b->core, bam1_cigar(b)) : b->core.pos + 1;
+    return (rend > beg && rbeg < end);
+}
+
+pair64_t * get_chunk_coordinates(const bam_index_t *idx, int tid, int beg, int end, int* cnt_off);
+
+  int bam_fetch_reads(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_header_t* header, vector<CRead*>* reads, char strand);
+
+// callback for bam_plbuf_init()
+static int pileup_func(uint32_t tid, uint32_t pos, int n, const bam_pileup1_t *pl, void *data)
+{
+	//tmpstruct_t *tmp = (tmpstruct_t*)data;
+	//if ((int)pos >= tmp->beg && (int)pos < tmp->end)
+	//	printf("%s\t%d\t%d\n", tmp->in->header->target_name[tid], pos + 1, n);
+	return 0;
+}
+#ifdef __cplusplus
+}
+#endif
+int parse_sam_line(char* line, CRead* read);
+int set_strand(char c);
+//void parse_cigar(bam1_t* b, CRead* read);
+void parse_cigar(bam1_t* b, CRead* read, bam_header_t* header);
+
+
+int get_reads_from_bam(char* filename, char* region, vector<CRead*>* reads, char strand, int lsubsample)
+{
+	subsample = lsubsample;
+	set_strand(strand);
+
+	srand (time(NULL));
+	//srand (1234);
+	tmpstruct_t tmp;
+	tmp.in = samopen(filename, "rb", 0);
+	if (tmp.in == 0) {
+		fprintf(stderr, "Fail to open BAM file %s\n", filename);
+		return 1;
+	}
+	int ref;
+	bam_index_t *idx;
+	bam_plbuf_t *buf;
+	idx = bam_index_load(filename); // load BAM index
+	if (idx == 0) {
+		fprintf(stderr, "BAM indexing file is not available.\n");
+		return 1;
+	}
+	bam_parse_region(tmp.in->header, region, &ref,
+	                 &tmp.beg, &tmp.end); // parse the region
+	if (ref < 0) {
+		fprintf(stderr, "Invalid region %s\n", region);
+		return 1;
+	}
+
+	buf = bam_plbuf_init(pileup_func, &tmp); // initialize pileup
+
+	bam_fetch_reads(tmp.in->x.bam, idx, ref, tmp.beg, tmp.end, buf, tmp.in->header, reads, strand);
+	//fprintf(stdout, "intron_list: %d \n", intron_list->size());
+
+	bam_plbuf_push(0, buf); // finalize pileup
+	bam_index_destroy(idx);
+	bam_plbuf_destroy(buf);
+	samclose(tmp.in);
+	return 0;
+}
+
+
+int bam_fetch_reads(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_header_t* header, vector<CRead*>* reads, char strand)
+{
+	int n_off;
+	pair64_t *off = get_chunk_coordinates(idx, tid, beg, end, &n_off);
+	if (off == 0) return 0;
+	{
+		// retrive alignments
+		uint64_t curr_off;
+		int i, ret, n_seeks;
+		n_seeks = 0; i = -1; curr_off = 0;
+		bam1_t *b = (bam1_t*)calloc(1, sizeof(bam1_t));
+		for (;;) {
+			if (curr_off == 0 || curr_off >= off[i].v) { // then jump to the next chunk
+				if (i == n_off - 1) break; // no more chunks
+				if (i >= 0) assert(curr_off == off[i].v); // otherwise bug
+				if (i < 0 || off[i].v != off[i+1].u) { // not adjacent chunks; then seek
+					bam_seek(fp, off[i+1].u, SEEK_SET);
+					curr_off = bam_tell(fp);
+					++n_seeks;
+				}
+				++i;
+			}
+			if ((ret = bam_read1(fp, b)) > 0) {
+				curr_off = bam_tell(fp);
+				if (b->core.tid != tid || b->core.pos >= end) break; // no need to proceed
+				else if (is_overlap(beg, end, b)) 
+				{
+					int rr = rand();
+					if ((rr%1000 < subsample))
+					{
+						CRead* read = new CRead();
+						parse_cigar(b, read, header);
+
+						if (strand == '0' || strand==read->strand[0])
+						{
+							reads->push_back(read);
+						}
+						else if (read->strand[0]=='0')
+						{
+							reads->push_back(read);
+						}
+						//else if (read->strand[0]=='0'&&((b->core.flag & g_flag_off) >0))
+						//{
+						//	//fprintf(stdout, "(-)-strand; read->strand[0]==0, num_exons: %i \n", read->block_starts.size());
+						//	// this flag means that the read has been reversed for alignment
+						//	// flag bit set and (-)-strand requested
+						//	reads->push_back(read);
+						//}  
+						//else if (read->strand[0]=='0'&&(g_flag_on>0&&(b->core.flag & g_flag_on)==0))
+						//{
+						//	//fprintf(stdout, "(+)-strand; read->strand[0]==0, num_exons: %i \n", read->block_starts.size());
+						//	// (+)-strand requested and flag bit not set
+						//	reads->push_back(read);
+						//}  
+					}
+				}
+			} else break; // end of file
+		}
+//		fprintf(stderr, "[bam_fetch] # seek calls: %d\n", n_seeks);
+		bam_destroy1(b);
+	}
+	free(off);
+	return 0;
+}
+
+void parse_cigar(bam1_t* b, CRead* read, bam_header_t* header)
+{
+	read->start_pos = b->core.pos+1;
+	read->set_strand('0');
+
+	for (int k = 0; k < b->core.n_cigar; ++k) 
+	{
+		int op = bam1_cigar(b)[k] & BAM_CIGAR_MASK; // operation
+		int l = bam1_cigar(b)[k] >> BAM_CIGAR_SHIFT; // length
+		//fprintf(stdout, "op:%d l:%d\n", op, l);
+		if (op == BAM_CMATCH) 
+		{
+			if (k==0)
+			{
+				read->block_lengths.push_back(l);
+				read->block_starts.push_back(0);
+			}
+			else
+			{
+				int op_prev = bam1_cigar(b)[k-1] & BAM_CIGAR_MASK; 
+				int l_prev = bam1_cigar(b)[k-1] >> BAM_CIGAR_SHIFT;
+				if (op_prev==BAM_CREF_SKIP)// intron before
+				{
+					if (read->block_lengths.size()>=1)
+					{
+						int last_block_start = (*(read->block_starts.end()-1));
+						int intron_start = last_block_start+(*(read->block_lengths.end()-1));
+						read->block_lengths.push_back(l);
+						read->block_starts.push_back(intron_start+l_prev);
+					}
+					else
+					{
+						// start of first block was not a match
+						read->block_lengths.push_back(l);
+						read->block_starts.push_back(0);
+					}
+				}
+				else
+				{
+					if (read->block_lengths.size()>=1 && op == BAM_CDEL)// if it is an insertion then the matching block is not inreased
+						(*(read->block_lengths.end()-1))+=l;
+					else
+					{
+						//char *samline = bam_format1(header, b);
+						//printf("header: %s \n", samline);
+					}
+				}
+			}
+		}
+		else if (op == BAM_CDEL) 
+		{
+			if (k>0 && read->block_lengths.size()>=1)
+				(*(read->block_lengths.end()-1))+=l;
+		} 
+		else if (op == BAM_CREF_SKIP)//intron
+		{}
+		else if (op == BAM_CINS || op == BAM_CSOFT_CLIP)
+		{}
+	}
+	// parse auxiliary data
+    uint8_t* s = bam1_aux(b);
+	uint8_t* end = b->data + b->data_len; 
+	while (s < end) 
+	{
+		 uint8_t type, key[2];
+		 key[0] = s[0]; key[1] = s[1];
+		 s += 2; type = *s; ++s;
+		 //fprintf(stdout, "\n%c%c:%c\n", key[0], key[1], type);
+		 if (type == 'A')
+		 {
+			if ( key[0] =='X' && key[1] == 'S')
+			{
+				read->set_strand((char) *s);
+			}
+		 	++s;
+		 }
+		else if (type == 'C')
+		{ 
+			if ( key[0] =='H' && key[1] == '0')
+			{
+				uint8_t matches = *s;
+				read->matches = (int) matches;
+			}
+			if ( key[0] =='N' && key[1] == 'M')
+			{
+				uint8_t mismatches = *s;
+				read->mismatches = (int) mismatches;
+			}
+			if ( key[0] =='H' && key[1] == 'I')
+			{
+				uint8_t mai = *s;
+				read->multiple_alignment_index = (int) mai;
+			}
+
+			++s;
+		}
+		else if (type == 'c') { ++s; }
+		else if (type == 'S') { s += 2;	}
+		else if (type == 's') { s += 2;	}
+		else if (type == 'I') { s += 4; }
+		else if (type == 'i') { s += 4; }
+		else if (type == 'f') { s += 4;	}
+		else if (type == 'd') { s += 8;	}
+		else if (type == 'Z') { ++s; }
+		else if (type == 'H') { ++s; }
+	}
+}
+
+int set_strand(char c)
+{
+	if (c=='+')
+	{
+		char* fl = (char*) "0x0010";
+		g_flag_on = strtol(fl, 0, 0);
+		g_flag_off = 0;
+	}
+	else if (c=='-')
+	{
+		char* fl = (char*) "0x0010";
+		g_flag_off = strtol(fl, 0, 0);
+		g_flag_on = 0;
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/get_reads_direct.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,17 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#ifndef __GET_READS_DIRECT_H__
+#define __GET_READS_DIRECT_H__
+
+#include <vector>
+  using std::vector;
+#include "read.h"
+
+static int g_flag_on = 0, g_flag_off = 0;
+
+static int subsample = 100; 
+static int collapse = 0;
+
+int get_reads_from_bam(char* filename, char* region, vector<CRead*>* reads, char strand, int lsubsample);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/interval_overlap.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,217 @@
+/*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 3 of the License, or
+*  (at your option) any later version.
+*
+*   Written (W) 2010-2011 Jonas Behr
+*   Copyright (C) 2010-2011 Max Planck Society
+*/
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <time.h>
+#include <math.h>
+#include <limits>
+#include <mex.h>
+#include <assert.h>
+#include <vector>
+  using std::vector;
+#include <algorithm>
+  using std::sort;
+  using std::min;
+  using std::max;
+
+typedef struct {
+    int start;
+    int stop;
+	int idx;
+	int set_id;
+} interval_t;
+
+bool compare (interval_t i, interval_t j) 
+{ 
+	return (i.start<j.start); 
+}
+
+bool overlaps(interval_t a, interval_t b)
+{
+	int v = min(a.stop,b.stop) - max(a.start,b.start) + 1;
+	return (v >= 1);
+}
+bool leftOf(interval_t a, interval_t b)
+{
+	return (a.stop < b.start);
+}
+
+void scan(interval_t f, vector<interval_t>* Wf, interval_t g, vector<interval_t>* Wg, vector<int>* overlap)
+{
+	vector<interval_t>::iterator i;
+	i=Wg->begin();
+	while (i<Wg->end())
+	{
+		interval_t g2 = *i;
+		if (leftOf(g2,f))
+		{
+			Wg->erase(i);// inefficient if Wg is large
+			// this moves all elements, therefore i is not incremented
+		}
+		else if (overlaps(g2,f))
+		{
+			if (g2.set_id==1)
+			{
+				//printf("overlap: [%i | %i, %i] [%i | %i, %i]\n", g2.idx, g2.start, g2.stop, f.idx, f.start, f.stop);
+				overlap->push_back(g2.idx);
+				overlap->push_back(f.idx);
+			}
+			else if (f.set_id==1)
+			{
+				//printf("overlap: [%i | %i, %i] [%i | %i, %i]\n", f.idx, f.start, f.stop, g2.idx, g2.start, g2.stop);
+				overlap->push_back(f.idx);
+				overlap->push_back(g2.idx);
+			}	
+			i++;
+		}
+		else
+		{
+			printf("never happens??\n");
+			i++;
+		}
+	}
+	if (!leftOf(f, g))
+	{
+		Wf->push_back(f);
+		//printf("push: [%i, %i] size:%i\n", f.start, f.stop, Wf->size());
+	}
+}
+
+/*
+ * prhs[0] first interval set starts
+ * prhs[1] first interval set stops
+ * prhs[2] second interval set starts
+ * prhs[3] second interval set stops
+ *
+ * return:
+ * plhs[0] one based index in first interval set overlapping with a interval in the second set
+ * plhs[1] corresponding index in the second set
+ *
+*/
+void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
+{
+	if (nrhs!=4)
+		mexErrMsgTxt("Expected 4 arguments: starts1, stops1, starts2, stops2 \n");
+	if (nlhs!=2)
+		mexErrMsgTxt("Expected 2 output arguments \n");
+
+	int num_intervals1 = mxGetNumberOfElements(prhs[0]);
+	assert(num_intervals1 == mxGetNumberOfElements(prhs[1]));
+	int num_intervals2 = mxGetNumberOfElements(prhs[2]);
+	assert(num_intervals2 == mxGetNumberOfElements(prhs[3]));
+	
+	//printf("num_intervals1: %i\n", num_intervals1);
+	//printf("num_intervals2: %i\n", num_intervals2);
+
+	double* starts1 = mxGetPr(prhs[0]);
+	double* stops1  = mxGetPr(prhs[1]);
+	double* starts2 = mxGetPr(prhs[2]);
+	double* stops2  = mxGetPr(prhs[3]);
+	
+	vector<interval_t> intervals1;
+	for (int i=0; i<num_intervals1; i++)
+	{
+		interval_t interval;
+		interval.start = starts1[i];
+		interval.stop = stops1[i];
+		interval.set_id = 1;
+		interval.idx = i+1;
+		intervals1.push_back(interval);
+		//printf("int1: [%i, %i] \n",intervals1[i].start, intervals1[i].stop);
+	}
+	interval_t i;
+	i.start = std::numeric_limits<int>::max();
+	i.stop = std::numeric_limits<int>::max();
+	i.set_id = std::numeric_limits<int>::max();
+	i.idx = std::numeric_limits<int>::max();
+	intervals1.push_back(i);
+
+	//printf("num_intervals1: %i\n", intervals1.size());
+	vector<interval_t> intervals2;
+	for (int i=0; i<num_intervals2; i++)
+	{
+		interval_t interval;
+		interval.start = starts2[i];
+		interval.stop = stops2[i];
+		interval.set_id = 2;
+		interval.idx = i+1;
+		intervals2.push_back(interval);
+		//printf("int2: [%i, %i] \n",intervals2[i].start, intervals2[i].stop);
+	}
+	intervals2.push_back(i);
+	//printf("num_intervals2: %i\n", intervals2.size());
+
+	sort(intervals1.begin(), intervals1.end(), compare);	
+	sort(intervals2.begin(), intervals2.end(), compare);	
+
+
+	vector<int> overlap;
+	vector<interval_t> Wx;
+	vector<interval_t> Wy;
+	vector<interval_t>::iterator x = intervals1.begin();
+	vector<interval_t>::iterator y = intervals2.begin();
+	while (x<intervals1.end() && y<intervals2.end())
+	{
+		//vector<interval_t>::iterator x;
+		//vector<interval_t>::iterator y;
+		//if (it1>intervals1.end())
+		//	x = inf_interval();
+		//else
+		//	x = it1;
+		//if (it2>intervals2.end())
+		//	y = inf_interval();
+		//else
+		//	y=it2;
+
+		if (x->start <= y->start)
+		{
+				scan(*x, &Wx, *y, &Wy, &overlap);
+				x++;
+		}
+		else
+		{
+			if (y<=intervals2.end())
+			{
+				scan(*y, &Wy, *x, &Wx, &overlap);
+				y++;
+			}
+		}
+	}
+
+	plhs[0] = mxCreateDoubleMatrix(1, overlap.size()/2, mxREAL);
+    double* idx1 = mxGetPr(plhs[0]);
+
+	plhs[1] = mxCreateDoubleMatrix(1, overlap.size()/2, mxREAL);
+    double* idx2 = mxGetPr(plhs[1]);
+
+	for (int i=0; i<overlap.size(); i+=2)
+	{
+		//printf("ov: %i [%i, %i] \n", i, overlap[i], overlap[i+1]);
+		idx1[i/2] = (double) overlap[i];
+		idx2[i/2] = (double) overlap[i+1];
+	}
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/mex_input.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,60 @@
+/*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 3 of the License, or
+*  (at your option) any later version.
+*
+*   Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch
+*   Copyright (C) 2010-2011 Max Planck Society
+*/
+
+
+#include <stdio.h>
+#include <mex.h>
+#include "mex_input.h"
+
+char *get_string(const mxArray *prhs) {
+  char *buf;
+  int buflen;
+  if (!prhs)
+    mexErrMsgTxt("get_string called with NULL pointer arg");
+  if (!mxIsChar(prhs))
+    mexErrMsgTxt("input is not a string");
+  if (mxGetM(prhs) != 1)
+    mexErrMsgTxt("input is not a row vector");
+  buflen = mxGetN(prhs) + 1;
+  buf = (char*) malloc(buflen);
+  /* copy the string from prhs into buf and add terminating NULL char */
+  if (mxGetString(prhs, buf, buflen))
+    mexErrMsgTxt("not enough space");
+  return buf;
+}
+
+bool get_bool(const mxArray *prhs)
+{
+	const int M = mxGetM(prhs);
+	const int N = mxGetN(prhs);
+	double *f = (double*) mxGetPr(prhs);
+
+	if (!prhs)
+		mexErrMsgTxt("Arg is NULL pointer");
+	if (M != 1 || N != 1)
+		mexErrMsgTxt("Arg is not a scalar");
+	if (f[0] != 0)
+		return true;
+	return false;
+}
+
+int get_int(const mxArray *prhs)
+{
+	const int M = mxGetM(prhs);
+	const int N = mxGetN(prhs);
+	double *f = (double*) mxGetPr(prhs);
+
+	if (!prhs)
+		mexErrMsgTxt("Arg is NULL pointer");
+	if (M != 1 || N != 1)
+		mexErrMsgTxt("Arg is not a scalar");
+
+	return (int) f[0];
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/mex_input.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,20 @@
+/*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 3 of the License, or
+*  (at your option) any later version.
+*
+*   Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch
+*   Copyright (C) 2010-2011 Max Planck Society
+*/
+
+
+#include <stdio.h>
+#include <mex.h>
+
+#ifndef __MEX_INPUT_h__
+#define __MEX_INPUT_h__
+	char *get_string(const mxArray *prhs);
+	bool get_bool(const mxArray *prhs);
+	int get_int(const mxArray *prhs);
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/read.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,214 @@
+/*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 3 of the License, or
+*  (at your option) any later version.
+*
+*   Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch
+*   Copyright (C) 2010-2011 Max Planck Society
+*/
+
+
+#include "read.h"
+
+CRead::CRead() {
+	read_id = NULL;
+	sam_line = NULL;
+	start_pos = 0;
+	matches = 0;
+	mismatches = 0;
+	multiple_alignment_index = 0;
+	strand = NULL;
+	left = false;
+	right = false;
+	reverse = false;
+}
+
+CRead::~CRead() {
+	delete[] read_id;
+	delete[] sam_line;
+	delete[] strand;
+}
+
+/*
+ * Augments 'coverage' array at the positions covered by the read in the queried interval.
+ */
+void CRead::get_coverage(int p_start_pos, int p_end_pos, uint32_t* coverage)
+{
+  //                    block1                block2
+  //   |=====|======|============|===========|======|====|
+  //         ^      ^                                    ^
+  //  p_start_pos   |                            p_end_pos
+  //            start_pos                               
+  //         |0000001111111111111000000000000111111100000|
+  //                           *coverage
+  int len = p_end_pos-p_start_pos+1;
+  for (uint32_t n = 0; n < block_starts.size(); n++) {
+    int32_t from, to;
+    from = block_starts[n]+start_pos-p_start_pos;
+    to = block_starts[n]+start_pos-p_start_pos+block_lengths[n];
+    if (from < 0)
+      from = 0;
+    if (to < 0)
+		continue;
+    else if (to > len)
+		to = len;
+    for (int bp=from; bp<to; bp++) {
+      coverage[bp]++;
+    }
+  }
+}
+int CRead::get_last_position()
+{
+	if (block_starts.size()>0) // this if for some reason zero in case of softclips
+		return start_pos+block_starts.back()+block_lengths.back();	
+	return -1;
+}
+
+/*
+ * Adds the column indices (= positions) covered by the read to 'reads' array in current row (= read).
+ * These indices can be used to build up a sparse matrix of reads x positions.
+ */
+void CRead::get_reads_sparse(int p_start_pos, int p_end_pos, double* reads, uint32_t & reads_c, uint32_t row_idx) {
+  int len = p_end_pos-p_start_pos+1;
+  for (uint32_t n = 0; n < block_starts.size(); n++) {
+    uint32_t from, to;
+    if (block_starts[n]+start_pos-p_start_pos >= 0)
+      from = block_starts[n]+start_pos-p_start_pos;
+    else
+      from = 0;
+    if (block_starts[n]+start_pos-p_start_pos+block_lengths[n] >= 0)
+      to = block_starts[n]+start_pos-p_start_pos+block_lengths[n];
+    else
+      to = 0;
+    for (int bp=from; bp<to&bp<len; bp++) {
+      reads[reads_c] = row_idx+1; // row indices for sparse matrix
+      reads[reads_c+1] = bp+1; // column indices for sparse matrix
+      reads_c += 2;
+    }
+  }
+}
+
+void CRead::get_acc_splice_sites(vector<int>* acc_pos)
+{
+	if (strand[0]=='+')
+	{
+		for (int k=1;k<block_starts.size(); k++)
+			acc_pos->push_back(start_pos+block_starts[k]-1);
+	}
+	else if (strand[0]=='-')
+	{
+		for (int k=1;k<block_starts.size(); k++)
+			acc_pos->push_back(start_pos+block_starts[k-1]+block_lengths[k-1]-2);
+	}
+}
+
+void CRead::get_don_splice_sites(vector<int>* don_pos)
+{
+	
+	if (strand[0]=='+')
+	{
+		for (int k=1;k<block_starts.size(); k++)
+			don_pos->push_back(start_pos+block_starts[k-1]+block_lengths[k-1]-2);
+	}
+	else if (strand[0]=='-')
+	{
+		for (int k=1;k<block_starts.size(); k++)
+			don_pos->push_back(start_pos+block_starts[k]-1);
+	}
+}
+
+int CRead::min_exon_len()
+{
+	int min = 1e8;
+	for (int k=0;k<block_starts.size(); k++)
+		if (block_lengths[k]<min)
+			min = block_lengths[k];
+	return min;
+}
+
+int CRead::max_intron_len()
+{
+	int max = 0;
+	for (int k=1;k<block_starts.size(); k++)
+		if (block_starts[k]-(block_starts[k-1]+block_lengths[k-1])>max)
+			max = block_starts[k]-(block_starts[k-1]+block_lengths[k-1]);
+	return max;
+}
+
+/*
+ * Adds start and end of introns in the read consecutively to the 'introns' vector.
+ */
+void CRead::get_introns(vector<int>* introns) 
+{
+  for (int i=1; i<block_starts.size(); i++) 
+  {
+    int istart = block_starts[i-1]+block_lengths[i-1]+start_pos;
+    int iend = block_starts[i]+start_pos-1;
+    introns->push_back(istart);
+    introns->push_back(iend);
+    //fprintf(stdout, "%i intron: %d->%d\n", i, istart, iend);
+  }
+}
+void CRead::get_introns(vector<uint32_t>* intron_starts, vector<uint32_t>* intron_ends, vector<uint32_t>* block_len1, vector<uint32_t>* block_len2) 
+{
+  for (int i=1; i<block_starts.size(); i++) 
+  {
+    uint32_t istart = block_starts[i-1]+block_lengths[i-1]+start_pos;
+    uint32_t iend = block_starts[i]+start_pos-1;
+    intron_starts->push_back(istart);
+    intron_ends->push_back(iend);
+    block_len1->push_back(block_lengths[i-1]) ;
+    block_len2->push_back(block_lengths[i]) ;
+  }
+}
+
+bool CRead::operator==(const CRead& read) const
+{
+	if (block_starts.size()!=read.block_starts.size())
+		return false;
+	if (block_lengths.size()!=read.block_lengths.size())
+		return false;
+	if (start_pos!=read.start_pos)
+		return false;
+	if (strand[0] != read.strand[0])
+		return false;
+	for (int i=0; i<block_starts.size(); i++)
+		if (block_starts[i]!=read.block_starts[i])
+			return false;
+	for (int i=0; i<block_lengths.size(); i++)
+		if (block_lengths[i]!=read.block_lengths[i])
+			return false;
+	return true;
+}
+
+void CRead::print()
+{
+	fprintf(stdout, "start_pos: %d\n", start_pos);
+	fprintf(stdout, "starts:");
+	for (int i=0; i<block_starts.size(); i++)
+	{
+		fprintf(stdout, " %d", block_starts[i]);
+	}
+	fprintf(stdout, "\n");
+
+	fprintf(stdout, "lengths:");
+	for (int i=0; i<block_starts.size(); i++)
+	{
+		fprintf(stdout, " %d", block_lengths[i]);
+	}
+	fprintf(stdout, "\n");
+}
+
+void CRead::set_strand(char s)
+{
+	delete[] strand;
+	strand = new char [2];
+	strand[0] = s;
+	strand[1] = '0';
+}
+
+int CRead::get_mismatches()
+{
+	return mismatches ;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/mex/read.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,72 @@
+/*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 3 of the License, or
+*  (at your option) any later version.
+*
+*   Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch
+*   Copyright (C) 2010-2011 Max Planck Society
+*/
+
+
+#ifndef __READ_H__
+#define __READ_H__
+
+#include <stdint.h>
+#include <cctype>
+#include <stdio.h>
+#include <vector>
+  using std::vector;
+
+
+class CRead {   
+ public:
+  /** constructor
+   */
+  CRead();
+  ~CRead();
+  
+  vector<int> block_starts;
+  vector<int> block_lengths;
+  char* read_id;
+  char* sam_line;
+  int start_pos;
+  char * strand;
+  int matches;
+  int mismatches;
+  int multiple_alignment_index;
+  bool left; 
+  bool right;
+  bool reverse;
+  
+  void get_coverage(int p_start_pos, int p_end_pos, uint32_t* coverage);
+  int get_last_position();
+  void get_reads_sparse(int p_start_pos, int p_end_pos, double* reads, uint32_t & reads_c, uint32_t row_idx);
+  void get_introns(vector<int>* introns);
+  void get_introns(vector<uint32_t>* intron_starts, vector<uint32_t>* intron_ends, vector<uint32_t>* block_len1, vector<uint32_t>* block_len2); 
+  void get_acc_splice_sites(vector<int>* acc_pos);
+  void get_don_splice_sites(vector<int>* acc_pos);
+  int max_intron_len();
+  int min_exon_len();
+  bool operator==(const CRead& read) const;
+  void print();
+  void set_strand(char s);
+  int get_mismatches();
+  static bool compare_by_read_id(const CRead* read1, const CRead* read2)
+  {
+	if (!read1->read_id)
+		return true;
+	if (!read2->read_id)
+		return false;
+
+	int cnt1=0;
+	while (read1->read_id[cnt1]!='\0')
+		cnt1++;
+	int cnt2 = 0;
+	while (read2->read_id[cnt2]!='\0')
+		cnt2++;
+	
+	return std::lexicographical_compare(read1->read_id,read1->read_id+cnt1,read2->read_id,read2->read_id+cnt2);
+  };
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/configure_rdiff.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,141 @@
+function CFG = configure_rdiff(CFG)
+% configure_rdiff(CFG)
+
+%%% rDiff parameters %%%
+
+% Give the filenames of the bam-files to be considered
+CFG.BAM_FILES={'condition_A_replicate_1.bam','condition_A_replicate_2.bam','condition_B_replicate_1.bam','condition_B_replicate_2.bam'};
+
+%Name of the experiment. Use the FILENAMES if the entries are empty.
+CFG.NAMES={'A1','A2','B1','B2'};
+
+
+% Give the directory where the bam-files are
+CFG.data_dir = '' ;
+
+% Indicate to which sample the bam-files belong
+CFG.SAMPLES=[1,1,2,2];
+
+% Location of the gene structure
+CFG.genes_path='' ;
+
+% Output directory
+CFG.out_base =  '' ;
+
+% Output directory for temporary files
+CFG.out_base_temp =  '' ;
+
+%Length of the reads
+CFG.sequenced_length=75;
+
+% Prefix for the chromosome name when getting geetting reads from
+% the bam-files
+CFG.chr_prefix='';
+
+%%% Read filters %%%
+
+% Minimal read length
+CFG.min_read_length=30;
+
+
+
+%%% Parameters for gene expression estimation
+%Count the number of reads ( CFG.estimate_gene_expression=1 for yes
+%give the Files for the expresison in CFG.GENE_EXPR_FILES
+CFG.estimate_gene_expression=1;
+
+% Use the following files in CFG.GENE_EXPR_FILES for the
+% gene_expression. Those must be Tab-delimitered files where each
+% line contains the gene name folowed by the expressiob
+CFG.Counts_gene_expression='';
+CFG.Counts_rDiff_parametric='';
+CFG.Counts_rDiff_nonparametric='';
+
+
+
+%%% Parameters for variance function
+
+% Use a parametric form for the variance function for sample 1: sigma= a + bx + cx^2
+% (CFG.predefined_variance_function1=[] if not; CFG.predefined_variance_function1=[a,b,c] otherwise)
+% If CFG.predefined_variance_function1=[a,b,c] is given, the other
+% parameters for the variance function estimations are ignored for
+% sample 1
+CFG.predefined_variance_function1=[];
+
+% Use a parametric form for the variance function for sample 2: sigma= a + bx + cx^2
+% (CFG.predefined_variance_function2=[] if not; CFG.predefined_variance_function2=[a,b,c] otherwise)
+% If CFG.predefined_variance_function2=[a,b,c] is given, the other
+% parameters for the variance function estimations are ignored 
+% for sample 2
+CFG.predefined_variance_function2=[];
+
+% compute variance function for sample 1 ( 1 = yes , 0 = use precomputed
+% variance function saved under CFG.variance_function_1) 
+CFG.compute_variance_function_1=1;
+CFG.variance_function_1='';
+CFG.save_variance_function_1='variance_function_1.mat';
+
+% compute variance function for sample 2 ( 1 = yes , 0 = use precomputed
+% variance function saved under CFG.variance_function2) 
+CFG.compute_variance_function_2=1;
+CFG.variance_function_2='';
+CFG.save_variance_function_2='variance_function_2.mat';
+
+% subsample points for the variance function estimate for rDiff.nonparametric
+CFG.rDiff_nonparametric_subsample_variance_estimation=10000;	
+
+% Subsample the mean-variance pairs to increas the speed of the
+% local regression.CFG.variance_samplebins is the number of bins to
+% use and CFG.variance_samples_per_bin is how many samples should
+% be drwan per bin
+CFG.variance_samplebins=100;
+CFG.variance_samples_per_bin=500;
+
+
+
+%%% Testing parameters %%%
+
+% subsample reads down to rDiff.subsample to increase speed ( If no
+% subsampling shall be done set CFG.rDiff_subsample to 0
+CFG.rDiff_subsample=10000;
+
+% Clib the first CFG.bases_to_clip bases at the end of the reads
+CFG.bases_to_clip=3;
+
+%Number of bootraps for nonparametric test
+CFG.bootstraps=1000;
+
+%Number of bins for variance matching
+CFG.nr_of_slices=10;
+
+% Tests to perform
+CFG.perform_nonparametric=0;
+CFG.perform_parametric=0;
+CFG.perform_mmd=0;
+CFG.perform_poisson=0;
+
+
+%%%%% rproc settings %%%%%
+CFG.use_rproc = 0; % 1: cluster submission or 0: locally
+if CFG.use_rproc,
+    CFG.rproc_num_jobs              = 100;
+    CFG.rproc_memreq                = 8000;
+    CFG.rproc_par.priority          = 55;
+    CFG.rproc_par.resubmit          = 3;
+    CFG.rproc_par.mem_req_resubmit  = [ 24000 40000 60000];
+    CFG.rproc_par.time_req_resubmit = [60*60 100*60 90*60];
+    CFG.rproc_par.express           = 0;
+    CFG.rproc_par.immediately_bg    = 0;
+    CFG.rproc_par.immediately       = 0;
+    CFG.rproc_par.arch              = 64;
+    CFG.rproc_par.identifier        = '';
+    CFG.rproc_par.verbosity         = 0;
+    CFG.rproc_time                  = 15*60; % mins
+else
+    CFG.rproc_num_jobs              = 1;
+end
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/genes_cell2struct.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,38 @@
+function genes_cell2struct(anno_fname)
+% GENES_CELL2STRUCT   Converts genes stored as a cell to struct.
+%
+%   genes_cell2struct(anno_fname)
+%
+%   -- input --
+%   anno_fname:   name of file where genes as cell are stored
+%
+%   -- output --
+%   genes as a struct
+%
+%
+%   This program is free software; you can redistribute it and/or modify
+%   it under the terms of the GNU General Public License as published by
+%   the Free Software Foundation; either version 3 of the License, or
+%   (at your option) any later version.
+%
+%   Written (W) 2009-2011 Regina Bohnert, Gunnar Raetsch
+%   Copyright (C) 2009-2011 Max Planck Society
+%
+
+load(anno_fname, 'genes');
+if iscell(genes)
+  genes_cell = genes;
+  clear genes;
+  for g = 1:length(genes_cell), 
+    gene = genes_cell{g};
+    for e = 1:length(gene.exons)
+      gene.exons{e} = double(gene.exons{e});
+    end    
+    gene.exons = reshape(gene.exons, 1, length(gene.exons));
+    gene.id = double(gene.id);
+    gene.start = double(gene.start);
+    gene.stop = double(gene.stop);
+    genes(g) = gene;
+  end
+  save(anno_fname, 'genes');
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/get_nonparametric_tests_caller.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,109 @@
+function []=get_nonparametric_tests_caller(PAR)
+
+
+CFG = PAR.CFG;
+genes = PAR.genes;
+OUT_STR='';
+
+% add paths
+addpath(CFG.paths);
+%load local variables
+data_dir=CFG.data_dir;
+OUT_STR=[];
+
+variance_function_nonparametric_1=PAR.variance_function_nonparametric_1;
+variance_function_nonparametric_2=PAR.variance_function_nonparametric_2;
+
+Counts_rDiff_nonparametric=PAR.Counts_rDiff_nonparametric;
+Gene_expression=PAR.Gene_expression;
+
+%clear variabe PAR
+clear PAR;
+
+NUMBER_OF_TESTS_PER_GENE=(CFG.perform_nonparametric+CFG.perform_mmd);
+if NUMBER_OF_TESTS_PER_GENE==0
+    return
+end
+P_VALS=cell(size(genes,2),NUMBER_OF_TESTS_PER_GENE+2);
+
+
+%iterate over genes
+for i=1:size(genes,2)
+    
+    %TEMP_COUNT contains the counts for the current gene
+    TEMP_COUNT=cell(1,3);
+    gene = genes(i);
+    
+    
+    OLD_OUT_STR=OUT_STR;
+    OUT_STR=['Current gene: ' gene.name ];
+    %print progress
+    if CFG.use_rproc
+        fprintf([OUT_STR '\n'])
+    else
+        % Erase old progress
+        fprintf(repmat('\b',1,length(OLD_OUT_STR)));
+        fprintf([OUT_STR])
+    end
+    
+    %set default return values
+    P_VALS{i,1}=gene.name;
+    
+    %check that the gene has exons defined
+    if isempty(gene.exons)
+        P_VALS{i,4}='Exons field empty in gene structure';
+        continue;
+    end
+    
+    %check that the gene is longer than the Reads. Otherwise the
+    %definition of regions does not makes sense
+    if gene.stop-gene.start<CFG.sequenced_length+3
+        continue;
+    end
+    %perform 
+    
+    
+    %Get the reads
+    READ_SET={};
+    for bam_ix=1:length(CFG.BAM_FILES)
+        CFG.curr_bamfile=CFG.BAM_FILES{bam_ix};
+        READ_SET{end+1} = get_reads_for_gene(CFG,gene);
+    end
+    %merge the reads per sample
+    SAMPLE1=find(CFG.SAMPLES==1);
+    SAMPLE2=find(CFG.SAMPLES==2);
+    
+       
+    COUNTER=2;
+    
+    if CFG.perform_mmd
+        reads1=[];
+        reads2=[];
+        SAMPLE_LENGTH1=length(SAMPLE1);
+        SAMPLE_LENGTH2=length(SAMPLE2);
+        for bam_ix=1:SAMPLE_LENGTH1
+            reads1=[reads1;READ_SET{SAMPLE1(bam_ix)}];
+        end
+        
+        for bam_ix=1:SAMPLE_LENGTH2
+            reads2=[reads2;READ_SET{SAMPLE2(bam_ix)}];
+        end
+        [PV, INFO]= rDiff_mmd(CFG,reads1,reads2);
+        P_VALS{i,COUNTER}={PV, INFO};
+        clear reads1
+        clear reads2
+        COUNTER=COUNTER+1;
+    end
+    
+    if CFG.perform_nonparametric
+        [PV, INFO]= rDiff_nonparametric(CFG,READ_SET(SAMPLE1),READ_SET(SAMPLE2),variance_function_nonparametric_1, variance_function_nonparametric_2);
+        P_VALS{i,COUNTER}={PV, INFO};
+        COUNTER=COUNTER+1;
+    end
+    
+end
+fprintf('\n')
+%Save the p-values
+OUT_FILENAME=[CFG.outfile_prefix '.mat'];
+save(OUT_FILENAME,'P_VALS')
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/get_parametric_tests_caller.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,82 @@
+function []=get_parametric_tests_caller(PAR)
+
+
+CFG = PAR.CFG;
+genes = PAR.genes;
+OUT_STR='';
+
+% add paths
+addpath(CFG.paths);
+%load local variables
+data_dir=CFG.data_dir;
+OUT_STR=[];
+
+variance_function_parametric_1=PAR.variance_function_parametric_1;
+variance_function_parametric_2=PAR.variance_function_parametric_2;
+
+Counts_rDiff_parametric=PAR.Counts_rDiff_parametric;
+Gene_expression=PAR.Gene_expression;
+
+%clear variabe PAR
+clear PAR;
+
+NUMBER_OF_TESTS_PER_GENE=(CFG.perform_parametric+CFG.perform_poisson);
+if NUMBER_OF_TESTS_PER_GENE==0
+    return
+end
+P_VALS=cell(size(genes,2),NUMBER_OF_TESTS_PER_GENE+12);
+
+
+%iterate over genes
+for i=1:size(genes,2)
+  %TEMP_COUNT contains the counts for the current gene
+  TEMP_COUNT=cell(1,3);
+  gene = genes(i);
+  
+  
+  OLD_OUT_STR=OUT_STR;
+  OUT_STR=['Current gene: ' gene.name ' '];
+  %print progress
+  if CFG.use_rproc
+      fprintf([OUT_STR '\n'])
+  else
+      % Erase old progress
+      fprintf(repmat('\b',1,length(OLD_OUT_STR)));
+      fprintf([OUT_STR])
+  end
+  
+  %set default return values
+  P_VALS{i,1}=gene.name;
+  
+  %check that the gene has exons defined
+  if isempty(gene.exons)
+    P_VALS{i,4}='Exons field empty in gene structure';
+    continue;
+  end
+
+  %check that the gene is longer than the Reads. Otherwise the
+  %definition of regions does not makes sense
+  if gene.stop-gene.start<CFG.sequenced_length+3
+    P_VALS{i,4}='Gene to short';
+    continue;
+  end
+  %perform 
+  COUNTER=2;
+  if CFG.perform_parametric
+      [PV, INFO]= rDiff_parametric(CFG,gene,Counts_rDiff_parametric(i,:),Gene_expression(i,:),variance_function_parametric_1, variance_function_parametric_2);
+      P_VALS{i,COUNTER}={PV, INFO};
+      COUNTER=COUNTER+1;
+  end
+      
+  if CFG.perform_poisson
+      [PV, INFO]= rDiff_poisson(CFG,gene,Counts_rDiff_parametric(i,:),Gene_expression(i,:));
+      P_VALS{i,COUNTER}={PV, INFO};
+  end
+  
+end
+
+fprintf('\n')
+%Save the p-values
+OUT_FILENAME=[CFG.outfile_prefix '.mat'];
+save(OUT_FILENAME,'P_VALS')
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/get_read_counts.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,158 @@
+function []=get_read_counts(CFG,genes)
+
+if CFG.use_rproc
+   JB_NR=1;
+   JOB_INFO = rproc_empty();
+end
+
+%%% Get the read counts
+if CFG.estimate_gene_expression==1
+    for RUN=1:size(CFG.BAM_FILES,2)
+        % configuration
+        CFG.curr_bamfile = CFG.BAM_FILES{RUN};
+        if not(CFG.use_rproc)
+            fprintf('Getting gene expression for: %s\n', CFG.curr_bamfile);
+        end
+        tic
+        %define the splits of the genes for the jobs
+        idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+        % submit jobs to cluster
+        for i = 1:CFG.rproc_num_jobs
+            PAR.genes = genes(idx(idx(:,2)==i,1)); 
+            CFG.rproc_memreq = 5000;
+            CFG.rproc_par.mem_req_resubmit = [10000 20000 32000];
+            CFG.rproc_par.identifier = sprintf('Exp.%i-',i);  
+            CFG.outfile_prefix=[CFG.out_base_temp CFG.NAMES{RUN} '_' num2str(i) '_of_' num2str(CFG.rproc_num_jobs) '.mat'];
+            PAR.CFG=CFG;
+            if CFG.use_rproc
+                fprintf(1, 'Submitting job %i to cluster\n',i);
+                JOB_INFO(JB_NR) = rproc('get_reads_caller', PAR,CFG.rproc_memreq, CFG.rproc_par, CFG.rproc_time); 
+                JB_NR=JB_NR+1;
+            else
+                get_reads_caller(PAR);
+            end
+        end
+        toc   
+    end
+    if CFG.use_rproc
+        [JOB_INFO num_crashed] = rproc_wait(JOB_INFO, 60, 1, -1);
+    end
+end
+
+%%% Generate the output files
+%load the count files
+%load the count files
+READS_PER_GENE=zeros(size(genes,2),size(CFG.BAM_FILES,2));
+GENE_EXPR=zeros(size(genes,2),size(CFG.BAM_FILES,2));
+
+Counts_rDiff_parametric=cell(size(genes,2),size(CFG.BAM_FILES,2));
+Counts_rDiff_nonparametric=cell(size(genes,2),size(CFG.BAM_FILES,2));
+
+
+%Field containing the errors
+ERRORS_NR=[];
+idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+% Iterate over the result files to load the data from the count files
+for RUN=1:size(CFG.BAM_FILES,2)
+    for j = 1:CFG.rproc_num_jobs
+        IN_FILENAME=[CFG.out_base_temp CFG.NAMES{RUN} '_' num2str(j) '_of_' num2str(CFG.rproc_num_jobs) '.mat'];
+	IDX=idx(idx(:,2)==j,1);
+        try
+            load(IN_FILENAME)
+            for k=1:length(IDX)
+	        %Check wether COUNTS is empty
+		if isempty(COUNTS{k})
+		    continue
+		end
+                %Get the number of reads mapping to a gene
+                if not(isempty(COUNTS{k}{2}))
+                    READS_PER_GENE(IDX(k),RUN)=COUNTS{k}{2};
+                end
+                
+                %get the number of nonalternative reads if
+                %possible. Otherwise use the number of reads
+                %mapping to a gene as gene expression
+                if not(isempty(COUNTS{k}{3}))
+                    GENE_EXPE(IDX(k),RUN)=COUNTS{k}{3};
+                else
+                    GENE_EXPE(IDX(k),RUN)=READS_PER_GENE(IDX(k),RUN);
+                end
+                
+                %get the Counts for rDiff.parametric
+                if not(isempty(COUNTS{k}{6}))
+                    Counts_rDiff_parametric{IDX(k),RUN}=COUNTS{k}{6};
+                end
+                
+                %get the counts for rDiff.nonparametric
+                if not(isempty(COUNTS{k}{4}))
+                    Counts_rDiff_nonparametric{IDX(k),RUN}=COUNTS{k}{4};
+                end
+            end
+        catch
+            warning(['There was a problem loading: ' IN_FILENAME ])
+            % If something went wrong
+            for k=1:length(IDX)
+                READS_PER_GENE(IDX(k),RUN)=0;
+                GENE_EXPR(IDX(k),RUN)=0;
+                Counts_rDiff_parametric{IDX(k),RUN}={};
+                Counts_rDiff_nonparametric{IDX(k),RUN}={};
+            end
+            ERRORS_NR=[ERRORS_NR; [RUN,i]];
+        end
+    end
+end   
+if not(isempty(ERRORS_NR))
+    warning('There have been problems loading some of the raw count files');
+end
+
+%If less than 10 reads use abulute number of reads
+GENE_EXPR(GENE_EXPR<10)=READS_PER_GENE(GENE_EXPR<10);
+
+%Generate gene expression tables
+
+%Open file handler for the gene expression table
+EXPR_TAB_FILENAME=[CFG.out_base 'Gene_expression.tab'];
+fid=fopen(EXPR_TAB_FILENAME,'w');
+
+%print header
+fprintf(fid,'gene');
+for i=1:length(CFG.NAMES)
+    fprintf(fid,'\t%s',CFG.NAMES{i});
+end
+fprintf(fid,'\n');
+
+for j=1:size(genes,2)
+   fprintf(fid,'%s',genes(j).name);
+   for i=1:length(CFG.NAMES)
+       fprintf(fid,'\t%i',GENE_EXPR(j,i));
+   end
+   fprintf(fid,'\n');
+end
+
+fclose(fid)
+
+%Determine interpreter
+if size(ver('Octave'),1)
+    INTERPR = 1;
+else
+    INTERPR = 0;
+end
+
+
+%Save alternative region count file for rDiff.parametric
+OUT_FILENAME=[CFG.out_base 'Alternative_region_counts.mat'];
+if INTERPR
+    save('-mat7-binary',OUT_FILENAME,'Counts_rDiff_parametric')
+else
+    save(OUT_FILENAME,'Counts_rDiff_parametric','-v7.3')
+end
+
+%Save alternative region count file for rDiff.nonparametric
+OUT_FILENAME=[CFG.out_base 'Nonparametric_region_counts.mat'];
+if INTERPR
+    save('-mat7-binary',OUT_FILENAME,'Counts_rDiff_nonparametric')
+else
+    save(OUT_FILENAME,'Counts_rDiff_nonparametric','-v7.3')
+end
+
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/get_reads_caller.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,150 @@
+function [COUNTS]=get_reads_caller(PAR)
+
+CFG = PAR.CFG;
+genes = PAR.genes;
+clear PAR;
+
+% add paths
+addpath(CFG.paths);
+
+data_dir=CFG.data_dir;
+OUT_STR=[];
+
+COUNTS=cell(size(genes,2),1);
+
+
+% NON_PARAM_SAMPLE contains the read start density 
+if CFG.perform_nonparametric
+    NON_PARAM_SAMPLE=sparse([],[],[],10000,1,5000);
+end
+
+
+for i=1:size(genes,2)
+  
+    
+      
+  %TEMP_COUNT contins the counts for the current gene
+  TEMP_COUNT=cell(1,7);
+  gene = genes(i);
+  
+  %set default return values
+  TEMP_COUNT{1}=gene.name;
+  TEMP_COUNT{2}=[];
+  TEMP_COUNT{3}=[];
+  TEMP_COUNT{4}=[];
+  TEMP_COUNT{5}=[];
+  TEMP_COUNT{6}=[];
+  
+  %check that the gene has exons defined
+  if isempty(gene.exons)
+    STAT{i}=TEMP_COUNT;
+    continue;
+  end
+
+  %check that the gene is longer than the Reads. Otherwise the
+  %definition of regions does not makes sense
+  if gene.stop-gene.start<CFG.sequenced_length+3
+    STAT{i}=TEMP_COUNT;
+    continue;
+  end
+  
+  %Get the reads from gene
+  [reads] = get_reads_for_gene(CFG,gene);
+
+ 
+  %Get total number of reads
+  NR_OF_READS=size(reads,1);
+  TEMP_COUNT{2}=NR_OF_READS;
+  
+ 
+  NR_OF_TRANS=size(gene.transcripts,2);
+  %check that the gene has more than one isoform
+  if NR_OF_TRANS<=1
+      STAT{i}=TEMP_COUNT;
+      continue;
+  end
+ 
+  
+  EXON_IDX=sum(gene.exonsequence,1)<NR_OF_TRANS;
+
+  %Transform the reads in to counts per region
+  [NEW_READS,UNEXPLAINED_READS,UNEXPLAINED_INDEX]= convert_reads_to_region_indicators(reads,gene);
+
+  if length(unique(sum(NEW_READS,2)))>1
+      warning(['Assignment of reads to regions is not unique for gene:' gene.name  '\n']); 
+  end
+  
+  
+  %Calulate gene expression
+  %Get the non_unique_regions
+  NON_ALT_EIRS=sum(gene.eirs_in_seq,1)==NR_OF_TRANS;
+  TEMP_COUNT{3}=sum(sum(NEW_READS(:,NON_ALT_EIRS),2)>0); 
+  
+  
+  %Get Counts for nonparametric variance function
+  if CFG.perform_nonparametric
+      %Get the read starts
+      [TEMP,START]=max(reads,[],2); 
+      read_starts=sparse((1:NR_OF_READS)',START,ones(NR_OF_READS,1),NR_OF_READS,size(reads,2),NR_OF_READS);
+      
+      %Get the index of the alternative reads
+      ALT_READ_IX=zeros(size(reads,1),1);
+      ALT_EIRS=and(sum(gene.eirs_in_seq,1)<NR_OF_TRANS,sum(gene.eirs_in_seq,1)>0);
+      ALT_READ_IX(UNEXPLAINED_INDEX==0)=sum(NEW_READS(:,ALT_EIRS),2)>0;
+      
+      %Get the coverage of the read starts
+      %COVERAGE=sum(read_starts(find(ALT_READ_IX>0),:),1);
+      if CFG.only_gene_start
+          COVERAGE=sum(reads,1);
+      else
+          COVERAGE=sum(reads(find(ALT_READ_IX>0),:),1);
+      end
+      if max(COVERAGE)>0
+          TEMP_COUNT{4}=COVERAGE;
+      else
+          TEMP_COUNT{4}=[];
+      end 
+  end
+  
+  
+  %Get counts for parametric settting
+  if or(CFG.perform_parametric,CFG.perform_poisson)
+      %Get the alternative reads 
+      ALT_EIRS=and(sum(gene.eirs_in_seq,1)<NR_OF_TRANS,sum(gene.eirs_in_seq,1)>0);
+      
+      %Return the Counts in the alternative EIRS
+      
+      COUNTS_PER_EIR=sum(NEW_READS(:,ALT_EIRS),1);
+      EXS_SEQ=gene.eirs_in_seq(:,ALT_EIRS);
+      [NEWCOLS,IDX2,POS]=unique(EXS_SEQ','rows');
+      NEWCOLS=NEWCOLS';
+      EIR_COUNTS=zeros(1,length(IDX2));
+      for j=1:max(POS)
+          EIR_COUNTS(j)=sum(COUNTS_PER_EIR(POS==j));
+      end
+      TEMP_COUNT{6}=EIR_COUNTS;
+  end
+  
+  clear NEW_READS
+  clear reads;
+  COUNTS{i}=TEMP_COUNT;
+  
+  OLD_OUT_STR=OUT_STR;
+  OUT_STR=['Finished ' num2str(i) ' out of ' num2str(size(genes,2)) ' genes'];
+  %print progress
+  if CFG.use_rproc
+      fprintf([OUT_STR '\n'])
+  else
+      % Erase old progress
+      fprintf(repmat('\b',1,length(OLD_OUT_STR)));
+      fprintf([OUT_STR])
+  end
+  
+  
+end
+fprintf('\n')
+%Save the counts
+OUT_FILENAME=[CFG.outfile_prefix];
+save(OUT_FILENAME,'COUNTS')
+%Save the nonparametric histogram
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/LICENSE	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,343 @@
+Note: This license does not necessarily apply to the 'Matlab-R link',
+R-D(Com) or dataio software included for convenience with this release.
+ 
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/README	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,163 @@
+                     Locfit, Matlab 2.01
+                     http://locfit.herine.net/
+
+                        April  2, 2007
+
+
+
+Attaching:
+
+Make sure that you've added this directory recursively (i.e. with
+all subdirectories) to your matlab search path.
+
+Basic usage:
+
+(1) To plot of a smooth curve:
+   load ethanol;         % load the dataset.
+   fit = locfit(E,NOx)   % local regression, with x,y vectors.
+   lfplot(fit)           % plot the fitted curve.
+
+(2a) To evaluate smooth at a specified set of points:
+  load ethanol;
+  xev = [0.6 0.7 0.8 0.9]';   % note column vector.
+  fit = locfit(E,NOx,'ev',xev);
+  yhat = predict(fit)
+
+(2b) Fit and interpolate approximation; may be faster for large datasets.
+  load ethanol;
+  xev = [0.6 0.7 0.8 0.9]';   % note column vector.
+  fit = locfit(E,NOx);
+  yhat = predict(fit,xev)
+
+(3) Surface smoothing - give matrix as first input.
+   load ethanol;             % load the dataset.
+   fit = locfit([E C],NOx)   % local regression.
+   lfplot(fit)
+
+
+Most of the arguments to the S (and R) locfit() function, described
+in my book, will also work in the Matlab version. E.g,
+fit = locfit(E,NOx,'deg',1,'kern','gauss')
+       % local linear fit with the gaussian kernel.
+Smoothing parameters can be set with 'nn' and 'h', instead of the
+alpha vector used in my book. So
+fit = locfit(E,NOx,'alpha',[0 0.2])
+fit = locfit(E,NOx,'h',0.2)
+are equivalent ways to specify a constant bandwidth h=0.2.
+
+
+The Book subdirectory contains functions to reproduce most of the book
+figures. Run them, and look at the source code (many around 5 lines or less)
+for more examples.
+
+
+Some differences with the S/R version (and book documentation).
+(1) Minor renaming of functions, mainly because matlab doesn't have
+    S-style methods. e.g. lfplot() instead of plot() or plot.locfit().
+(2) Use lfband() to add confidence bands to a plot.
+(3) Functions such as aicplot(), gcvplot() sensitive to order of
+    arguments. Smoothing parameter matrix must be given first.
+(4) For 2-d predictors, lfplot() defaults to producing a surface, rather
+    than contour, plot.
+(5) The predict() function has an optional 'direct' argument, which
+    causes the fit to be recomputed at each evaluation point, rather
+    than interpolation of existing points.
+(6) A few things aren't implemented yet...
+
+
+Technical stuff. Here's the layout of the structure returned by
+the locfit() function. The first three components (data, evaluation
+structure and smoothing parameters) are what you provide, or default
+values. The last two (fit points, parametric component) are what
+locfit computes.  The expected size or format of the entry is 
+given in parentheses.
+
+
+fit.data.x (n*d)
+fit.data.y (n*1)
+fit.data.weights (n*1 or 1*1)
+fit.data.censor (n*1 or 1*1)
+fit.data.baseline (n*1 or 1*1)
+fit.data.style (string length d)
+fit.data.scales (1*d)
+fit.data.xlim (2*d)
+
+fit.evaluation_structure.type (string)
+fit.evaluation_structure.module (string)
+fit.evaluation_structure.lower_left (numeric 1*d)
+fit.evaluation_structure.upper_right (numeric 1*d)
+fit.evaluation_structure.grid (numeric 1*d)
+fit.evaluation_structure.cut (numeric 1*d)
+fit.evaluation_structure.maxk
+fit.evaluation_structure.derivative
+
+fit.smoothing_parameters.alpha = (nn h pen) vector
+fit.smoothing_parameters.adaptive_criterion (string)
+fit.smoothing_parameters.degree (numeric)
+fit.smoothing_parameters.family (string)
+fit.smoothing_parameters.link (string)
+fit.smoothing_parameters.kernel (string)
+fit.smoothing_parameters.kernel_type (string)
+fit.smoothing_parameters.deren 
+fit.smoothing_parameters.deit
+fit.smoothing_parameters.demint
+fit.smoothing_parameters.debug
+
+fit.fit_points.evaluation_points (d*nv matrix)
+fit.fit_points.fitted_values (matrix, nv rows, many columns)
+fit.fit_points.evaluation_vectors
+fit.fit_points.fit_limits (d*2 matrix)
+fit.fit_points.family_link (numeric values)
+fit.fit_points.kappa (likelihood, degrees of freedom, etc)
+
+fit.parametric_component
+
+
+
+
+
+This was the OLD format:
+
++-{1} data
+|   +-{1} xdata matrix (n*d)
+|   +-{2} ydata column vector (n*1)
+|   +-{3} wdata weight vector (n*1 or 1*1)
+|   +-{4} cdata censoring vector (n*1 or 1*1)
+|   +-{5} base  baseline vector (n*1 or 1*1)
+|   +-{6} style vector (string length d)
+|   +-{7} scales vector (1*d)
+|   +-{8} xl xlim vector (2*d)
+|
++-{2} evaluation structure
+|   +-{1} structure type (string)
+|   +-{2} module (string)
+|   +-{3} ll corner of bounding box (numeric 1*d)
+|   +-{4} ur corner of bounding box (numeric 1*d)
+|   +-{5} mg vector for grid (numeric 1*d)
+|   +-{6} cut parameter for adaptive structures (numeric 1*d)
+|   +-{7} maxk memory control parameter
+|   +-{8} derivative vector
+|
++-{3} sp smoothing parameters
+|   +-{1} alpha = (nn h pen) vector
+|   +-{2} adaptive criterion (string)
+|   +-{3} local polynomial degree (numeric)
+|   +-{4} fitting family (string)
+|   +-{5} link (string)
+|   +-{6} kernel (string)
+|   +-{7} kernel type - product, spherical (string)
+|
++-{4} fpc fit points
+|   +-{1} evaluation points, d*nv matrix.
+|   +-{2} fitted values etc, (matrix, nv rows, many columns)
+|   +-{3} cell of vectors generated by evaluation structure.
+|   |   +-{1} ce integer vector.
+|   |   +-{2} s  integer vector.
+|   |   +-{3} lo integer vector.
+|   |   +-{4} hi integer vector.
+|   |
+|   +-{4} fit limits (d*2 matrix)
+|   +-{5} [family link] (numeric values)
+|   +-{6} 'kappa' vector. (likelihood, degrees of freedom, etc)
+|
++-{5} parametric component vector.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/Makefile	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,34 @@
+include ../../../bin/rdiff_config.sh
+
+MEX=${RDIFF_MATLAB_MEX_PATH}
+MKOCTFILE=${RDIFF_OCTAVE_MKOCT}
+MATLAB_INCL=${RDIFF_MATLAB_INCLUDE_DIR}
+LFSRC=liblfev.c liblocf.c libmut.c libtube.c
+LIBDIR=../lib
+INSTALLDIR=/usr/local
+all: octave
+octave:mexlf.mex mexpp.mex ../mex/mexlf.mex ../mex/mexpp.mex
+matlab:mexlf mexpp
+
+../mex/mexlf.mex: mexlf.mex
+	cp mexlf.mex ../mex/
+../mex/mexpp.mex: mexpp.mex
+	cp mexpp.mex ../mex/
+
+mexlf.mex: mexlf.c mlfut.c
+	${MKOCTFILE} -v -g --mex $(MXFLAGS) $(CFLAGS) mexlf.c mlfut.c liblocf.c libmut.c libtube.c liblfev.c $(LDFLAGS)
+mexpp.mex: mexpp.c mlfut.c
+	${MKOCTFILE} -v -g --mex $(MXFLAGS) $(CFLAGS) mexpp.c mlfut.c liblocf.c libmut.c libtube.c liblfev.c  $(LDFLAGS)
+
+mexlf: mexlf.c mlfut.c
+	${MEX} $(MXFLAGS) $(CFLAGS) mexlf.c mlfut.c $(LDFLAGS)
+mexpp: mexpp.c mlfut.c
+	${MEX} $(MXFLAGS) $(CFLAGS) mexpp.c mlfut.c $(LDFLAGS)
+nodlls: mexlf.c mlfut.c mexpp.c $(LFSRC)
+	${MEX} $(MXFLAGS) mexlf.c mlfut.c $(LFSRC)
+	${MEX} $(MXFLAGS) mexpp.c mlfut.c $(LFSRC)
+very-clean: clean
+	rm -f mexlf.mexglx mexpp.mexglx
+clean:
+	rm -f *.o *.mex *.mexglx *.mexa64
+FORCE:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/Makefile.bck	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,32 @@
+include ../../../bin/rdiff_config.sh
+
+MEX=${MATLAB_MEX_PATH}
+MKOCTFILE=${OCTAVE_MKOCT}
+MATLAB_INCL=${MATLAB_INCLUDE_DIR}
+SAMDIR=${SAMTOOLS_DIR}
+LFSRC=liblfev.c liblocf.c libmut.c libtube.c
+LIBDIR=../lib
+INSTALLDIR=/usr/local
+#LDFLAGS=-L$(LIBDIR) #-Wl,-rpath $(INSTALLDIR)/lib 
+#LDFLAGS= -lmut
+all: mexlf mexpp
+octave:mexlf_oct mexpp_oct
+matlab:mexlf mexpp
+
+mexlf_oct: mexlf.c mlfut.c
+	${MKOCTFILE} -v -g --mex $(MXFLAGS) $(CFLAGS) mexlf.c mlfut.c liblocf.c libmut.c libtube.c liblfev.c $(LDFLAGS)
+mexpp_oct: mexpp.c mlfut.c
+	${MKOCTFILE} -v -g --mex $(MXFLAGS) $(CFLAGS) mexpp.c mlfut.c liblocf.c libmut.c libtube.c liblfev.c  $(LDFLAGS)
+mexlf: mexlf.c mlfut.c
+	${MEX} $(MXFLAGS) $(CFLAGS) mexlf.c mlfut.c $(LDFLAGS)
+mexpp: mexpp.c mlfut.c
+	${MEX} $(MXFLAGS) $(CFLAGS) mexpp.c mlfut.c $(LDFLAGS)
+nodlls: mexlf.c mlfut.c mexpp.c $(LFSRC)
+	${MEX} $(MXFLAGS) mexlf.c mlfut.c $(LFSRC)
+	${MEX} $(MXFLAGS) mexpp.c mlfut.c $(LFSRC)
+very-clean: clean
+	rm -f mexlf.mexglx mexpp.mexglx
+clean:
+	rm -f *.o
+FORCE:
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/Makefile.matlab	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,19 @@
+LFSRC=liblfev.c liblocf.c libmut.c libtube.c
+LIBDIR=../lib
+INSTALLDIR=/usr/local
+LDFLAGS=-L$(LIBDIR) -Wl,-rpath $(INSTALLDIR)/lib -llfev -ltube -llocf -lmut
+CFLAGS=-I. -I../include
+all: mexlf mexpp
+mexlf: mexlf.c mlfut.c
+	mex $(MXFLAGS) $(CFLAGS) mexlf.c mlfut.c $(LDFLAGS)
+mexpp: mexpp.c mlfut.c
+	mex $(MXFLAGS) $(CFLAGS) mexpp.c mlfut.c $(LDFLAGS)
+nodlls: mexlf.c mlfut.c mexpp.c $(LFSRC)
+	mex $(MXFLAGS) mexlf.c mlfut.c $(LFSRC)
+	mex $(MXFLAGS) mexpp.c mlfut.c $(LFSRC)
+very-clean: clean
+	rm -f mexlf.mexglx mexpp.mexglx
+clean:
+	rm -f *.o
+FORCE:
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/design.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,32 @@
+/*
+ *   The design structure used in Locfit, and associated macro definitions.
+ */
+
+typedef struct {
+  int des_init_id;
+  double *wk;
+  Sint *ind;
+  int lwk, lind;
+
+  double *xev;                /* fitting point, length p          */
+  double *X;                  /* design matrix, length n*p        */
+  double *w, *di, *res, *th, *wd, h;
+  double *V, *P;              /* matrices with length p*p         */
+  double *f1, *ss, *oc, *cf;  /* work vectors, length p  */
+  double llk, smwt;
+  jacobian xtwx;     /* to store X'WVX and decomposition */
+  int cfn[1+MXDIM], ncoef;
+  Sint *fix;         /* integer vector for fixed coefficients. */
+  int (*itype)();    /* density integration function     */
+  int n, p;
+  int (*vfun)();     /* pointer to the vertex processing function. */
+} design;
+
+#define cfn(des,i) (des->cfn[i])
+#define d_x(des) ((des)->X)
+#define d_xi(des,i) (&(des)->X[i*((des)->p)])
+#define d_xij(des,i,j) ((des)->X[i*((des)->p)+j])
+#define is_fixed(des,i) ((des)->fix[i]==1)
+#define DES_INIT_ID 34988372
+
+extern int des_reqd(), des_reqi();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfcons.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,306 @@
+/*
+ *   Numeric values for constants used in locfit
+ */
+
+/*
+  MXDIM and MXDEG are maximum dimension and local polynomial
+  degree for Locfit. Note that some parts of the code may be
+  more restrictive.
+*/
+#define MXDIM 15
+#define MXDEG 7
+
+/*
+  floating point constants
+*/
+#ifndef PI
+#define PI    3.141592653589793238462643
+#endif
+#define S2PI  2.506628274631000502415765
+#define SQRT2 1.4142135623730950488
+#define LOGPI 1.144729885849400174143427
+#define GOLDEN 0.61803398874989484820
+#define HL2PI 0.91893853320467267 /* log(2pi)/2 */
+#define SQRPI 1.77245385090552    /* sqrt(pi)   */
+#define HUBERC 2.0
+
+/*
+  Criteria for adaptive local fitting  mi[MACRI]
+  1: localized CP;  2: ICI (katkovnik);  3: curvature model index
+  4: Increase bandwidth until locfit returns LF_OK
+*/
+#define ANONE 0
+#define ACP  1
+#define AKAT 2
+#define AMDI 3
+#define AOK  4
+
+/*
+  vector of double precision parameters.
+  0, 1, 2 are the three components of the smoothing parameter.
+  3 cut parameter for adaptive evaluation structures.
+  4-8 are likelihood, degrees of freedom and residual variance,
+  computed as part of the fit.
+  Stored as the lf.dp vector.
+*/
+#define DALP 0
+#define DFXH 1
+#define DADP 2
+#define DCUT 3
+#define DLK  4
+#define DT0  5
+#define DT1  6
+#define DRV  7
+#define DSWT 8
+#define DRSC 9
+#define LEND 10
+
+/*
+  Evaluation structures mi[MEV]
+  EFITP special for `interpolation' at fit points
+*/
+#define ENULL  0
+#define ETREE  1
+#define EPHULL 2
+#define EDATA  3
+#define EGRID  4
+#define EKDTR  5
+#define EKDCE  6
+#define ECROS  7
+#define EPRES  8
+#define EXBAR  9
+#define ENONE  10
+#define ESPHR  11
+#define EFITP  50
+#define ESPEC  100
+
+/*
+  integer parameters: sample size; dimension; number of local parameters etc.
+  stored as the lf.mi vector.
+*/
+#define MN     0
+#define MP     1
+#define MDEG0  2
+#define MDEG   3
+#define MDIM   4
+#define MACRI  5
+#define MKER   6
+#define MKT    7
+#define MIT    8
+#define MMINT  9
+#define MMXIT 10
+#define MREN  11
+#define MEV   12
+#define MTG   13
+#define MLINK 14
+#define MDC   15
+#define MK    16
+#define MDEB  17
+#define MGETH 18
+#define MPC   19
+#define MUBAS 20
+#define LENM  21
+
+/*
+  Link functions mi[MLINK].
+  Mostly as in table 4.1 of the book.
+  LDEFAU and LCANON are used to select default and canonical
+  links respectively. LINIT shouldn't be selected by user...
+*/
+#define LINIT  0
+#define LDEFAU 1
+#define LCANON 2
+#define LIDENT 3
+#define LLOG   4
+#define LLOGIT 5
+#define LINVER 6
+#define LSQRT  7
+#define LASIN  8
+
+/*
+  components of vector returned by the links() function
+  in family.c. ZLIK the likelihood; ZMEAN = estimated mean;
+  ZDLL = derivative of log-likelihood; ZDDLL = - second derivative
+*/
+#define LLEN  4
+#define ZLIK  0
+#define ZMEAN 1
+#define ZDLL  2
+#define ZDDLL 3
+
+/*
+  weight functions mi[MKER].
+  see Table 3.1 or the function W() in weights.c for definitions.
+*/
+#define WRECT 1
+#define WEPAN 2
+#define WBISQ 3
+#define WTCUB 4
+#define WTRWT 5
+#define WGAUS 6
+#define WTRIA 7
+#define WQUQU 8
+#define W6CUB 9
+#define WMINM 10
+#define WEXPL 11
+#define WMACL 12
+#define WPARM 13
+
+/*
+  type of multivariate weight function mi[MKT]
+  KSPH (spherical)  KPROD (product)
+  others shouldn't be used at present.
+*/
+#define KSPH   1
+#define KPROD  2
+#define KCE    3
+#define KLM    4
+#define KZEON  5
+
+#define STANGL 4
+#define STLEFT 5
+#define STRIGH 6
+#define STCPAR 7
+
+/*
+  Local likelihood family mi[MTG]
+  for quasi-likelihood, add 64.
+*/
+#define TNUL 0
+#define TDEN 1
+#define TRAT 2
+#define THAZ 3
+#define TGAUS 4
+#define TLOGT 5
+#define TPOIS 6
+#define TGAMM 7
+#define TGEOM 8
+#define TCIRC 9
+#define TROBT 10
+#define TRBIN 11
+#define TWEIB 12
+#define TCAUC 13
+#define TPROB 14
+
+/*
+  Integration type mi[MIT] for integration in
+  density estimation.
+*/
+#define INVLD 0
+#define IDEFA 1
+#define IMULT 2
+#define IPROD 3
+#define IMLIN 4
+#define IHAZD 5
+#define ISPHR 6
+#define IMONT 7
+
+/*
+  For prediction functions, what to predict?
+  PCOEF -- coefficients        PT0   -- influence function
+  PNLX  -- ||l(x)||            PBAND -- bandwidth h(x)
+  PDEGR -- local poly. degree  PLIK  -- max. local likelihood
+  PRDF  -- local res. d.f.     PVARI -- ||l(x)||^2
+*/
+#define PCOEF 1
+#define PT0   2
+#define PNLX  3
+#define PBAND 4
+#define PDEGR 5
+#define PLIK  6
+#define PRDF  7
+#define PVARI 8
+
+/*
+  Residual Types
+*/
+#define RDEV  1
+#define RPEAR 2
+#define RRAW  3
+#define RLDOT 4
+#define RDEV2 5
+#define RLDDT 6
+#define RFIT  7
+#define RMEAN 8
+
+/*
+  components of the colour vector
+*/
+#define CBAK 0
+#define CAXI 1
+#define CTEX 2
+#define CLIN 3
+#define CPOI 4
+#define CCON 5
+#define CCLA 6
+#define CSEG 7
+#define CPA1 8
+#define CPA2 9
+
+/*
+  variable types: double, int, char, argument list
+*/
+#define VDOUBLE 0
+#define VINT    1
+#define VCHAR   2
+#define VARGL   3
+#define VPREP   4
+#define VARC    5
+#define VVARI   6
+#define VXYZ    7
+
+/*
+  variable status
+*/
+#define STEMPTY   0
+#define STREGULAR 1
+#define STHIDDEN  3
+#define STPLOTVAR 4
+#define STSYSTEM  5
+#define STSYSPEC  6
+#define STREADFI  7
+
+/*
+  return status for the locfit() function
+*/
+#define LF_OK   0
+#define LF_DONE 1   /* done - forced break from iterations */
+#define LF_OOB  2   /* out of bounds, or large unstable parameter */
+#define LF_PF   3   /* perfect fit; interpolation; deviance=0 */
+#define LF_NCON 4   /* not converged */
+#define LF_NSLN 5   /* no solution - eg separation in binomial. */
+#define LF_NOPT 6   /* no or insufficient points with non-zero wt */
+#define LF_INFA 7   /* initial failure e.g. log(0) */
+#define LF_DEMP 10  /* density -- empty integration region */
+#define LF_XOOR 11  /* density -- fit point outside xlim region */
+#define LF_DNOP 12  /* density version of 6 */
+#define LF_FPROB 80
+#define LF_BADP 81  /* bad parameters e.g. neg prob for binomial */
+#define LF_LNK  82  /* invalid link */
+#define LF_FAM  83  /* invalid family */
+#define LF_ERR  99  /* error */
+
+/*
+ *  mi[MGETH] codes
+ *  scb(), pointwise codes are 71,...,75.
+ *         add 10 for simultaneous codes.
+ */
+#define GSTD 0
+#define GHAT 1
+#define GKAP 2
+#define GRBD 3
+#define GAMF 4
+#define GAMP 5
+#define GLSC 6
+#define GSMP 7
+#define GMIX 8
+#define GLM1 71
+#define GLM2 72
+#define GLM3 73
+#define GLM4 74
+#define GLDN 75
+
+/* bandwidth criteria */
+#define BGCV 1
+#define BCP  2
+#define BIND 3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfev.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,44 @@
+#include "local.h"
+
+int lf_error;
+
+  lfit lf;
+  design des;
+
+void calllf(x,y,n)
+double *x, *y;
+int n;
+{ lfdata *lfd;
+  fitpt *fp;
+  int i;
+
+  lfit_init(&lf);
+
+  lfd = &(lf.lfd);
+  lfd->x[0] = x;
+  lfd->y = y;
+  lfd->n = n;
+  lfd->d = 1;
+
+  startlf(&des,&lf,procv,1);
+//  startmodule(&lf,&des,"std",0);
+
+  fp = &lf.fp;
+  for (i=0; i<fp->nv; i++)
+    printf("%8.5f %8.5f\n",evptx(fp,i,0),fp->coef[i]);
+}
+
+int main()
+{ double x[10], y[10];
+
+  x[0] = 0; x[1] = 1; x[2] = 2; x[3] = 3; x[4] = 4;
+  x[5] = 5; x[6] = 6; x[7] = 7; x[8] = 8; x[9] = 9;
+
+  y[0] = 0.3692449; y[1] = 0.8194270;
+  y[2] = 1.6363139; y[3] =-0.9969944;
+  y[4] = 0.5359200; y[5] = 1.8642622;
+  y[6] = 0.3568127; y[7] = 0.4746753;
+  y[8] =-2.0038246; y[9] = 1.6636109;
+
+  calllf(x,y,10);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfev.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,236 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#ifndef I_LFEV_H
+#define I_LFEV_H
+
+#include "locf.h"
+#include "tube.h"
+
+/* uncomment the following line to allow plug-in modules. */
+/*#define ALLOW_MODULES*/
+
+#define DALP 0
+#define DFXH 1
+
+typedef struct {
+  int ev;
+  double *sv;
+  double cut;
+  double fl[2*MXDIM];
+  int *iwk, *ce, *s, *lo, *hi;
+  int liw, nce, ncm, maxk;
+  int mg[MXDIM];
+  void (*espec)();
+} evstruc;
+#define ev(evs)   ((evs)->ev)
+#define cut(evs)  ((evs)->cut)
+#define mk(evs)   ((evs)->maxk)
+#define mg(evs)   ((evs)->mg)
+
+typedef struct {
+  double *xev, *wk, *coef, *nlx, *t0, *lik, *h, *deg, *kap;
+  int lev, lwk;
+  int d, dcor, geth, hasd;
+  int nv, nvm;
+} fitpt;
+#define evp(fp)     ((fp)->xev)
+#define evpt(fp,i)  (&(fp)->xev[(i)*(fp)->d])
+#define evptx(fp,i,k) ((fp)->xev[(i)*(fp)->d+(k)])
+#define llk(fp) ((fp)->kap[0])
+#define df0(fp) ((fp)->kap[1])
+#define df1(fp) ((fp)->kap[2])
+#define rv(fp)  ((fp)->kap[3])
+#define rsc(fp) ((fp)->kap[5])
+#define dc(fp)  ((fp)->dcor)
+#define geth(fp)  ((fp)->geth)
+
+typedef struct {
+  int (*procv)(), keepv, keepc, nopc, isset, np;
+  void (*alloc)();
+  void (*pproc)();
+  double *params;
+} module;
+#define PROC_VERTEX(des,lf,i) (lf)->mdl.procv((des),(lf),(i))
+#define MODPARAMS(lf) ((lf)->mdl.params)
+#define MODPARAM(lf,i) ((lf)->mdl.params[i])
+#define MODNPARAMS(lf) ((lf)->mdl.np)
+#define PROCV(lf) (lf)->mdl.procv
+#define ALLOC(lf) (lf)->mdl.alloc
+#define PPROC(lf) (lf)->mdl.pproc
+#define KEEPC(lf) (lf)->mdl.keepc
+#define KEEPV(lf) (lf)->mdl.keepv
+#define NOPC(lf)  (lf)->mdl.nopc
+
+typedef struct {
+  int       lf_init_id;
+  lfdata    lfd;
+  smpar     sp;
+  evstruc   evs;
+  fitpt     fp;
+  deriv     dv;
+  paramcomp pc;
+  module    mdl;
+  } lfit;
+#define LF_INIT_ID 34897239
+#define NOBS(lf) ((lf)->lfd.n)
+#define NVAR(lf) ((lf)->lfd.d)
+#define NPAR(lf) ((lf)->sp.p)
+
+/*
+ * VVEC(lf,i) is storage vector for the i'th item.
+ * VVAL(lf,v,i) is the storage point for the i'th item when fitting at vertex v.
+ *   should have 0 <= i < keepv; keepv defined when initializing module.
+ */
+#define VVEC(lf,i) (&(lf)->fp.wk[(i)*(lf)->fp.nvm])
+#define VVAL(lf,v,i) ((lf)->fp.wk[(i)*(lf)->fp.nvm+(v)])
+#define VECR(lf) ((lf)->kap)
+
+/*
+ *  mi[MGETH] codes
+ *  scb(), pointwise codes are 71,...,75.
+ *         add 10 for simultaneous codes.
+ */
+#define GSTD 0
+#define GHAT 1
+#define GKAP 2
+#define GRBD 3
+#define GAMF 4
+#define GAMP 5
+#define GLSC 6
+#define GSMP 7
+#define GMIX 8
+#define GLM1 71
+#define GLM2 72
+#define GLM3 73
+#define GLM4 74
+#define GLDN 75
+
+/* bandwidth criteria */
+#define BGCV 1
+#define BCP  2
+#define BIND 3
+
+/*
+ * Evaluation structures
+ * EFITP special for `interpolation' at fit points
+ */
+#define ENULL  0
+#define ETREE  1
+#define EPHULL 2
+#define EDATA  3
+#define EGRID  4
+#define EKDTR  5
+#define EKDCE  6
+#define ECROS  7
+#define EPRES  8
+#define EXBAR  9
+#define ENONE  10
+#define ESPHR  11
+#define EFITP  50
+#define ESPEC  100
+
+/*
+ * For prediction functions, what to predict?
+ * PCOEF -- coefficients        PT0   -- influence function
+ * PNLX  -- ||l(x)||            PBAND -- bandwidth h(x)
+ * PDEGR -- local poly. degree  PLIK  -- max. local likelihood
+ * PRDF  -- local res. d.f.     PVARI -- ||l(x)||^2
+ */
+#define PCOEF 1
+#define PT0   2
+#define PNLX  3
+#define PBAND 4
+#define PDEGR 5
+#define PLIK  6
+#define PRDF  7
+#define PVARI 8
+
+/*
+ *  Residual Types
+ */
+#define RDEV  1
+#define RPEAR 2
+#define RRAW  3
+#define RLDOT 4
+#define RDEV2 5
+#define RLDDT 6
+#define RFIT  7
+#define RMEAN 8
+
+/* band.c */
+extern void band(), kdeselect(), kdecri(), bselect();
+
+/* dens_int.c */
+extern double dens_integrate();
+extern void dens_renorm(), lforder();
+
+/* ev_atree.c */
+extern void atree_start(), atree_grow(), atree_guessnv();
+extern double atree_int();
+
+/* ev_interp.c */
+extern double dointpoint(), cubintd();
+extern double linear_interp(), cubic_interp(), rectcell_interp();
+extern int exvval();
+extern void exvvalpv(), hermite2();
+
+/* ev_kdtre.c */
+extern void kdtre_start(), kdtre_guessnv();
+extern double kdtre_int();
+
+/* ev_sphere.c */
+extern void sphere_start(), sphere_guessnv();
+extern double sphere_int();
+
+/* ev_main.c */
+extern void trchck(), guessnv(), lfit_alloc(), evstruc_alloc(), evstruc_init();
+extern void dataf(), gridf(), crossf(), xbarf(), preset();
+extern int findpt(), newsplit(), lfit_reqd(), evstruc_reqi();
+extern int lfevstr();
+
+/* ev_trian.c */
+extern void triang_start(), triang_grow(), triang_guessnv();
+extern double triang_int();
+
+/* fitted.c */
+extern void fitted();
+extern double resid();
+extern int restyp();
+
+/* frend.c */
+extern void ressumm();
+extern double rss();
+
+/* lf_dercor.c */
+extern void dercor();
+
+/* pcomp.c */
+extern double addparcomp();
+extern void compparcomp(), subparcomp(), subparcomp2(), pcchk();
+extern int pc_reqd(), noparcomp();
+
+/* preplot.c */
+extern void preplot(), cpreplot();
+extern int setpppoints(), ppwhat();
+
+/* procv.c */
+extern int procv_nov(), procv_var();
+
+/* startlf.c */
+extern void set_flim(), set_scales(), nstartlf(), startlf(), lfit_init();
+extern void fitoptions(), clocfit(), endfit(), startmodule();
+extern int nofit(), initmodule();
+
+extern void initsimple(), initstd(), inithatm(), initgam(), initallcf();
+extern void initlscv(), initrband(), initscb(), initkappa(), initvord();
+
+/* modkappa.c */
+extern int constants();
+
+/* modrband.c */
+extern void rband();
+
+/* modstd.c */
+extern int procvstd();
+#endif /* define I_LFEV_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lffuns.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,140 @@
+extern int procv_llmix();
+
+/* adap.c */
+extern int alocfit();
+
+/* band.c */
+extern void band(), kdeselect(), kdecri();
+
+/* density.c */
+extern int densinit(), likeden();
+extern int fact[];
+extern void prodintresp(), prresp();
+extern int de_mint, de_itype, de_renorm;
+
+/* dens_haz.c */
+extern void haz_init();
+extern int hazint();
+
+/* dens_int.c */
+extern double dens_integrate();
+extern void dens_renorm(), dens_lscv(), lforder();
+
+/* ev_atree.c */
+extern void atree_start(), atree_grow(), atree_guessnv();
+extern double atree_int();
+
+/* ev_interp.c */
+extern double dointpoint(), cubintd();
+extern double linear_interp(), cubic_interp(), rectcell_interp();
+extern int exvval();
+extern void exvvalpv(), hermite2();
+
+/* ev_kdtre.c */
+extern void kdtre_start(), kdtre_guessnv();
+extern double kdtre_int();
+
+/* ev_sphere.c */
+extern void sphere_start(), sphere_guessnv();
+extern double sphere_int();
+
+/* ev_main.c */
+extern void trchck(), guessnv(), lfit_alloc();
+extern void dataf(), gridf(), crossf(), xbarf(), preset();
+extern int findpt(), newsplit(), lfit_reqd(), lfit_reqi();
+
+/* ev_trian.c */
+extern void triang_start(), triang_grow(), triang_guessnv();
+extern double triang_int();
+
+/* family.c */
+extern int links(), stdlinks(), defaultlink(), validlinks();
+extern double b2(), b3(), b4(), lf_link(), invlink();
+extern void setfamily();
+
+/* fitted.c */
+extern void fitted();
+
+/* frend.c */
+extern void ressumm();
+extern double rss();
+
+/* lf_dercor.c */
+extern void dercor();
+
+/* lf_fitfun.c */
+extern void fitfun(), makecfn(), designmatrix();
+extern int calcp(), coefnumber();
+
+/* lf_nbhd.c */
+extern double kordstat(), rho();
+extern void nbhd();
+
+/* lf_robust.c */
+extern double median();
+extern void lf_robust();
+
+/* lfstr.c */
+extern int lffamily(), lfkernel(), lfketype(), lflink();
+extern int deitye(), lfevstr(), lfacri();
+extern int ppwhat(), restyp();
+
+/* lf_vari.c */
+extern void lf_vcov(), comp_vari(), local_df();
+
+/* locfit.c */
+extern int locfit(), des_reqd(), des_reqi(), likereg();
+extern int reginit();
+extern void lfdata_init(), smpar_init(), deriv_init(), des_init(), lfiter();
+extern int lf_maxit, lf_debug;
+
+/* minmax.c */
+extern double ipower(), minmax();
+
+/* odint.c */
+extern int onedint();
+extern void recurint();
+
+/* pcomp.c */
+extern double addparcomp();
+extern void compparcomp(), subparcomp(), subparcomp2(), pcchk();
+extern int pc_reqd(), noparcomp();
+
+/* preplot.c */
+extern void preplot(), cpreplot();
+extern int setpppoints();
+
+/* procv.c */
+extern int procvhatm(), procv(), procvraw(), procveraw(), procvvord(), calcp();
+
+/* resid.c */
+extern double resid();
+
+/* scb.c */
+extern void scb(), cscbsim();
+
+/* scb_iface.c */
+extern int constants();
+
+/* simul.c */
+extern void liksim(), scbsim(), scbmax(), regband(), rband();
+
+/* startlf.c */
+extern void set_flim(), set_scales(), nstartlf(), startlf(), lfit_init();
+extern void fitoptions(), clocfit(), endfit(), startmodule();
+extern int nofit(), initmodule();
+
+/* strings.c */
+extern int stm(), pmatch(), matchlf(), matchrt(), checkltor(), checkrtol();
+extern void strip();
+
+/* wdiag.c */
+extern int wdiag(), wdiagp();
+
+/* weight.c */
+extern double W(), weight(), weightd(), Wd(), Wdd(), wint();
+extern double Wconv(), Wconv1(), Wconv4(), Wconv5(), Wconv6(), Wikk();
+extern int iscompact(), wtaylor();
+
+extern void initsimple(), initstd(), inithatm(), initgam();
+extern void initlscv(), initrband(), initscb(), initkappa();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfstruc.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,116 @@
+/*
+ *   Structures, typedefs etc used in Locfit
+ */
+
+typedef struct {
+  double *wk, *coef, *xbar, *f;
+  jacobian xtwx;
+  int lwk, haspc;
+} paramcomp;
+#define haspc(pc) ((pc)->haspc)
+
+typedef struct {
+  double *x[MXDIM];
+  double *y;
+  double *w;
+  double *b;
+  double *c;
+  double sca[MXDIM];
+  double xl[2*MXDIM];
+  int n, d, ord;
+  int sty[MXDIM];
+  varname yname, xname[MXDIM], wname, bname, cname;
+} lfdata;
+#define resp(lfd,i) (((lfd)->y==NULL) ? 0.0 : (lfd)->y[i])
+#define base(lfd,i) (((lfd)->b==NULL) ? 0.0 : (lfd)->b[i])
+#define prwt(lfd,i) (((lfd)->w==NULL) ? 1.0 : (lfd)->w[i])
+#define cens(lfd,i) (((lfd)->c==NULL) ? 0 : (int)(lfd)->c[i])
+#define datum(lfd,i,j) ((lfd)->x[i][j])
+#define dvari(lfd,i)   ((lfd)->x[i])
+
+typedef struct {
+  int deflink, canlink, quasi, robust;
+  int (*vallink)(), (*family)(), (*initial)(), (*like)(), (*pcheck)();
+} family;
+#define isquasi(fam) ((fam)->quasi)
+#define isrobust(fam) ((fam)->robust)
+extern int inllmix; /* flag needed to ensure correct behavior in llmix. */
+
+typedef struct {
+  double nn, fixh, adpen;
+  int ker, kt;
+  int deg, deg0, p;
+  int acri;
+  int fam, lin;
+  family fami;
+  int ubas;
+  double (*vb)();
+  void (*vbasis)();
+} smpar;
+#define nn(sp)   ((sp)->nn)
+#define fixh(sp) ((sp)->fixh)
+#define pen(sp)  ((sp)->adpen)
+#define ker(sp)  ((sp)->ker)
+#define kt(sp)   ((sp)->kt)
+#define deg(sp)  ((sp)->deg)
+#define deg0(sp) ((sp)->deg0)
+#define npar(sp) ((sp)->p)
+#define acri(sp) ((sp)->acri)
+#define ubas(sp) ((sp)->ubas)
+#define fam(sp)  ((sp)->fam)
+#define fami(sp)  (&(sp)->fami)
+#define link(sp) ((sp)->lin)
+
+typedef struct {
+  int deriv[MXDEG+2];
+  int nd;
+} deriv;
+
+typedef struct {
+  int ev;
+  double *sv;
+  double cut;
+  double fl[2*MXDIM];
+  Sint *iwk, *ce, *s, *lo, *hi;
+  int liw, nce, ncm, maxk;
+  int mg[MXDIM];
+  void (*espec)();
+} evstruc;
+#define ev(evs)   ((evs)->ev)
+#define cut(evs)  ((evs)->cut)
+#define mk(evs)   ((evs)->maxk)
+#define mg(evs)   ((evs)->mg)
+
+typedef struct {
+  double *xev, *coef, *nlx, *t0, *lik, *h, *deg, *kap;
+  int lev, lwk;
+  int d, dcor, geth, hasd;
+  int nv, nvm;
+} fitpt;
+#define evp(fp)     ((fp)->xev)
+#define evpt(fp,i)  (&(fp)->xev[(i)*(fp)->d])
+#define evptx(fp,i,k) ((fp)->xev[(i)*(fp)->d+(k)])
+#define llk(fp) ((fp)->kap[0])
+#define df0(fp) ((fp)->kap[1])
+#define df1(fp) ((fp)->kap[2])
+#define rv(fp)  ((fp)->kap[3])
+#define rsc(fp) ((fp)->kap[5])
+#define dc(fp)  ((fp)->dcor)
+#define geth(fp) ((fp)->geth)
+
+typedef struct {
+  int (*procv)(), keepv, keepc, nopc, isset;
+  void (*alloc)(), (*pp)();
+} module;
+
+typedef struct {
+  int       lf_init_id;
+  lfdata    lfd;
+  smpar     sp;
+  evstruc   evs;
+  fitpt     fp;
+  deriv     dv;
+  paramcomp pc;
+  module    mdl;
+  } lfit;
+#define LF_INIT_ID 34897239
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfwin.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,117 @@
+#define LFM_EXIT   0
+#define LFM_COPY   1
+#define LFM_PASTE  2
+#define LFM_RUN    3
+
+#define LFM_READA 10
+#define LFM_SAVED 11
+#define LFM_READD 12
+#define LFM_SUMD  13
+#define LFM_PLOTD 18
+
+#define LFM_LOCF  20
+#define LFM_READF 22
+#define LFM_SUMF  23
+#define LFM_PRFIT 24
+
+#define LFM_ALPH  70
+#define LFM_FIXH  71
+#define LFM_APEN  72
+#define LFM_DEG0  75
+#define LFM_DEG1  76
+#define LFM_DEG2  77
+#define LFM_DEG3  78
+
+#define LFM_ABOUT 81
+#define LFM_INDEX 82
+#define LFM_READM 83
+#define LFM_WWW   84
+
+#define LFP_ROT   10
+#define LFP_STY   11
+#define LFP_PS    42
+#define LFP_COL   13
+
+#define LFP_XLAB  20
+#define LFP_YLAB  21
+#define LFP_ZLAB  22
+#define LFP_MAIN  23
+
+#define AB_WWW 10
+
+#define CM_LINE 1
+#define CM_OK   99
+
+#define RL_ALP  0
+#define RL_ALPV 1
+#define RL_H    2
+#define RL_HV   3
+#define RL_PEN  4
+#define RL_PENV 5
+#define RL_DEG  10
+#define RL_FORM 20
+#define RL_FAMY 21
+#define RL_QUAS 22
+#define RL_ROBU 23
+#define RL_FIT  98
+#define RL_OK   99
+
+#define RP_VS 1
+#define RP_HS 2
+#define RP_AUT  3
+#define RP_DRAW 98
+#define RP_OK   99
+
+#define PD_X 1
+#define PD_Y 2
+#define PD_Z 3
+#define PD_DRAW 10
+#define PD_ADD  11
+#define PD_WIN  12
+
+#define PS_FIL 1
+#define PS_DR  8
+#define PS_CA  9
+#define PS_H 10
+#define PS_W 11
+
+#define SC_COL 1
+#define SC_SCO 2
+#define SC_DR  8
+#define SC_OK  9
+
+#define VN_VN 1
+#define VN_SA 2
+#define VN_RF 98
+#define VN_CA 99
+
+#define BP_ALP 1
+#define BP_ALV 2
+#define BP_AUT 3
+#define BP_FIT 4
+#define BP_EX 99
+
+#define GR_CM 10
+#define GR_ST 11
+
+#define LB_LAB  10
+#define LB_DRAW 11
+
+#define LD_QUIT 99
+
+/* about.c */
+extern void AboutDlg();
+
+/* devwin.c */
+extern void getwinsize(), GetFontInfo();
+
+/* dlgraph.c */
+extern void GStyleDlg(), LabelDlg(), PostDlg(), RotateDlg(), SetColDlg();
+
+/* winfile.c */
+extern void ReadFileDlg(), ReadDataDlg(), SaveDataDlg(), RunDlg();
+extern void ReadFitDlg();
+
+/* windlg.c */
+extern void BandDlg(), LocfitDlg(), PlotDataDlg(), wdispatch();
+extern int LFDefDlgProc();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/liblfev.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,4355 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+
+#include "mex.h"
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+extern void fitoptions();
+
+static double hmin, gmin, sig2, pen, vr, tb;
+static lfit *blf;
+static design *bdes;
+
+int procvbind(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ double s0, s1, bi;
+  int i, ii, k;
+  k = procv_var(des,lf,v);
+  wdiag(&lf->lfd, &lf->sp, des,des->wd,&lf->dv,0,1,0);
+  s0 = s1 = 0.0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    s0+= prwt(&lf->lfd,ii)*des->wd[i]*des->wd[i];
+    bi = prwt(&lf->lfd,ii)*fabs(des->wd[i]*ipower(dist(des,ii),deg(&lf->sp)+1));
+    s1+= bi*bi;
+  }
+  vr += s0;
+  tb += s1;
+  return(k);
+}
+
+double bcri(h,c,cri)
+double h;
+int c, cri;
+{ double num, den, res[10];
+  int (*pv)();
+  if (c==DALP)
+    blf->sp.nn = h;
+  else
+    blf->sp.fixh = h;
+  if ((cri&63)==BIND)
+  { pv = procvbind;
+    vr = tb = 0.0;
+  }
+  else pv = procvstd;
+  if (cri<64) startlf(bdes,blf,pv,0);
+  switch(cri&63)
+  { case BGCV:
+      ressumm(blf,bdes,res);
+      num = -2*blf->lfd.n*res[0];
+      den = blf->lfd.n-res[1];
+      return(num/(den*den));
+    case BCP:
+      ressumm(blf,bdes,res);
+      return(-2*res[0]/sig2-blf->lfd.n+pen*res[1]);
+    case BIND:
+      return(vr+pen*pen*tb);
+  } 
+  LERR(("bcri: unknown criterion"));
+  return(0.0);
+}
+
+void bsel2(h0,g0,ifact,c,cri)
+double h0, g0, ifact;
+int c, cri;
+{ int done, inc;
+  double h1, g1;
+  h1 = h0; g1 = g0;
+  done = inc = 0;
+  while (!done)
+  { h1 *= 1+ifact;
+    g0 = g1;
+    g1 = bcri(h1,c,cri);
+    if (g1<gmin) { hmin = h1; gmin = g1; }
+    if (g1>g0) inc++; else inc = 0;
+    switch(cri)
+    { case BIND:
+        done = (inc>=4) & (vr<blf->fp.nv);
+        break;
+      default:
+        done = (inc>=4);
+    }
+  }
+}
+
+void bsel3(h0,g0,ifact,c,cri)
+double h0, g0, ifact;
+int c, cri;
+{ double h1, g1;
+  int i;
+  hmin = h0; gmin = g0;
+  for (i=-1; i<=1; i++) if (i!=0)
+  { h1 = h0*(1+i*ifact);
+    g1 = bcri(h1,c,cri);
+    if (g1<gmin) { hmin = h1; gmin = g1; }
+  }
+  return;
+}
+
+void bselect(lf,des,c,cri,pn)
+lfit *lf;
+design *des;
+int c, cri;
+double pn;
+{ double h0, g0, ifact;
+  int i;
+  pen = pn;
+  blf = lf;
+  bdes = des;
+  if (cri==BIND) pen /= factorial(deg(&lf->sp)+1);
+  hmin = h0 = (c==DFXH) ? fixh(&lf->sp) : nn(&lf->sp);
+  if (h0==0) LERR(("bselect: initial bandwidth is 0"));
+  if (lf_error) return;
+  sig2 = 1.0;
+
+  gmin = g0 = bcri(h0,c,cri);
+  if (cri==BCP)
+  { sig2 = rv(&lf->fp);
+    g0 = gmin = bcri(h0,c,cri+64);
+  }
+  
+  ifact = 0.3;
+  bsel2(h0,g0,ifact,c,cri);
+
+  for (i=0; i<5; i++)
+  { ifact = ifact/2;
+    bsel3(hmin,gmin,ifact,c,cri);
+  }
+  if (c==DFXH)
+    fixh(&lf->sp) = hmin;
+  else
+    nn(&lf->sp) = hmin;
+  startlf(des,lf,procvstd,0);
+  ressumm(lf,des,lf->fp.kap);
+}
+
+double compsda(x,h,n)
+double *x, h;
+int n;
+/* n/(n-1) * int( fhat''(x)^2 dx ); bandwidth h */
+{ int i, j;
+  double ik, sd, z;
+  ik = wint(1,NULL,0,WGAUS);
+  sd = 0;
+
+  for (i=0; i<n; i++)
+    for (j=i; j<n; j++)
+    { z = (x[i]-x[j])/h;
+      sd += (2-(i==j))*Wconv4(z,WGAUS)/(ik*ik);
+    }
+  sd = sd/(n*(n-1)*h*h*h*h*h);
+  return(sd);
+}
+
+double widthsj(x,lambda,n)
+double *x, lambda;
+int n;
+{ double ik, a, b, td, sa, z, c, c1, c2, c3;
+  int i, j;
+  a = GFACT*0.920*lambda*exp(-log((double)n)/7)/SQRT2;
+  b = GFACT*0.912*lambda*exp(-log((double)n)/9)/SQRT2;
+  ik = wint(1,NULL,0,WGAUS);
+
+  td = 0;
+  for (i=0; i<n; i++)
+    for (j=i; j<n; j++)
+    { z = (x[i]-x[j])/b;
+      td += (2-(i==j))*Wconv6(z,WGAUS)/(ik*ik);
+    }
+
+  td = -td/(n*(n-1));
+  j = 2.0;
+  c1 = Wconv4(0.0,WGAUS);
+  c2 = wint(1,&j,1,WGAUS);
+  c3 = Wconv(0.0,WGAUS);  /* (2*c1/(c2*c3))^(1/7)=1.357 */
+  sa = compsda(x,a,n);
+  c = b*exp(log(c1*ik/(c2*c3*GFACT*GFACT*GFACT*GFACT)*sa/td)/7)*SQRT2;
+  return(c);
+}
+
+void kdecri(x,h,res,c,k,ker,n)
+double *x, h, *res, c;
+int k, ker, n;
+{ int i, j;
+  double degfree, dfd, pen, s, r0, r1, d0, d1, ik, wij;
+
+  if (h<=0) WARN(("kdecri, h = %6.4f",h));
+
+  res[0] = res[1] = 0.0;
+  ik = wint(1,NULL,0,ker);
+  switch(k)
+  { case 1: /* aic */
+      pen = 2.0;
+      for (i=0; i<n; i++)
+      { r0 = d0 = 0.0;
+        for (j=0; j<n; j++)
+        { s = (x[i]-x[j])/h;
+          r0 += W(s,ker);
+          d0 += s*s*Wd(s,ker);
+        }
+        d0 = -(d0+r0)/(n*h*h*ik);  /* d0 = d/dh fhat(xi) */
+        r0 /= n*h*ik;              /* r0 = fhat(xi) */
+        res[0] += -2*log(r0)+pen*W(0.0,ker)/(n*h*ik*r0);
+        res[1] += -2*d0/r0-pen*W(0.0,ker)/(n*h*ik*r0)*(d0/r0+1.0/h);
+      }
+      return;
+    case 2: /* ocv */
+      for (i=0; i<n; i++)
+      { r0 = 0.0; d0 = 0.0;
+        for (j=0; j<n; j++) if (i!=j)
+        { s = (x[i]-x[j])/h;
+          r0 += W(s,ker);
+          d0 += s*s*Wd(s,ker);
+        }
+        d0 = -(d0+r0)/((n-1)*h*h);
+        r0 = r0/((n-1)*h);
+        res[0] -= log(r0);
+        res[1] -= d0/r0;
+      }
+      return;
+    case 3: /* lscv */
+      r0 = r1 = d0 = d1 = degfree = 0.0;
+      for (i=0; i<n; i++)
+      { dfd = 0.0;
+        for (j=0; j<n; j++)
+        { s = (x[i]-x[j])/h;
+          wij = W(s,ker);
+          dfd += wij;
+/* 
+ *  r0 = \int fhat * fhat = sum_{i,j} W*W( (Xi-Xj)/h ) / n^2 h.
+ *  d0 is it's derivative wrt h.
+ *
+ *  r1 = 1/n sum( f_{-i}(X_i) ).
+ *  d1 is  it's derivative wrt h.
+ *
+ *  degfree = sum_i ( W_0 / sum_j W( (Xi-Xj)/h ) ) is fitted d.f.
+ */
+          r0 += Wconv(s,ker);
+          d0 += -s*s*Wconv1(s,ker);
+          if (i != j)
+          { r1 += wij;
+            d1 += -s*s*Wd(s,ker);
+          }
+        }
+        degfree += 1.0/dfd;
+      }
+      d1 -= r1;
+      d0 -= r0;
+      res[0] = r0/(n*n*h*ik*ik)   - 2*r1/(n*(n-1)*h*ik);
+      res[1] = d0/(n*n*h*h*ik*ik) - 2*d1/(n*(n-1)*h*h*ik);
+      res[2] = degfree;
+      return;
+    case 4: /* bcv */
+      r0 = d0 = 0.0;
+      for (i=0; i<n; i++)
+        for (j=i+1; j<n; j++)
+        { s = (x[i]-x[j])/h;
+          r0 += 2*Wconv4(s,ker);
+          d0 += 2*s*Wconv5(s,ker);
+        }
+      d0 = (-d0-r0)/(n*n*h*h*ik*ik);
+      r0 = r0/(n*n*h*ik*ik);
+      j = 2.0;
+      d1 = wint(1,&j,1,ker);
+      r1 = Wconv(0.0,ker);
+      res[0] = (d1*d1*r0/4+r1/(n*h))/(ik*ik);
+      res[1] = (d1*d1*d0/4-r1/(n*h*h))/(ik*ik);
+      return;
+    case 5: /* sjpi */
+      s = c*exp(5*log(h)/7)/SQRT2;
+      d0 = compsda(x,s,n);
+      res[0] = d0; /* this is S(alpha) in SJ */
+      res[1] = exp(log(Wikk(WGAUS,0)/(d0*n))/5)-h;
+      return;
+    case 6: /* gas-k-k */
+      s = exp(log(1.0*n)/10)*h;
+      d0 = compsda(x,s,n);
+      res[0] = d0;
+      res[1] = exp(log(Wikk(WGAUS,0)/(d0*n))/5)-h;
+      return;
+  }
+  LERR(("kdecri: what???"));
+  return;
+}
+
+double esolve(x,j,h0,h1,k,c,ker,n)
+double *x, h0, h1, c;
+int j, k, ker, n;
+{ double h[7], d[7], r[7], res[4], min, minh, fact;
+  int i, nc;
+  min = 1.0e30; minh = 0.0;
+  fact = 1.00001;
+  h[6] = h0; kdecri(x,h[6],res,c,j,ker,n);
+  r[6] = res[0]; d[6] = res[1];
+  if (lf_error) return(0.0);
+  nc = 0;
+  for (i=0; i<k; i++)
+  { h[5] = h[6]; r[5] = r[6]; d[5] = d[6];
+    h[6] = h0*exp((i+1)*log(h1/h0)/k);
+    kdecri(x,h[6],res,c,j,ker,n);
+    r[6] = res[0]; d[6] = res[1];
+    if (lf_error) return(0.0);
+    if (d[5]*d[6]<0)
+    { h[2] = h[0] = h[5]; d[2] = d[0] = d[5]; r[2] = r[0] = r[5];
+      h[3] = h[1] = h[6]; d[3] = d[1] = d[6]; r[3] = r[1] = r[6];
+      while ((h[3]>fact*h[2])|(h[2]>fact*h[3]))
+      { h[4] = h[3]-d[3]*(h[3]-h[2])/(d[3]-d[2]);
+        if ((h[4]<h[0]) | (h[4]>h[1])) h[4] = (h[0]+h[1])/2;
+        kdecri(x,h[4],res,c,j,ker,n);
+        r[4] = res[0]; d[4] = res[1];
+        if (lf_error) return(0.0);
+        h[2] = h[3]; h[3] = h[4];
+        d[2] = d[3]; d[3] = d[4];
+        r[2] = r[3]; r[3] = r[4];
+        if (d[4]*d[0]>0) { h[0] = h[4]; d[0] = d[4]; r[0] = r[4]; }
+                    else { h[1] = h[4]; d[1] = d[4]; r[1] = r[4]; }
+      }
+      if (j>=4) return(h[4]); /* first min for BCV etc */
+      if (r[4]<=min) { min = r[4]; minh = h[4]; }
+      nc++;
+    }
+  }
+  if (nc==0) minh = (r[5]<r[6]) ? h0 : h1;
+  return(minh);
+}
+
+void kdeselect(band,x,ind,h0,h1,meth,nm,ker,n)
+double h0, h1, *band, *x;
+int *ind, nm, ker, n, *meth;
+{ double scale, c;
+  int i, k;
+  k = n/4;
+  for (i=0; i<n; i++) ind[i] = i;
+  scale = kordstat(x,n+1-k,n,ind) - kordstat(x,k,n,ind);
+  c = widthsj(x,scale,n);
+  for (i=0; i<nm; i++)
+    band[i] = esolve(x,meth[i],h0,h1,10,c,ker,n);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   The function dens_integrate(lf,des,z) is used to integrate a density
+ *   estimate (z=1) or the density squared (z=2). This is used to renormalize
+ *   the estimate (function dens_renorm) or in the computation of LSCV
+ *   (in modlscv.c). The implementation is presently for d=1.
+ *
+ *   The computation orders the fit points selected by locfit, and
+ *   integrates analytically over each interval. For the log-link,
+ *   the interpolant used is peicewise quadratic (with one knot in
+ *   the middle of each interval); this differs from the cubic interpolant
+ *   used elsewhere in Locfit.
+ *
+ *   TODO: allow for xlim. What can be done simply in >=2 dimensions?
+ */
+
+#include "lfev.h"
+
+/*
+ * Finds the order of observations in the array x, and
+ * stores in integer array ind.
+ * At input, lset l=0 and r=length(x)-1.
+ * At output, x[ind[0]] <= x[ind[1]] <= ...
+ */
+void lforder(ind,x,l,r)
+int *ind, l, r;
+double *x;
+{ double piv;
+  int i, i0, i1;
+  piv = (x[ind[l]]+x[ind[r]])/2;
+  i0 = l; i1 = r;
+  while (i0<=i1)
+  { while ((i0<=i1) && (x[ind[i0]]<=piv)) i0++;
+    while ((i0<=i1) && (x[ind[i1]]>piv))  i1--;
+    if (i0<i1)
+    { ISWAP(ind[i0],ind[i1]);
+      i0++; i1--;
+    }
+  }
+  /* now, x[ind[l..i1]] <= piv < x[ind[i0..r]].
+     put the ties in the middle */
+  while ((i1>=l) && (x[ind[i1]]==piv)) i1--;
+  for (i=l; i<=i1; i++)
+    if (x[ind[i]]==piv)
+    { ISWAP(ind[i],ind[i1]);
+      while (x[ind[i1]]==piv) i1--;
+    }
+
+  if (l<i1) lforder(ind,x,l,i1);
+  if (i0<r) lforder(ind,x,i0,r);
+}
+
+/*
+ *  estdiv integrates the density between fit points x0 and x1.
+ *  f0, f1 are function values, d0, d1 are derivatives.
+ */
+double estdiv(x0,x1,f0,f1,d0,d1,lin)
+double x0, x1, f0, f1, d0, d1;
+int lin;
+{ double cf[4], I[2], dlt, e0, e1;
+
+  if (x0==x1) return(0.0);
+
+  if (lin==LIDENT)
+  {
+/* cf are integrals of hermite polynomials.
+ * Then adjust for x1-x0.
+ */
+    cf[0] = cf[1] = 0.5;
+    cf[2] = 1.0/12.0; cf[3] = -cf[2];
+    return( (cf[0]*f0+cf[1]*f1)*(x1-x0)
+          + (cf[2]*d0+cf[3]*d1)*(x1-x0)*(x1-x0) );
+  }
+
+/*
+ * this is for LLOG
+ */
+
+  dlt = (x1-x0)/2;
+  cf[0] = f0;
+  cf[1] = d0;
+  cf[2] = ( 2*(f1-f0) - dlt*(d1+3*d0) )/(4*dlt*dlt);
+  recurint(0.0,dlt,cf,I,0,WRECT);
+  e0 = I[0];
+
+  cf[0] = f1;
+  cf[1] = -d1;
+  cf[2] = ( 2*(f0-f1) + dlt*(d0+3*d1) )/( 4*dlt*dlt );
+  recurint(0.0,dlt,cf,I,0,WRECT);
+  e1 = I[0];
+
+  return(e0+e1);
+}
+
+/*
+ *   Evaluate the integral of the density estimate to the power z.
+ *   This would be severely messed up, if I ever implement parcomp
+ *   for densities.
+ */
+double dens_integrate(lf,des,z)
+lfit *lf;
+design *des;
+int z;
+{ int has_deriv, i, i0, i1, nv, *ind;
+  double *xev, *fit, *deriv, sum, term;
+  double d0, d1, f0, f1;
+  fitpt *fp;
+
+  fp = &lf->fp;
+
+  if (fp->d >= 2)
+  { WARN(("dens_integrate requires d=1"));
+    return(0.0);
+  }
+
+  has_deriv = (deg(&lf->sp) > 0); /* not right? */
+  fit = fp->coef;
+  if (has_deriv)
+    deriv = &fit[fp->nvm];
+  xev = evp(fp);
+
+  /*
+   * order the vertices
+   */
+  nv = fp->nv;
+  if (lf->lfd.n<nv) return(0.0);
+  ind = des->ind;
+  for (i=0; i<nv; i++) ind[i] = i;
+  lforder(ind,xev,0,nv-1);
+  sum = 0.0;
+
+  /*
+   * Estimate the contribution of the boundaries.
+   * should really check flim here.
+   */
+  i0 = ind[0]; i1 = ind[1];
+  f1 = fit[i0];
+  d1 = (has_deriv) ? deriv[i0] :
+         (fit[i1]-fit[i0])/(xev[i1]-xev[i0]);
+  if (d1 <= 0) WARN(("dens_integrate - ouch!"));
+  if (z==2)
+  { if (link(&lf->sp)==LLOG)
+    { f1 *= 2; d1 *= 2; }
+    else
+    { d1 = 2*d1*f1; f1 = f1*f1; }
+  }
+  term = (link(&lf->sp)==LIDENT) ? f1*f1/(2*d1) : exp(f1)/d1;
+  sum += term;
+
+  i0 = ind[nv-2]; i1 = ind[nv-1];
+  f0 = fit[i1];
+  d0 = (has_deriv) ? deriv[i1] :
+         (fit[i1]-fit[i0])/(xev[i1]-xev[i0]);
+  if (d0 >= 0) WARN(("dens_integrate - ouch!"));
+  if (z==2)
+  { if (link(&lf->sp)==LLOG)
+    { f0 *= 2; d0 *= 2; }
+    else
+    { d0 = 2*d0*f0; f0 = f0*f0; }
+  }
+  term = (link(&lf->sp)==LIDENT) ? -f0*f0/(2*d0) : exp(f0)/d0;
+  sum += term;
+  
+  for (i=1; i<nv; i++)
+  { i0 = ind[i-1]; i1 = ind[i];
+    f0 = fit[i0]; f1 = fit[i1];
+    d0 = (has_deriv) ? deriv[i0] :
+              (f1-f0)/(xev[i1]-xev[i0]);
+    d1 = (has_deriv) ? deriv[i1] : d0;
+    if (z==2)
+    { if (link(&lf->sp)==LLOG)
+      { f0 *= 2; f1 *= 2; d0 *= 2; d1 *= 2; }
+      else
+      { d0 *= 2*f0; d1 *= 2*f1; f0 = f0*f0; f1 = f1*f1; }
+    }
+    term = estdiv(xev[i0],xev[i1],f0,f1,d0,d1,link(&lf->sp));
+    sum += term;
+  }
+
+  return(sum);
+}
+
+void dens_renorm(lf,des)
+lfit *lf;
+design *des;
+{ int i;
+  double sum;
+  sum = dens_integrate(lf,des,1);
+  if (sum==0.0) return;
+  sum = log(sum);
+  for (i=0; i<lf->fp.nv; i++) lf->fp.coef[i] -= sum;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   This file contains functions for constructing and
+ *   interpolating the adaptive tree structure. This is
+ *   the default evaluation structure used by Locfit.
+ */
+
+#include "lfev.h"
+
+/*
+  Guess the number of fitting points.
+  Needs improving!
+*/
+void atree_guessnv(evs,nvm,ncm,vc,d,alp)
+evstruc *evs;
+double alp;
+int *nvm, *ncm, *vc, d;
+{ double a0, cu, ifl;
+  int i, nv, nc;
+
+  *ncm = 1<<30; *nvm = 1<<30;
+  *vc = 1 << d;
+
+  if (alp>0)
+  { a0 = (alp > 1) ? 1 : 1/alp;
+    if (cut(evs)<0.01)
+    { WARN(("guessnv: cut too small."));
+      cut(evs) = 0.01;
+    }
+    cu = 1;
+    for (i=0; i<d; i++) cu *= MIN(1.0,cut(evs));
+    nv = (int)((5*a0/cu)**vc);   /* this allows 10*a0/cu splits */
+    nc = (int)(10*a0/cu+1);      /* and 10*a0/cu cells */
+    if (nv<*nvm) *nvm = nv;
+    if (nc<*ncm) *ncm = nc;
+  }
+
+  if (*nvm == 1<<30) /* by default, allow 100 splits */
+  { *nvm = 102**vc;
+    *ncm = 201;
+  }
+
+  /* inflation based on mk */
+  ifl = mk(evs)/100.0;
+  *nvm = *vc+(int)(ifl**nvm);
+  *ncm = (int)(ifl**ncm);
+  
+}
+
+/*
+  Determine whether a cell in the tree needs splitting.
+  If so, return the split variable (0..d-1).
+  Otherwise, return -1.
+*/
+int atree_split(lf,ce,le,ll,ur)
+lfit *lf;
+int *ce;
+double *le, *ll, *ur;
+{ int d, vc, i, is;
+  double h, hmin, score[MXDIM];
+  d = lf->fp.d; vc = 1<<d;
+
+  hmin = 0.0;
+  for (i=0; i<vc; i++)
+  { h = lf->fp.h[ce[i]];
+    if ((h>0) && ((hmin==0)|(h<hmin))) hmin = h;
+  }
+
+  is = 0;
+  for (i=0; i<d; i++)
+  { le[i] = (ur[i]-ll[i])/lf->lfd.sca[i];
+    if ((lf->lfd.sty[i]==STCPAR) || (hmin==0))
+      score[i] = 2*(ur[i]-ll[i])/(lf->evs.fl[i+d]-lf->evs.fl[i]);
+    else
+      score[i] = le[i]/hmin;
+    if (score[i]>score[is]) is = i;
+  }
+  if (cut(&lf->evs)<score[is]) return(is);
+  return(-1);
+}
+
+/*
+  recursively grow the tree structure, begining with the parent cell.
+*/
+void atree_grow(des,lf,ce,ct,term,ll,ur)
+design *des;
+lfit *lf;
+int *ce, *ct, *term;
+double *ll, *ur;
+{ int nce[1<<MXDIM];
+  int i, i0, i1, d, vc, pv, tk, ns;
+  double le[MXDIM], z;
+  d = lf->fp.d; vc = 1<<d;
+
+  /* does this cell need splitting?
+     If not, wrap up and return.
+  */
+  ns = atree_split(lf,ce,le,ll,ur);
+  if (ns==-1)
+  { if (ct != NULL) /* reconstructing terminal cells */
+    { for (i=0; i<vc; i++) term[*ct*vc+i] = ce[i];
+      (*ct)++;
+    }
+    return;
+  }
+
+  /* split the cell at the midpoint on side ns */
+  tk = 1<<ns;
+  for (i=0; i<vc; i++)
+  { if ((i&tk)==0) nce[i] = ce[i];
+    else
+    { i0 = ce[i];
+      i1 = ce[i-tk];
+      pv = (lf->lfd.sty[i]!=STCPAR) &&
+           (le[ns] < (cut(&lf->evs)*MIN(lf->fp.h[i0],lf->fp.h[i1])));
+      nce[i] = newsplit(des,lf,i0,i1,pv);
+      if (lf_error) return;
+    }
+  }
+  z = ur[ns]; ur[ns] = (z+ll[ns])/2;
+  atree_grow(des,lf,nce,ct,term,ll,ur);
+  if (lf_error) return;
+  ur[ns] = z;
+  for (i=0; i<vc; i++)
+    nce[i] = ((i&tk)== 0) ? nce[i+tk] : ce[i];
+  z = ll[ns]; ll[ns] = (z+ur[ns])/2;
+  atree_grow(des,lf,nce,ct,term,ll,ur);
+  if (lf_error) return;
+  ll[ns] = z;
+}
+
+void atree_start(des,lf)
+design *des;
+lfit *lf;
+{ int d, i, j, k, vc, ncm, nvm;
+  double ll[MXDIM], ur[MXDIM];
+
+  if (lf_debug>1) mut_printf(" In atree_start\n");
+  d = lf->fp.d;
+  atree_guessnv(&lf->evs,&nvm,&ncm,&vc,d,nn(&lf->sp));
+  if (lf_debug>2) mut_printf(" atree_start: nvm %d ncm %d\n",nvm,ncm);
+  trchck(lf,nvm,ncm,vc);
+
+  /* Set the lower left, upper right limits. */
+  for (j=0; j<d; j++)
+  { ll[j] = lf->evs.fl[j];
+    ur[j] = lf->evs.fl[j+d];
+  }
+
+  /* Set the initial cell; fit at the vertices. */
+  for (i=0; i<vc; i++)
+  { j = i;
+    for (k=0; k<d; ++k)
+    { evptx(&lf->fp,i,k) = (j%2) ? ur[k] : ll[k];
+      j >>= 1;
+    }
+    lf->evs.ce[i] = i;
+    PROC_VERTEX(des,lf,i);
+    if (lf_error) return;
+    lf->evs.s[i] = 0;
+  }
+  lf->fp.nv = vc;
+
+  /* build the tree */
+  atree_grow(des,lf,lf->evs.ce,NULL,NULL,ll,ur);
+  lf->evs.nce = 1;
+}
+
+double atree_int(lf,x,what)
+lfit *lf;
+double *x;
+int what;
+{ double vv[64][64], *ll, *ur, h, xx[MXDIM];
+  int lo, tk, ns, nv, nc, d, i, vc;
+  int ce[64];
+  fitpt *fp;
+  evstruc *evs;
+
+  fp = &lf->fp;
+  evs= &lf->evs;
+  d = fp->d;
+  vc = 1<<d;
+
+  for (i=0; i<vc; i++)
+  { setzero(vv[i],vc);
+    nc = exvval(fp,vv[i],i,d,what,1);
+    ce[i] = evs->ce[i];
+  }
+  ns = 0;
+  while(ns!=-1)
+  { ll = evpt(fp,ce[0]); ur = evpt(fp,ce[vc-1]);
+    ns = atree_split(lf,ce,xx,ll,ur);
+    if (ns!=-1)
+    { tk = 1<<ns;
+      h = ur[ns]-ll[ns];
+      lo = (2*(x[ns]-ll[ns])) < h;
+      for (i=0; i<vc; i++) if ((tk&i)==0)
+      { nv = findpt(fp,evs,(int)ce[i],(int)ce[i+tk]);
+        if (nv==-1) LERR(("Descend tree problem"));
+        if (lf_error) return(0.0);
+        if (lo)
+        { ce[i+tk] = nv;
+          if (evs->s[nv]) exvvalpv(vv[i+tk],vv[i],vv[i+tk],d,ns,h,nc);
+                    else exvval(fp,vv[i+tk],nv,d,what,1);
+        }
+        else
+        { ce[i] = nv;
+          if (evs->s[nv]) exvvalpv(vv[i],vv[i],vv[i+tk],d,ns,h,nc);
+                    else exvval(fp,vv[i],nv,d,what,1);
+      } }
+  } }
+  ll = evpt(fp,ce[0]); ur = evpt(fp,ce[vc-1]);
+  return(rectcell_interp(x,vv,ll,ur,d,nc));
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+double linear_interp(h,d,f0,f1)
+double h, d, f0, f1;
+{ if (d==0) return(f0);
+  return( ( (d-h)*f0 + h*f1 ) / d );
+}
+
+void hermite2(x,z,phi)
+double x, z, *phi;
+{ double h;
+  if (z==0)
+  { phi[0] = 1.0; phi[1] = phi[2] = phi[3] = 0.0;
+    return;
+  }
+  h = x/z;
+  if (h<0)
+  { phi[0] = 1; phi[1] = 0;
+    phi[2] = h; phi[3] = 0;
+    return;
+  }
+  if (h>1)
+  { phi[0] = 0; phi[1] = 1;
+    phi[2] = 0; phi[3] = h-1;
+    return;
+  }
+  phi[1] = h*h*(3-2*h);
+  phi[0] = 1-phi[1];
+  phi[2] = h*(1-h)*(1-h);
+  phi[3] = h*h*(h - 1);
+}
+
+double cubic_interp(h,f0,f1,d0,d1)
+double h, f0, f1, d0, d1;
+{ double phi[4];
+  hermite2(h,1.0,phi);
+  return(phi[0]*f0+phi[1]*f1+phi[2]*d0+phi[3]*d1);
+}
+
+double cubintd(h,f0,f1,d0,d1)
+double h, f0, f1, d0, d1;
+{ double phi[4];
+  phi[1] = 6*h*(1-h);
+  phi[0] = -phi[1];
+  phi[2] = (1-h)*(1-3*h);
+  phi[3] = h*(3*h-2);
+  return(phi[0]*f0+phi[1]*f1+phi[2]*d0+phi[3]*d1);
+}
+
+/*
+  interpolate over a rectangular cell.
+    x = interpolation point. 
+    vv = array of vertex values.
+    ll = lower left corner.
+    ur = upper right corner.
+    d = dimension.
+    nc = no of coefficients.
+*/
+double rectcell_interp(x,vv,ll,ur,d,nc)
+double *x, vv[64][64], *ll, *ur;
+int d, nc;
+{ double phi[4];
+  int i, j, k, tk;
+
+  tk = 1<<d;
+  for (i=0; i<tk; i++) if (vv[i][0]==NOSLN) return(NOSLN);
+
+  /* no derivatives - use multilinear interpolation */
+  if (nc==1)
+  { for (i=d-1; i>=0; i--)
+    { tk = 1<<i;
+      for (j=0; j<tk; j++)
+        vv[j][0] = linear_interp(x[i]-ll[i],ur[i]-ll[i],vv[j][0],vv[j+tk][0]);
+    }
+    return(vv[0][0]);
+  }
+
+  /* with derivatives -- use cubic */
+  if (nc==d+1)
+  { for (i=d-1; i>=0; i--)
+    { hermite2(x[i]-ll[i],ur[i]-ll[i],phi);
+      tk = 1<<i;
+      phi[2] *= ur[i]-ll[i];
+      phi[3] *= ur[i]-ll[i];
+      for (j=0; j<tk; j++)
+      { vv[j][0] = phi[0]*vv[j][0] + phi[1]*vv[j+tk][0]
+                 + phi[2]*vv[j][i+1] + phi[3]*vv[j+tk][i+1];
+        for (k=1; k<=i; k++)
+          vv[j][k] = phi[0]*vv[j][k] + phi[1]*vv[j+tk][k];
+      }
+    }
+    return(vv[0][0]); 
+  }
+
+  /* with all coefs -- use multicubic */
+  for (i=d-1; i>=0; i--)
+  { hermite2(x[i]-ll[i],ur[i]-ll[i],phi);
+    tk = 1<<i;
+    phi[2] *= ur[i]-ll[i];
+    phi[3] *= ur[i]-ll[i];
+    for (j=0; j<tk; j++)
+      for (k=0; k<tk; k++)
+        vv[j][k] = phi[0]*vv[j][k] + phi[1]*vv[j+tk][k]
+                 + phi[2]*vv[j][k+tk] + phi[3]*vv[j+tk][k+tk];
+  }
+  return(vv[0][0]);
+}
+
+int exvval(fp,vv,nv,d,what,z)
+fitpt *fp;
+double *vv;
+int nv, d, z, what;
+{ int i, k;
+  double *values;
+
+  k = (z) ? 1<<d : d+1;
+  for (i=1; i<k; i++) vv[i] = 0.0;
+  switch(what)
+  { case PCOEF:
+      values = fp->coef;
+      break;
+    case PVARI:
+    case PNLX:
+      values = fp->nlx;
+      break;
+    case PT0:
+      values = fp->t0;
+      break;
+    case PBAND:
+      vv[0] = fp->h[nv];
+      return(1);
+    case PDEGR:
+      vv[0] = fp->deg[nv];
+      return(1);
+    case PLIK:
+      vv[0] = fp->lik[nv];
+      return(1);
+    case PRDF:
+      vv[0] = fp->lik[2*fp->nvm+nv];
+      return(1);
+    default:
+      LERR(("Invalid what in exvval"));
+      return(0);
+  }
+  vv[0] = values[nv];
+  if (!fp->hasd) return(1);
+  if (z)
+  { for (i=0; i<d; i++) vv[1<<i] = values[(i+1)*fp->nvm+nv];
+    return(1<<d);
+  }
+  else
+  { for (i=1; i<=d; i++) vv[i] = values[i*fp->nvm+nv];
+    return(d+1);
+  }
+}
+
+void exvvalpv(vv,vl,vr,d,k,dl,nc)
+double *vv, *vl, *vr, dl;
+int d, k, nc;
+{ int i, tk, td;
+  double f0, f1;
+  if (nc==1)
+  { vv[0] = (vl[0]+vr[0])/2;
+    return;
+  }
+  tk = 1<<k;
+  td = 1<<d;
+  for (i=0; i<td; i++) if ((i&tk)==0)
+  { f0 = (vl[i]+vr[i])/2 + dl*(vl[i+tk]-vr[i+tk])/8;
+    f1 = 1.5*(vr[i]-vl[i])/dl - (vl[i+tk]+vr[i+tk])/4;
+    vv[i] = f0;
+    vv[i+tk] = f1;
+  }
+} 
+
+double grid_int(fp,evs,x,what)
+fitpt *fp;
+evstruc *evs;
+double *x;
+int what;
+{ int d, i, j, jj, nc, sk, v[MXDIM], vc, z0, nce[1<<MXDIM], *mg;
+  double *ll, *ur, vv[64][64], z;
+
+  d = fp->d;
+  ll = evpt(fp,0); ur = evpt(fp,fp->nv-1);
+  mg = mg(evs);
+
+  z0 = 0; vc = 1<<d;
+  for (j=d-1; j>=0; j--)
+  { v[j] = (int)((mg[j]-1)*(x[j]-ll[j])/(ur[j]-ll[j]));
+    if (v[j]<0) v[j]=0;
+    if (v[j]>=mg[j]-1) v[j] = mg[j]-2;
+    z0 = z0*mg[j]+v[j];
+  }
+  nce[0] = z0; nce[1] = z0+1; sk = jj = 1; 
+  for (i=1; i<d; i++)
+  { sk *= mg[i-1];
+    jj<<=1;
+    for (j=0; j<jj; j++)
+      nce[j+jj] = nce[j]+sk;
+  }
+  for (i=0; i<vc; i++)
+    nc = exvval(fp,vv[i],nce[i],d,what,1);
+  ll = evpt(fp,nce[0]);
+  ur = evpt(fp,nce[vc-1]);
+  z = rectcell_interp(x,vv,ll,ur,d,nc);
+  return(z);
+}
+
+double fitp_int(fp,x,what,i)
+fitpt *fp;
+double *x;
+int what, i;
+{ double vv[1+MXDIM];
+  exvval(fp,vv,i,fp->d,what,0);
+  return(vv[0]);
+}
+
+double xbar_int(fp,x,what)
+fitpt *fp;
+double *x;
+int what;
+{ int i, nc;
+  double vv[1+MXDIM], f;
+  nc = exvval(fp,vv,0,fp->d,what,0);
+  f = vv[0];
+  if (nc>1)
+    for (i=0; i<fp->d; i++)
+      f += vv[i+1]*(x[i]-evptx(fp,0,i));
+  return(f);
+}
+
+double dointpoint(lf,x,what,ev,j)
+lfit *lf;
+double *x;
+int what, ev, j;
+{ double xf, f, link[LLEN];
+  int i, rt;
+  fitpt *fp;
+  evstruc *evs;
+
+  fp = &lf->fp; evs = &lf->evs;
+  for (i=0; i<fp->d; i++) if (lf->lfd.sty[i]==STANGL)
+  { xf = floor(x[i]/(2*PI*lf->lfd.sca[i]));
+    x[i] -= xf*2*PI*lf->lfd.sca[i];
+  }
+  if (what > 64)
+  { rt = what-64;
+    what = PCOEF;
+  }
+  else rt = 0;
+
+  switch(ev)
+  { case EGRID: f = grid_int(fp,evs,x,what); break;
+    case EKDTR: f = kdtre_int(fp,evs,x,what); break;
+    case ETREE: f = atree_int(lf,x,what); break;
+    case EPHULL: f = triang_int(lf,x,what); break;
+    case EFITP: f = fitp_int(fp,x,what,j); break;
+    case EXBAR: f = xbar_int(fp,x,what); break;
+    case ENONE: f = 0; break;
+    case ESPHR: f = sphere_int(lf,x,what); break;
+    default: LERR(("dointpoint: cannot interpolate structure %d",ev));
+  }
+  if (((what==PT0)|(what==PNLX)) && (f<0)) f = 0.0;
+  f += addparcomp(lf,x,what);
+
+  if (rt>0)
+  {
+    stdlinks(link,&lf->lfd,&lf->sp,j,f,rsc(fp));
+    f = resid(resp(&lf->lfd,j),prwt(&lf->lfd,j),f,fam(&lf->sp),rt,link);
+  }
+
+  return(f);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Routines for building and interpolating the kd tree.
+ *   Initially, this started from the loess code.
+ *
+ *   Todo: EKDCE isn't working.
+ */
+
+#include "lfev.h"
+
+void newcell();
+static int nterm;
+
+void kdtre_guessnv(evs,nvm,ncm,vc,n,d,alp)
+evstruc *evs;
+double alp;
+int *nvm, *ncm, *vc, n, d;
+{ int k;
+  if (ev(evs) == EKDTR)
+  { nterm = (int)(cut(evs)/4 * n * MIN(alp,1.0) );
+    k = 2*n/nterm;
+    *vc = 1<<d;
+    *ncm = 2*k+1;
+    *nvm = (k+2)**vc/2;
+    return;
+  }
+  if (ev(evs) == EKDCE)
+  { nterm = (int)(n * alp);
+    *vc = 1;
+    *nvm = 1+(int)(2*n/nterm);
+    *ncm = 2**nvm+1;
+    return;
+  }
+  *nvm = *ncm = *vc = 0;
+  return;
+}
+
+/*
+  Split x[pi[l..r]] into two equal sized sets.
+
+  Let m=(l+r)/2.
+  At return,
+    x[pi[l..m]] < x[pi[m+1..r]].
+    Assuming no ties:
+      If l+r is odd, the sets have the same size.
+      If l+r is even, the low set is larger by 1.
+    If there are ties, all ties go in the low set.
+*/      
+int ksmall(l, r, m, x, pi)
+int l, r, m, *pi;
+double *x;
+{
+  int il, ir, jl, jr;
+  double t;
+
+
+  while(l<r)
+  { t = x[pi[m]];
+
+    /*
+      permute the observations so that
+        x[pi[l..il]] < t <= x[pi[ir..r]].
+    */
+    ir = l; il = r;
+    while (ir<il)
+    { while ((ir<=r) && (x[pi[ir]] < t)) ir++;
+      while ((il>=l) && (x[pi[il]]>= t)) il--;
+      if (ir<il) ISWAP(pi[ir],pi[il]);
+    }
+
+    /*
+      move  = t to the middle:
+        x[pi[l..il]]  < t
+        x[pi[jl..jr]] = t
+        x[pi[ir..r]] > t
+    */
+    jl = ir; jr = r;
+    while (ir<jr)
+    { while ((ir<=r)  && (x[pi[ir]]== t)) ir++;
+      while ((jr>=jl) && (x[pi[jr]] > t)) jr--;
+      if (ir<jr) ISWAP(pi[ir],pi[jr]);
+    }
+
+    /*
+      we're done if m is in the middle, jl <= m <= jr.
+    */
+    if ((jl<=m) & (jr>=m)) return(jr);
+
+    /*
+      update l or r.
+    */
+    if (m>=ir) l = ir;
+    if (m<=il) r = il;
+  }
+  if (l==r) return(l);
+  LERR(("ksmall failure"));
+  return(0);
+}
+
+int terminal(lf,p,pi,fc,d,m,split_val)
+lfit *lf;
+int p, d, fc, *m, *pi;
+double *split_val;
+{ int i, k, lo, hi, split_var;
+  double max, min, score, max_score, t;
+
+  /*
+    if there are fewer than fc points in the cell, this cell
+    is terminal.
+  */
+  lo = lf->evs.lo[p]; hi = lf->evs.hi[p];
+  if (hi-lo < fc) return(-1);
+
+  /* determine the split variable */
+  max_score = 0.0; split_var = 0;
+  for (k=0; k<d; k++)
+  { max = min = datum(&lf->lfd, k, pi[lo]);
+    for (i=lo+1; i<=hi; i++)
+    { t = datum(&lf->lfd,k,pi[i]);
+      if (t<min) min = t;
+      if (t>max) max = t;
+    }
+    score = (max-min) / lf->lfd.sca[k];
+    if (score > max_score)
+    { max_score = score;
+      split_var = k;
+    }
+  }
+  if (max_score==0) /* all points in the cell are equal */
+    return(-1);
+
+  *m = ksmall(lo,hi,(lo+hi)/2, dvari(&lf->lfd,split_var), pi);
+  *split_val = datum(&lf->lfd, split_var, pi[*m]);
+
+  if (*m==hi) /* all observations go lo */
+    return(-1);
+  return(split_var);
+}
+
+void kdtre_start(des,lf)
+design *des;
+lfit *lf;
+{
+  int i, j, vc, d, nc, nv, ncm, nvm, k, m, n, p, *pi;
+  double sv;
+  d = lf->lfd.d; n = lf->lfd.n; pi = des->ind;
+  kdtre_guessnv(&lf->evs,&nvm,&ncm,&vc,n,d,nn(&lf->sp));
+  trchck(lf,nvm,ncm,vc);
+
+  nv = 0;
+  if (ev(&lf->evs) != EKDCE)
+  { for (i=0; i<vc; i++)
+    { j = i;
+      for (k=0; k<d; ++k)
+      { evptx(&lf->fp,i,k) = lf->evs.fl[d*(j%2)+k];
+        j >>= 1;
+      }
+    }
+    nv = vc;
+    for (j=0; j<vc; j++) lf->evs.ce[j] = j;
+  }
+
+  for (i=0; i<n; i++) pi[i] = i;
+  p = 0; nc = 1;
+  lf->evs.lo[p] = 0; lf->evs.hi[p] = n-1;
+  lf->evs.s[p] = -1;
+  while (p<nc)
+  { k = terminal(lf,p,pi,nterm,d,&m,&sv);
+    if (k>=0)
+    {
+      if ((ncm<nc+2) | (2*nvm<2*nv+vc))
+      { WARN(("Insufficient space for full tree"));
+        lf->evs.nce = nc; lf->fp.nv = nv;
+        return;
+      }
+
+      /* new lo cell has obsn's lo[p]..m */
+      lf->evs.lo[nc] = lf->evs.lo[p];
+      lf->evs.hi[nc] = m;
+      lf->evs.s[nc] = -1;
+
+      /* new hi cell has obsn's m+1..hi[p] */
+      lf->evs.lo[nc+1] = m+1;
+      lf->evs.hi[nc+1] = lf->evs.hi[p];
+      lf->evs.s[nc+1] = -1;
+
+      /* cell p is split on variable k, value sv */
+      lf->evs.s[p] = k;
+      lf->evs.sv[p] = sv;
+      lf->evs.lo[p] = nc; lf->evs.hi[p] = nc+1;
+
+      nc=nc+2; i = nv;
+
+      /* now compute the new vertices. */
+      if (ev(&lf->evs) != EKDCE)
+        newcell(&nv,vc,evp(&lf->fp), d, k, sv,
+             &lf->evs.ce[p*vc], &lf->evs.ce[(nc-2)*vc], &lf->evs.ce[(nc-1)*vc]);
+
+    }
+    else if (ev(&lf->evs)==EKDCE) /* new vertex at cell center */
+    { sv = 0;
+      for (i=0; i<d; i++) evptx(&lf->fp,nv,i) = 0;
+      for (j=lf->evs.lo[p]; j<=lf->evs.hi[p]; j++)
+      { sv += prwt(&lf->lfd,(int)pi[j]);
+        for (i=0; i<d; i++)
+          evptx(&lf->fp,nv,i) += datum(&lf->lfd,i,pi[j])*prwt(&lf->lfd,(int)pi[j]);
+      }
+      for (i=0; i<d; i++) evptx(&lf->fp,nv,i) /= sv;
+      lf->lfd.n = lf->evs.hi[p] - lf->evs.lo[p] + 1;
+      des->ind = &pi[lf->evs.lo[p]]; /* why? */
+      PROC_VERTEX(des,lf,nv);
+      lf->lfd.n = n; des->ind = pi;
+      nv++;
+    }
+    p++;
+  }
+
+  /* We've built the tree. Now do the fitting. */
+  if (ev(&lf->evs)==EKDTR)
+    for (i=0; i<nv; i++) PROC_VERTEX(des,lf,i);
+
+  lf->evs.nce = nc; lf->fp.nv = nv;
+  return;
+}
+
+void newcell(nv,vc,xev, d, k, split_val, cpar, clef, crig)
+double *xev, split_val;
+int *cpar, *clef, *crig;
+int *nv, vc, d, k;
+{ int i, ii, j, j2, tk, match;
+  tk = 1<<k;
+  for (i=0; i<vc; i++)
+  { if ((i&tk) == 0)
+    { for (j=0; j<d; j++) xev[*nv*d+j] = xev[d*cpar[i]+j];
+      xev[*nv*d+k] = split_val;
+      match = 0; j = vc; /* no matches in first vc points */
+      while ((j<*nv) && (!match))
+      { j2 = 0;
+        while ((j2<d) && (xev[*nv*d+j2] == xev[j*d+j2])) j2++;
+        match = (j2==d);
+        if (!match) j++;
+      }
+      ii = i+tk;
+      clef[i] = cpar[i];
+      clef[ii]= crig[i] = j;
+      crig[ii]= cpar[ii];
+      if (!match) (*nv)++;
+    }
+  }
+  return;
+}
+
+extern void hermite2();
+
+double blend(fp,evs,s,x,ll,ur,j,nt,t,what)
+fitpt *fp;
+evstruc *evs;
+double s, *x, *ll, *ur;
+int j, nt, *t, what;
+{
+  int *ce, k, k1, m, nc, j0, j1;
+  double v0, v1, xibar, g0[3], g1[3], gg[4], gp[4], phi[4];
+  ce = evs->ce;
+  for (k=0; k<4; k++)  /* North South East West */
+  { k1 = (k>1);
+    v0 = ll[k1]; v1 = ur[k1];
+    j0 = ce[j+2*(k==0)+(k==2)];
+    j1 = ce[j+3-2*(k==1)-(k==3)];
+    xibar = (k%2==0) ? ur[k<2] : ll[k<2];
+    m = nt;
+    while ((m>=0) && ((evs->s[t[m]] != (k<=1)) | (evs->sv[t[m]] != xibar))) m--;
+    if (m >= 0)
+    { m = (k%2==1) ? evs->lo[t[m]] : evs->hi[t[m]];
+      while (evs->s[m] != -1)
+        m = (x[evs->s[m]] < evs->sv[m]) ? evs->lo[m] : evs->hi[m];
+      if (v0 < evptx(fp,ce[4*m+2*(k==1)+(k==3)],k1))
+      { j0 = ce[4*m+2*(k==1)+(k==3)];
+        v0 = evptx(fp,j0,k1);
+      }
+      if (evptx(fp,ce[4*m+3-2*(k==0)-(k==2)],k1) < v1)
+      { j1 = ce[4*m+3-2*(k==0)-(k==2)];
+        v1 = evptx(fp,j1,k1);
+      }
+    }
+    nc = exvval(fp,g0,j0,2,what,0);
+    nc = exvval(fp,g1,j1,2,what,0);
+    if (nc==1)
+      gg[k] = linear_interp((x[(k>1)]-v0),v1-v0,g0[0],g1[0]);
+    else
+    { hermite2(x[(k>1)]-v0,v1-v0,phi);
+      gg[k] = phi[0]*g0[0]+phi[1]*g1[0]+(phi[2]*g0[1+k1]+phi[3]*g1[1+k1])*(v1-v0);
+      gp[k] = phi[0]*g0[2-k1] + phi[1]*g1[2-k1];
+    }
+  }
+  s = -s;
+  if (nc==1)
+    for (k=0; k<2; k++)
+      s += linear_interp(x[k]-ll[k],ur[k]-ll[k],gg[3-2*k],gg[2-2*k]);
+    else
+    for (k=0; k<2; k++) /* EW NS */
+    { hermite2(x[k]-ll[k],ur[k]-ll[k],phi);
+      s += phi[0]*gg[3-2*k] + phi[1]*gg[2-2*k]
+          +(phi[2]*gp[3-2*k] + phi[3]*gp[2-2*k]) * (ur[k]-ll[k]);
+    }
+  return(s);
+}
+
+double kdtre_int(fp,evs,x,what)
+fitpt *fp;
+evstruc *evs;
+double *x;
+int what;
+{
+  int *ce, k, vc, t[20], nt, nc, j, d;
+  double *ll, *ur, ff, vv[64][64];
+  d = fp->d;
+  vc = 1<<d;
+  if (d > 6) { LERR(("d too large in kdint")); return(NOSLN); }
+
+  /* descend the tree to find the terminal cell */
+  nt = 0; t[nt] = 0; k = 0;
+  while (evs->s[k] != -1)
+  { nt++;
+    if (nt>=20) { LERR(("Too many levels in kdint")); return(NOSLN); }
+    k = t[nt] = (x[evs->s[k]] < evs->sv[k]) ? evs->lo[k] : evs->hi[k];
+  }
+
+  ce = &evs->ce[k*vc];
+  ll = evpt(fp,ce[0]);
+  ur = evpt(fp,ce[vc-1]);
+  nc = 0;
+  for (j=0; j<vc; j++) nc = exvval(fp,vv[j],(int)ce[j],d,what,0);
+  ff = rectcell_interp(x,vv,ll,ur,d,nc);
+
+  if (d==2) ff = blend(fp,evs,ff,x,ll,ur,k*vc,nt,t,what);
+  return(ff);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+/*
+ * convert eval. structure string to numeric code.
+ */
+#define NETYPE 11
+static char *etype[NETYPE]= { "tree",     "phull", "data", "grid", "kdtree",
+                          "kdcenter", "cross", "preset", "xbar", "none",
+                          "sphere" };
+static int   evals[NETYPE]= { ETREE, EPHULL, EDATA, EGRID, EKDTR,
+                          EKDCE, ECROS,  EPRES, EXBAR, ENONE, ESPHR };
+int lfevstr(char *z)
+{ return(pmatch(z, etype, evals, NETYPE, -1));
+}
+
+void evstruc_init(evs)
+evstruc *evs;
+{ int i;
+  ev(evs) = ETREE;
+  mk(evs) = 100;
+  cut(evs) = 0.8;
+  for (i=0; i<MXDIM; i++)
+  { evs->fl[i] = evs->fl[i+MXDIM] = 0.0;
+    evs->mg[i] = 10;
+  }
+  evs->nce = evs->ncm = 0;
+}
+
+int evstruc_reqi(nvm,ncm,vc)
+int nvm, ncm, vc;
+{ return(ncm*vc+3*MAX(ncm,nvm));
+}
+
+/* al=1: allows dynamic allocation.
+ * al=0: inhibit. use with caution.
+ */
+void evstruc_alloc(evs,nvm,ncm,vc,al)
+evstruc *evs;
+int nvm, ncm, vc, al;
+{ int rw, *k;
+
+  if (al)
+  { rw = evstruc_reqi(nvm,ncm,vc);
+    if (evs->liw<rw)
+    { evs->iwk = (int *)calloc(rw,sizeof(int));
+    if ( evs->iwk == NULL ) {
+      printf("Problem allocating memory for evs->iwk\n");fflush(stdout);
+    }
+      evs->liw = rw;
+    }
+  }
+  k = evs->iwk;
+  evs->ce = k; k += vc*ncm;
+  evs->s  = k; k += MAX(ncm,nvm);
+  evs->lo = k; k += MAX(ncm,nvm);
+  evs->hi = k; k += MAX(ncm,nvm);
+}
+
+void guessnv(evs,sp,mdl,n,d,lw,nvc)
+evstruc *evs;
+smpar *sp;
+module *mdl;
+int n, d, *lw, *nvc;
+{ int i, nvm, ncm, vc;
+
+  npar(sp) = calcp(sp,d);
+  switch(ev(evs))
+  { case ETREE:
+      atree_guessnv(evs,&nvm,&ncm,&vc,d,nn(sp));
+      break;
+    case EPHULL:
+      nvm = ncm = mk(evs)*d;
+      vc = d+1;
+      break;
+    case EDATA:
+    case ECROS:
+      nvm = n;
+      ncm = vc = 0;
+      break;
+    case EKDTR:
+    case EKDCE:
+      kdtre_guessnv(evs,&nvm,&ncm,&vc,n,d,nn(sp));
+      break;
+    case EGRID:
+      nvm = 1;
+      for (i=0; i<d; i++) nvm *= evs->mg[i];
+      ncm = 0;
+      vc = 1<<d;
+      break;
+    case EXBAR:
+    case ENONE:
+      nvm = 1;
+      ncm = vc = 0;
+      break;
+    case EPRES:
+      nvm = evs->mg[0];
+      ncm = vc = 0;
+      break;
+    default:
+      LERR(("guessnv: I don't know this evaluation structure."));
+      nvm = ncm = vc = 0;
+  }
+
+  lw[0] = des_reqd(n,npar(sp));
+  lw[1] = lfit_reqd(d,nvm,ncm,mdl);
+  lw[2] = evstruc_reqi(nvm,ncm,vc);
+  lw[6] = des_reqi(n,npar(sp));
+  lw[3] = pc_reqd(d,npar(sp));
+  lw[4] = mdl->keepv;
+  lw[5] = mdl->keepc;
+
+  if (nvc==NULL) return;
+  nvc[0] = nvm;
+  nvc[1] = ncm;
+  nvc[2] = vc;
+  nvc[3] = nvc[4] = 0;
+}
+
+/*
+ * trchck checks the working space on the lfit structure 
+ * has space for nvm vertices and ncm cells.
+ */
+void lfit_alloc(lf)
+lfit *lf;
+{ lf->fp.lwk = lf->fp.lev = lf->evs.liw = lf->pc.lwk = 0;
+  lf->lf_init_id = LF_INIT_ID;
+}
+int lfit_reqd(d,nvm,ncm,mdl)
+int d, nvm, ncm;
+module *mdl;
+{ int z;
+  z = mdl->keepv;
+  return(nvm*z+ncm);
+}
+
+void trchck(lf,nvm,ncm,vc)
+lfit *lf;
+int nvm, ncm, vc;
+{ int rw, d, *k;
+  double *z;
+
+  if (lf->lf_init_id != LF_INIT_ID) lfit_alloc(lf);
+
+  lf->fp.nvm = nvm; lf->evs.ncm = ncm;
+  d = lf->lfd.d;
+
+  if (lf->fp.lev < d*nvm)
+  { lf->fp.xev = (double *)calloc(d*nvm,sizeof(double));
+    if ( lf->fp.xev == NULL ) {
+      printf("Problem allocating memory for lf->fp.xev\n");fflush(stdout);
+    }
+    lf->fp.lev = d*nvm;
+  }
+
+  rw = lfit_reqd(d,nvm,ncm,&lf->mdl);
+  if (lf->fp.lwk < rw)
+  {
+    lf->fp.coef = (double *)calloc(rw,sizeof(double));
+    if ( lf->fp.coef == NULL ) {
+      printf("Problem allocating memory for lf->fp.coef\n");fflush(stdout);
+    }
+    lf->fp.lwk = rw;
+  }
+  z = lf->fp.wk = lf->fp.coef;
+
+  lf->fp.h = NULL;
+  if (!lf->mdl.isset) mut_printf("module not set.\n");
+  else
+  { if (lf->mdl.alloc!=NULL) lf->mdl.alloc(lf);
+    z += KEEPV(lf) * nvm;
+  }
+  lf->evs.sv = z; z += ncm;
+
+  evstruc_alloc(&lf->evs,nvm,ncm,vc,1);
+}
+
+void data_guessnv(nvm,ncm,vc,n)
+int *nvm, *ncm, *vc, n;
+{ *nvm = n;
+  *ncm = *vc = 0;
+}
+
+void dataf(des,lf)
+design *des;
+lfit *lf;
+{
+  int d, i, j, ncm, nv, vc;
+
+  d = lf->lfd.d;
+  data_guessnv(&nv,&ncm,&vc,lf->lfd.n);
+  trchck(lf,nv,ncm,vc);
+
+  for (i=0; i<nv; i++)
+    for (j=0; j<d; j++) evptx(&lf->fp,i,j) = datum(&lf->lfd,j,i);
+  for (i=0; i<nv; i++)
+  {
+    PROC_VERTEX(des,lf,i);
+    lf->evs.s[i] = 0;
+  }
+  lf->fp.nv = lf->fp.nvm = nv; lf->evs.nce = 0;
+}
+
+void xbar_guessnv(nvm,ncm,vc)
+int *nvm, *ncm, *vc;
+{ *nvm = 1;
+  *ncm = *vc = 0;
+  return;
+}
+
+void xbarf(des,lf)
+design *des;
+lfit *lf;
+{ int i, d, nvm, ncm, vc;
+  d = lf->lfd.d;
+  xbar_guessnv(&nvm,&ncm,&vc);
+  trchck(lf,1,0,0);
+  for (i=0; i<d; i++) evptx(&lf->fp,0,i) = lf->pc.xbar[i];
+  PROC_VERTEX(des,lf,0);
+  lf->evs.s[0] = 0;
+  lf->fp.nv = 1; lf->evs.nce = 0;
+}
+
+void preset(des,lf)
+design *des;
+lfit *lf;
+{ int i, nv;
+
+  nv = lf->fp.nvm;
+  trchck(lf,nv,0,0);
+  for (i=0; i<nv; i++)
+  { 
+    PROC_VERTEX(des,lf,i);
+    lf->evs.s[i] = 0;
+  }
+  lf->fp.nv = nv; lf->evs.nce = 0;
+}
+
+void crossf(des,lf)
+design *des;
+lfit *lf;
+{ int d, i, j, n, nv, ncm, vc;
+  double w;
+
+  n = lf->lfd.n; d = lf->lfd.d;
+  data_guessnv(&nv,&ncm,&vc,n);
+  trchck(lf,nv,ncm,vc);
+
+  if (lf->lfd.w==NULL) LERR(("crossf() needs prior weights"));
+  for (i=0; i<n; i++)
+    for (j=0; j<d; j++) evptx(&lf->fp,i,j) = datum(&lf->lfd,j,i);
+  for (i=0; i<n; i++)
+  { lf->evs.s[i] = 0;
+    w = prwt(&lf->lfd,i);
+    lf->lfd.w[i] = 0;
+    PROC_VERTEX(des,lf,i);
+    lf->lfd.w[i] = w;
+  }
+  lf->fp.nv = n; lf->evs.nce = 0;
+}
+
+void gridf(des,lf)
+design *des;
+lfit *lf;
+{ int d, i, j, nv, u0, u1, z;
+  nv = 1; d = lf->lfd.d;
+  for (i=0; i<d; i++)
+  { if (lf->evs.mg[i]==0)
+      lf->evs.mg[i] = 2+(int)((lf->evs.fl[i+d]-lf->evs.fl[i])/(lf->lfd.sca[i]*cut(&lf->evs)));
+    nv *= lf->evs.mg[i];
+  }
+  trchck(lf,nv,0,1<<d);
+  for (i=0; i<nv; i++)
+  { z = i;
+    for (j=0; j<d; j++)
+    { u0 = z%lf->evs.mg[j];
+      u1 = lf->evs.mg[j]-1-u0;
+      evptx(&lf->fp,i,j) = (lf->evs.mg[j]==1) ? lf->evs.fl[j] :
+                      (u1*lf->evs.fl[j]+u0*lf->evs.fl[j+d])/(lf->evs.mg[j]-1);
+      z = z/lf->evs.mg[j];
+    }
+    lf->evs.s[i] = 0;
+    PROC_VERTEX(des,lf,i);
+  }
+  lf->fp.nv = nv; lf->evs.nce = 0;
+}
+
+int findpt(fp,evs,i0,i1)
+fitpt *fp;
+evstruc *evs;
+int i0, i1;
+{ int i;
+  if (i0>i1) ISWAP(i0,i1);
+  for (i=i1+1; i<fp->nv; i++)
+    if ((evs->lo[i]==i0) && (evs->hi[i]==i1)) return(i);
+  return(-1);
+}
+
+/*
+  add a new vertex at the midpoint of (x[i0],x[i1]).
+  return the vertex number.
+*/
+int newsplit(des,lf,i0,i1,pv)
+design *des;
+lfit *lf;
+int i0, i1, pv;
+{ int i, nv;
+
+  i = findpt(&lf->fp,&lf->evs,i0,i1);
+  if (i>=0) return(i);
+
+  if (i0>i1) ISWAP(i0,i1);
+  nv = lf->fp.nv;
+  
+  /* the point is new. Now check we have space for the new point. */
+  if (nv>=lf->fp.nvm)
+  {
+    LERR(("newsplit: out of vertex space"));
+    return(-1);
+  }
+
+  /* compute the new point, and evaluate the fit */
+  lf->evs.lo[nv] = i0;
+  lf->evs.hi[nv] = i1;
+  for (i=0; i<lf->fp.d; i++)
+    evptx(&lf->fp,nv,i) = (evptx(&lf->fp,i0,i)+evptx(&lf->fp,i1,i))/2;
+  if (pv) /* pseudo vertex */
+  { lf->fp.h[nv] = (lf->fp.h[i0]+lf->fp.h[i1])/2;
+    lf->evs.s[nv] = 1; /* pseudo-vertex */
+  }
+  else /* real vertex */
+  {
+    PROC_VERTEX(des,lf,nv);
+    lf->evs.s[nv] = 0;
+  }
+  lf->fp.nv++;
+
+  return(nv);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Functions for constructing the fit and
+ *   interpolating on the circle/sphere. d=2 only.
+ */
+
+#include "lfev.h"
+
+/*
+ * Guess the number of fitting points.
+ */
+void sphere_guessnv(nvm,ncm,vc,mg)
+int *nvm, *ncm, *vc, *mg;
+{ *nvm = mg[1]*(mg[0]+1);
+  *ncm = 0;
+  *vc = 0;
+}
+
+void sphere_start(des,lf)
+design *des;
+lfit *lf;
+{ int d, i, j, ct, nv, ncm, vc, *mg;
+  double rmin, rmax, *orig, r, th, c, s;
+
+  mg = mg(&lf->evs);
+  sphere_guessnv(&nv,&ncm,&vc,mg);
+  trchck(lf,nv,0,0);
+  d = lf->lfd.d;
+
+  rmin = lf->evs.fl[0];
+  rmax = lf->evs.fl[1];
+  orig = &lf->evs.fl[2];
+rmin = 0; rmax = 1; orig[0] = orig[1] = 0.0;
+
+  ct = 0;
+  for (i=0; i<mg[1]; i++)
+  { th = 2*PI*i/mg[1];
+    c = cos(th);
+    s = sin(th);
+    for (j=0; j<=mg[0]; j++)
+    { r = rmin + (rmax-rmin)*j/mg[0];
+      evptx(&lf->fp,ct,0) = orig[0] + r*c;
+      evptx(&lf->fp,ct,1) = orig[1] + r*s;
+      PROC_VERTEX(des,lf,ct);
+      ct++;
+    }
+  }
+  lf->fp.nv = ct;
+  lf->evs.nce = 0;
+}
+
+double sphere_int(lf,x,what)
+lfit *lf;
+double *x;
+int what;
+{ double rmin, rmax, *orig, dx, dy, r, th, th0, th1;
+  double v[64][64], c0, c1, s0, s1, r0, r1, d0, d1;
+  double ll[2], ur[2], xx[2];
+  int i0, j0, i1, j1, *mg, nc, ce[4];
+
+  rmin = lf->evs.fl[0];
+  rmax = lf->evs.fl[1];
+  orig = &lf->evs.fl[2];
+rmin = 0; rmax = 1; orig[0] = orig[1] = 0.0;
+  mg = mg(&lf->evs);
+
+  dx = x[0] - orig[0];
+  dy = x[1] - orig[1];
+  r = sqrt(dx*dx+dy*dy);
+  th = atan2(dy,dx); /* between -pi and pi */
+
+  i0 = (int)floor(mg[1]*th/(2*PI)) % mg[1];
+  j0 = (int)(mg[0]*(r-rmin)/(rmax-rmin));
+
+  i1 = (i0+1) % mg[1];
+  j1 = j0+1; if (j1>mg[0]) { j0 = mg[0]-1; j1 = mg[0]; }
+
+  ce[0] = i0*(mg[0]+1)+j0;
+  ce[1] = i0*(mg[0]+1)+j1;
+  ce[2] = i1*(mg[0]+1)+j0;
+  ce[3] = i1*(mg[0]+1)+j1;
+  nc = exvval(&lf->fp,v[0],ce[0],2,what,1);
+  nc = exvval(&lf->fp,v[1],ce[1],2,what,1);
+  nc = exvval(&lf->fp,v[2],ce[2],2,what,1);
+  nc = exvval(&lf->fp,v[3],ce[3],2,what,1);
+
+  th0 = 2*PI*i0/mg[1]; c0 = cos(th0); s0 = sin(th0);
+  th1 = 2*PI*i1/mg[1]; c1 = cos(th1); s1 = sin(th1);
+  r0 = rmin + j0*(rmax-rmin)/mg[0];
+  r1 = rmin + j1*(rmax-rmin)/mg[0];
+  
+  d0 = c0*v[0][1] + s0*v[0][2];
+  d1 = r0*(c0*v[0][2]-s0*v[0][1]);
+  v[0][1] = d0; v[0][2] = d1;
+
+  d0 = c0*v[1][1] + s0*v[1][2];
+  d1 = r1*(c0*v[1][2]-s0*v[1][1]);
+  v[1][1] = d0; v[1][2] = d1;
+
+  d0 = c1*v[2][1] + s1*v[2][2];
+  d1 = r0*(c1*v[2][2]-s1*v[2][1]);
+  v[2][1] = d0; v[2][2] = d1;
+
+  d0 = c1*v[3][1] + s1*v[3][2];
+  d1 = r1*(c1*v[3][2]-s1*v[3][1]);
+  v[3][1] = d0; v[3][2] = d1;
+
+  xx[0] = r; xx[1] = th;
+  ll[0] = r0; ll[1] = th0;
+  ur[0] = r1; ur[1] = th1;
+  return(rectcell_interp(xx,v,ll,ur,2,nc));
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+void solve(A,b,d) /* this is crude! A organized by column. */
+double *A, *b;
+int d;
+{ int i, j, k;
+  double piv;
+  for (i=0; i<d; i++)
+  { piv = A[(d+1)*i];
+    for (j=i; j<d; j++) A[j*d+i] /= piv;
+    b[i] /= piv;
+    for (j=0; j<d; j++) if (j != i)
+    { piv = A[i*d+j];
+      A[i*d+j] = 0;
+      for (k=i+1; k<d; k++)
+        A[k*d+j] -= piv*A[k*d+i];
+      b[j] -= piv*b[i];
+    }
+  }
+}
+
+void triang_guessnv(nvm,ncm,vc,d,mk)
+int *nvm, *ncm, *vc, d, mk;
+{ *nvm = *ncm = mk*d;
+  *vc = d+1;
+  return;         
+}
+
+int triang_split(lf,ce,le)
+lfit *lf;
+double *le;
+int *ce;
+{ int d, i, j, k, nts, vc;
+  double di, dfx[MXDIM];
+  nts = 0; d = lf->fp.d; vc = d+1;
+  for (i=0; i<d; i++)
+    for (j=i+1; j<=d; j++)
+    { for (k=0; k<d; k++)
+        dfx[k] = evptx(&lf->fp,ce[i],k)-evptx(&lf->fp,ce[j],k);
+      di = rho(dfx,lf->lfd.sca,d,KSPH,NULL);
+      le[i*vc+j] = le[j*vc+i] = di/MIN(lf->fp.h[ce[i]],lf->fp.h[ce[j]]);
+      nts = nts || le[i*vc+j]>cut(&lf->evs);
+    }
+  return(nts);
+}
+
+void resort(pv,xev,dig)
+double *xev;
+int *pv, *dig;
+{ double d0, d1, d2;
+  int i;
+  d0 = d1 = d2 = 0;
+  for (i=0; i<3; i++)
+  { d0 += (xev[3*pv[11]+i]-xev[3*pv[1]+i])*(xev[3*pv[11]+i]-xev[3*pv[1]+i]);
+    d1 += (xev[3*pv[ 7]+i]-xev[3*pv[2]+i])*(xev[3*pv[ 7]+i]-xev[3*pv[2]+i]);
+    d2 += (xev[3*pv[ 6]+i]-xev[3*pv[3]+i])*(xev[3*pv[ 6]+i]-xev[3*pv[3]+i]);
+  }
+  if ((d0<=d1) & (d0<=d2))
+  { dig[0] = pv[1]; dig[1] = pv[11];
+    dig[2] = pv[2]; dig[3] = pv[7];
+    dig[4] = pv[3]; dig[5] = pv[6];
+  }
+  else if (d1<=d2)
+  { dig[0] = pv[2]; dig[1] = pv[7];
+    dig[2] = pv[1]; dig[3] = pv[11];
+    dig[4] = pv[3]; dig[5] = pv[6];
+  }
+  else
+  { dig[0] = pv[3]; dig[1] = pv[6];
+    dig[2] = pv[2]; dig[3] = pv[7];
+    dig[4] = pv[1]; dig[5] = pv[11];
+  }
+}
+
+void triang_grow(des,lf,ce,ct,term)
+design *des;
+lfit *lf;
+int *ce, *ct, *term;
+{ double le[(1+MXDIM)*(1+MXDIM)], ml;
+  int d, i, j, im, jm, vc, pv[(1+MXDIM)*(1+MXDIM)], dig[6];
+  int nce[1+MXDIM];
+  if (lf_error) return;
+  d = lf->fp.d; vc = d+1;
+  if (!triang_split(lf,ce,le))
+  { if (ct != NULL)
+    { for (i=0; i<vc; i++) term[*ct*vc+i] = ce[i];
+      (*ct)++;
+    }
+    return;
+  }
+  if (d>3)
+  { ml = 0;
+    for (i=0; i<d; i++)
+      for (j=i+1; j<vc; j++)
+        if (le[i*vc+j]>ml) { ml = le[i*vc+j]; im = i; jm = j; }
+    pv[0] = newsplit(des,lf,(int)ce[im],(int)ce[jm],0);
+    for (i=0; i<vc; i++) nce[i] = ce[i];
+    nce[im] = pv[0]; triang_grow(des,lf,nce,ct,term); nce[im] = ce[im];
+    nce[jm] = pv[0]; triang_grow(des,lf,nce,ct,term);
+    return;
+  }
+
+  for (i=0; i<d; i++)
+    for (j=i+1; j<=d; j++)
+      pv[i*vc+j] = pv[j*vc+i]
+        = newsplit(des,lf,(int)ce[i],(int)ce[j],le[i*vc+j]<=cut(&lf->evs));
+  for (i=0; i<=d; i++) /* corners */
+  { for (j=0; j<=d; j++) nce[j] = (j==i) ? ce[i] : pv[i*vc+j];
+    triang_grow(des,lf,nce,ct,term);
+  }
+  
+  if (d==2) /* center for d=2 */
+  { nce[0] = pv[5]; nce[1] = pv[2]; nce[2] = pv[1];
+    triang_grow(des,lf,nce,ct,term);
+  }
+  if (d==3) /* center for d=3 */
+  { resort(pv,evp(&lf->fp),dig);
+    nce[0] = dig[0]; nce[1] = dig[1];
+    nce[2] = dig[2]; nce[3] = dig[4]; triang_grow(des,lf,nce,ct,term);
+    nce[2] = dig[5]; nce[3] = dig[3]; triang_grow(des,lf,nce,ct,term);
+    nce[2] = dig[2]; nce[3] = dig[5]; triang_grow(des,lf,nce,ct,term);
+    nce[2] = dig[4]; nce[3] = dig[3]; triang_grow(des,lf,nce,ct,term);
+  }
+}
+
+void triang_descend(tr,xa,ce)
+lfit *tr;
+double *xa;
+int *ce;
+{ double le[(1+MXDIM)*(1+MXDIM)], ml;
+  int d, vc, i, j, im, jm, pv[(1+MXDIM)*(1+MXDIM)];
+  design *des;
+  des = NULL;
+  if (!triang_split(tr,ce,le)) return;
+  d = tr->fp.d; vc = d+1;
+
+  if (d>3) /* split longest edge */
+  { ml = 0;
+    for (i=0; i<d; i++)
+      for (j=i+1; j<vc; j++)
+        if (le[i*vc+j]>ml) { ml = le[i*vc+j]; im = i; jm = j; }
+    pv[0] = newsplit(des,tr,(int)ce[im],(int)ce[jm],0);
+    if (xa[im]>xa[jm])
+    { xa[im] -= xa[jm]; xa[jm] *= 2; ce[jm] = pv[0]; }
+    else
+    { xa[jm] -= xa[im]; xa[im] *= 2; ce[im] = pv[0]; }
+    triang_descend(tr,xa,ce);
+    return;
+  }
+
+  for (i=0; i<d; i++)
+    for (j=i+1; j<=d; j++)
+      pv[i*vc+j] = pv[j*vc+i]
+        = newsplit(des,tr,(int)ce[i],(int)ce[j],le[i*d+j]<=cut(&tr->evs));
+  for (i=0; i<=d; i++) if (xa[i]>=0.5) /* in corner */
+  { for (j=0; j<=d; j++)
+    { if (i!=j) ce[j] = pv[i*vc+j];
+      xa[j] = 2*xa[j];
+    }
+    xa[i] -= 1;
+    triang_descend(tr,xa,ce);
+    return;
+  }
+  if (d==1) { LERR(("weights sum to < 1")); }
+  if (d==2) /* center */
+  { ce[0] = pv[5]; xa[0] = 1-2*xa[0];
+    ce[1] = pv[2]; xa[1] = 1-2*xa[1];
+    ce[2] = pv[1]; xa[2] = 1-2*xa[2];
+    triang_descend(tr,xa,ce);
+  }
+  if (d==3) /* center */
+  { double z; int dig[6];
+    resort(pv,evp(&tr->fp),dig);
+    ce[0] = dig[0]; ce[1] = dig[1];
+    xa[0] *= 2; xa[1] *= 2; xa[2] *= 2; xa[3] *= 2;
+    if (xa[0]+xa[2]>=1)
+    { if (xa[0]+xa[3]>=1)
+      { ce[2] = dig[2]; ce[3] = dig[4];
+        z = xa[0];
+        xa[3] += z-1; xa[2] += z-1; xa[0] = xa[1]; xa[1] = 1-z;
+      }
+      else
+      { ce[2] = dig[2]; ce[3] = dig[5];
+        z = xa[3]; xa[3] = xa[1]+xa[2]-1; xa[1] = z;
+        z = xa[2]; xa[2] += xa[0]-1; xa[0] = 1-z;
+    } }
+    else
+    { if (xa[1]+xa[2]>=1)
+      { ce[2] = dig[5]; ce[3] = dig[3];
+        xa[1] = 1-xa[1]; xa[2] -= xa[1]; xa[3] -= xa[1];
+      }
+      else
+      { ce[2] = dig[4]; ce[3] = dig[3];
+        z = xa[3]; xa[3] += xa[1]-1; xa[1] = xa[2];
+        xa[2] = z+xa[0]-1; xa[0] = 1-z;
+    } }
+    triang_descend(tr,xa,ce);
+} }
+
+void covrofdata(lfd,V,mn) /* covar of data; mean in mn */
+lfdata *lfd;
+double *V, *mn;
+{ int d, i, j, k;
+  double s;
+  s = 0; d = lfd->d;
+  for (i=0; i<d*d; i++) V[i] = 0;
+  for (i=0; i<lfd->n; i++)
+  { s += prwt(lfd,i);
+    for (j=0; j<d; j++)
+      for (k=0; k<d; k++)
+        V[j*d+k] += prwt(lfd,i)*(datum(lfd,j,i)-mn[j])*(datum(lfd,k,i)-mn[k]);
+  }
+  for (i=0; i<d*d; i++) V[i] /= s;
+}
+
+int intri(x,w,xev,xa,d) /* is x in triangle bounded by xd[0..d-1]? */
+double *x, *xev, *xa;
+int *w, d;
+{ int i, j;
+  double eps, *r, xd[MXDIM*MXDIM];
+  eps = 1.0e-10;
+  r = &xev[w[d]*d];
+  for (i=0; i<d; i++)
+  { xa[i] = x[i]-r[i];
+    for (j=0; j<d; j++) xd[i*d+j] = xev[w[i]*d+j]-r[j];
+  }
+  solve(xd,xa,d);
+  xa[d] = 1.0;
+  for (i=0; i<d; i++) xa[d] -= xa[i];
+  for (i=0; i<=d; i++) if ((xa[i]<-eps) | (xa[i]>1+eps)) return(0);
+  return(1);
+}
+
+void triang_start(des,lf) /* Triangulation with polyhedral start */
+design *des;
+lfit *lf;
+{
+  int i, j, k, n, d, nc, nvm, ncm, vc;
+  int *ce, ed[1+MXDIM];
+  double V[MXDIM*MXDIM], P[MXDIM*MXDIM], sigma, z[MXDIM], xa[1+MXDIM], *xev;
+  xev = evp(&lf->fp);
+  d = lf->lfd.d; n = lf->lfd.n;
+  lf->fp.nv = nc = 0;
+
+  triang_guessnv(&nvm,&ncm,&vc,d,mk(&lf->evs));
+  trchck(lf,nvm,ncm,vc);
+
+  ce = lf->evs.ce;
+  for (j=0; j<d; j++) xev[j] = lf->pc.xbar[j];
+  lf->fp.nv = 1;
+  covrofdata(&lf->lfd,V,xev); /* fix this with scaling */
+  eig_dec(V,P,d);
+
+  for (i=0; i<d; i++) /* add vertices +- 2sigma*eigenvect */
+  { sigma = sqrt(V[i*(d+1)]);
+    for (j=0; j<d; j++)
+      xev[lf->fp.nv*d+j] = xev[j]-2*sigma*P[j*d+i];
+    lf->fp.nv++;
+    for (j=0; j<d; j++)
+      xev[lf->fp.nv*d+j] = xev[j]+2*sigma*P[j*d+i];
+    lf->fp.nv++;
+  }
+
+  for (i=0; i<n; i++) /* is point i inside? */
+  { ed[0] = 0;
+    for (j=0; j<d; j++)
+    { z[j] = 0;
+      for (k=0; k<d; k++) z[j] += P[k*d+j]*(datum(&lf->lfd,k,i)-xev[k]);
+      ed[j+1] = 2*j+1+(z[j]>0);
+      for (k=0; k<d; k++) z[j] = datum(&lf->lfd,j,i);
+    }
+    k = intri(z,ed,xev,xa,d);
+    if (xa[0]<0)
+    { for (j=1; j<=d; j++)
+        for (k=0; k<d; k++)
+          xev[ed[j]*d+k] = xa[0]*xev[k]+(1-xa[0])*xev[ed[j]*d+k];
+    }
+  }
+
+  nc = 1<<d; /* create initial cells */
+  for (i=0; i<nc; i++)
+  { ce[i*vc] = 0; k = i;
+    for (j=0; j<d; j++)
+    { ce[i*vc+j+1] = 2*j+(k%2)+1;
+      k>>=1;
+    }
+  }
+
+  for (i=0; i<lf->fp.nv; i++)
+  { PROC_VERTEX(des,lf,i);
+    if (lf_error) return;
+    lf->evs.s[i] = 0;
+  }
+  for (i=0; i<nc; i++)
+    triang_grow(des,lf,&ce[i*vc],NULL,NULL);
+  lf->evs.nce = nc;
+}
+
+double triang_cubicint(v,vv,w,d,nc,xxa)
+double *v, *vv, *xxa;
+int *w, d, nc;
+{ double sa, lb, *vert0, *vert1, *vals0, *vals1, deriv0, deriv1;
+  int i, j, k;
+  if (nc==1) /* linear interpolate */
+  { sa = 0;
+    for (i=0; i<=d; i++) sa += xxa[i]*vv[i];
+    return(sa);
+  }
+  sa = 1.0;
+  for (j=d; j>0; j--)  /* eliminate v[w[j]] */
+  { lb = xxa[j]/sa;
+    for (k=0; k<j; k++) /* Interpolate edge v[w[k]],v[w[j]] */
+    { vert0 = &v[w[k]*d];
+      vert1 = &v[w[j]*d];
+      vals0 = &vv[k*nc];
+      vals1 = &vv[j*nc];
+      deriv0 = deriv1 = 0;
+      for (i=0; i<d; i++)
+      { deriv0 += (vert1[i]-vert0[i])*vals0[i+1];
+        deriv1 += (vert1[i]-vert0[i])*vals1[i+1];
+      }
+      vals0[0] = cubic_interp(lb,vals0[0],vals1[0],deriv0,deriv1);
+      for (i=1; i<=d; i++)
+        vals0[i] = (1-lb)*((1-lb)*vals0[i]+lb*vals1[i]);
+    }
+    sa -= xxa[j];
+    if (sa<=0) j = 0;
+  }
+  return(vals0[0]);
+}
+
+double triang_clotoch(xev,vv,ce,p,xxa)
+double *xev, *vv, *xxa;
+int *ce, p;
+{ double cfo[3], cfe[3], cg[9], *va, *vb, *vc,
+    l0, nm[3], na, nb, nc, *xl, *xr, *xz, d0, d1, lb, dlt, gam;
+  int i, w[3], cfl, cfr;
+  if (p==1)
+    return(xxa[0]*vv[0]+xxa[1]*vv[1]+xxa[2]*vv[2]);
+  if (xxa[2]<=MIN(xxa[0],xxa[1]))
+  { va = &xev[2*ce[0]]; vb = &xev[2*ce[1]]; vc = &xev[2*ce[2]];
+    w[0] = 0; w[1] = 3; w[2] = 6;
+  }
+  else
+  if (xxa[1]<xxa[0])
+  { w[0] = 0; w[1] = 6; w[2] = 3;
+    va = &xev[2*ce[0]]; vb = &xev[2*ce[2]]; vc = &xev[2*ce[1]];
+    lb = xxa[1]; xxa[1] = xxa[2]; xxa[2] = lb;
+  }
+  else
+  { w[0] = 6; w[1] = 3; w[2] = 0;
+    va = &xev[2*ce[2]]; vb = &xev[2*ce[1]]; vc = &xev[2*ce[0]];
+    lb = xxa[0]; xxa[0] = xxa[2]; xxa[2] = lb;
+  }
+  
+/* set cg to values and derivatives on standard triangle */
+  for (i=0; i<3; i++)
+  { cg[3*i] = vv[w[i]];
+    cg[3*i+1] = ((vb[0]-va[0])*vv[w[i]+1]
+                +(vb[1]-va[1])*vv[w[i]+2])/2;  /* df/dx */
+    cg[3*i+2] = ((2*vc[0]-vb[0]-va[0])*vv[w[i]+1]
+                +(2*vc[1]-vb[1]-va[1])*vv[w[i]+2])/2.0; /* sqrt{3} df/dy */
+  }
+  dlt = (vb[0]-va[0])*(vc[1]-va[1])-(vc[0]-va[0])*(vb[1]-va[1]);
+  /* Twice area; +ve if abc antic.wise  -ve is abc c.wise */
+  cfo[0] = (cg[0]+cg[3]+cg[6])/3;
+  cfo[1] = (2*cg[0]-cg[3]-cg[6])/4;
+  cfo[2] = (2*cg[3]-cg[0]-cg[6])/4;
+  na = -cg[1]+cg[2];  /* perp. deriv, rel. length 2 */
+  nb = -cg[4]-cg[5];
+  nc = 2*cg[7];
+  cfo[1] += (nb-nc)/16;
+  cfo[2] += (nc-na)/16;
+  na = -cg[1]-cg[2]/3.0;  /* derivatives back to origin */
+  nb =  cg[4]-cg[5]/3.0;
+  nc =        cg[8]/1.5;
+  cfo[0] -= (na+nb+nc)*7/54;
+  cfo[1] += 13*(nb+nc-2*na)/144;
+  cfo[2] += 13*(na+nc-2*nb)/144;
+  for (i=0; i<3; i++)
+  { /* Outward normals by linear interpolation on original triangle.
+       Convert to outward normals on standard triangle.
+       Actually, computed to opposite corner */
+    switch(i)
+    { case 0: xl = vc; xr = vb; xz = va; cfl = w[2]; cfr = w[1];
+              break;
+      case 1: xl = va; xr = vc; xz = vb; cfl = w[0]; cfr = w[2];
+              break;
+      case 2: xl = vb; xr = va; xz = vc; cfl = w[1]; cfr = w[0];
+              break;
+    }
+    na = xr[0]-xl[0]; nb = xr[1]-xl[1];
+    lb = na*na+nb*nb;
+    d0 = 1.5*(vv[cfr]-vv[cfl]) - 0.25*(na*(vv[cfl+1]+vv[cfr+1])
+         +nb*(vv[cfl+2]+vv[cfr+2]));
+    d1 = 0.5*( na*(vv[cfl+2]+vv[cfr+2])-nb*(vv[cfl+1]+vv[cfr+1]) );
+    l0 = (xz[0]-xl[0])*na+(xz[1]-xl[1])*nb-lb/2;
+    nm[i] = (d1*dlt-l0*d0)/lb;
+  }
+  cfo[0] -= (nm[0]+nm[1]+nm[2])*4/81;
+  cfo[1] += (2*nm[0]-nm[1]-nm[2])/27;
+  cfo[2] += (2*nm[1]-nm[0]-nm[2])/27;
+
+  gam = xxa[0]+xxa[1]-2*xxa[2];
+  if (gam==0) return(cfo[0]);
+  lb = (xxa[0]-xxa[2])/gam;
+  d0 = -2*cg[4]; d1 = -2*cg[1];
+  cfe[0] = cubic_interp(lb,cg[3],cg[0],d0,d1);
+  cfe[1] = cubintd(lb,cg[3],cg[0],d0,d1);
+  cfe[2] = -(1-lb)*(1-2*lb)*cg[5] + 4*lb*(1-lb)*nm[2] - lb*(2*lb-1)*cg[2];
+  d0 = 2*(lb*cfo[1]+(1-lb)*cfo[2]);
+  d1 = (lb-0.5)*cfe[1]+cfe[2]/3.0;
+  return(cubic_interp(gam,cfo[0],cfe[0],d0,d1));
+}
+
+int triang_getvertexvals(fp,evs,vv,i,what)
+fitpt *fp;
+evstruc *evs;
+double *vv;
+int i, what;
+{ double dx, P, le, vl[1+MXDIM], vh[1+MXDIM];
+  int d, il, ih, j, nc;
+  d = fp->d;
+  if (evs->s[i]==0) return(exvval(fp,vv,i,d,what,0));
+
+  il = evs->lo[i]; nc = triang_getvertexvals(fp,evs,vl,il,what);
+  ih = evs->hi[i]; nc = triang_getvertexvals(fp,evs,vh,ih,what);
+  vv[0] = (vl[0]+vh[0])/2;
+  if (nc==1) return(nc);
+  P = 1.5*(vh[0]-vl[0]);
+  le = 0.0;
+  for (j=0; j<d; j++)
+  { dx = evptx(fp,ih,j)-evptx(fp,il,j);
+    vv[0] += dx*(vl[j+1]-vh[j+1])/8;
+    vv[j+1] = (vl[j+1]+vh[j+1])/2;
+    P -= 1.5*dx*vv[j+1];
+    le += dx*dx;
+  }
+  for (j=0; j<d; j++)
+    vv[j+1] += P*(evptx(fp,ih,j)-evptx(fp,il,j))/le;
+  return(nc);
+}
+
+double triang_int(lf,x,what)
+lfit *lf;
+double *x;
+int what;
+{
+  int d, i, j, k, vc, nc;
+  int *ce, nce[1+MXDIM];
+  double xa[1+MXDIM], vv[(1+MXDIM)*(1+MXDIM)], lb;
+fitpt *fp;
+evstruc *evs;
+fp = &lf->fp;
+evs= &lf->evs;
+
+  d = fp->d; vc = d+1;
+  ce = evs->ce;
+  i = 0;
+  while ((i<evs->nce) && (!intri(x,&ce[i*vc],evp(fp),xa,d))) i++;
+  if (i==evs->nce) return(NOSLN);
+  i *= vc;
+  for (j=0; j<vc; j++) nce[j] = ce[i+j];
+  triang_descend(lf,xa,nce);
+
+  /* order the vertices -- needed for asymmetric interptr */
+  do
+  { k=0;
+    for (i=0; i<d; i++)
+      if (nce[i]>nce[i+1])
+      { j=nce[i]; nce[i]=nce[i+1]; nce[i+1]=j; k=1;
+        lb = xa[i]; xa[i] = xa[i+1]; xa[i+1] = lb;
+      }
+  } while(k);
+  nc = 0;
+  for (i=0; i<vc; i++)
+    nc =  triang_getvertexvals(fp,evs,&vv[i*nc],nce[i],what);
+  return((d==2) ? triang_clotoch(evp(fp),vv,nce,nc,xa) :
+                 triang_cubicint(evp(fp),vv,nce,d,nc,xa));
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * Functions for computing residuals and fitted values from
+ * the locfit object.
+ *
+ * fitted(lf,fit,what,cv,ty) computes fitted values from the
+ *   fit structure in lf. 
+ * resid(y,c,w,th,mi,ty) converts fitted values to residuals
+*/
+
+#include "lfev.h"
+
+#define NRT 8
+static char *rtype[NRT] = { "deviance", "d2",    "pearson", "raw",
+                          "ldot",     "lddot", "fit",     "mean" };
+static int   rvals[NRT] = { RDEV, RDEV2, RPEAR, RRAW, RLDOT, RLDDT, RFIT, RMEAN};
+int restyp(z)
+char *z;
+{ int val;
+
+  val = pmatch(z, rtype, rvals, NRT, -1);
+  if (val==-1) LERR(("Unknown type = %s",z));
+  return(val);
+}
+
+double resid(y,w,th,fam,ty,res)
+int fam, ty;
+double y, w, th, *res;
+{ double raw;
+
+  fam = fam & 63;
+  if ((fam==TGAUS) | (fam==TROBT) | (fam==TCAUC))
+    raw = y-res[ZMEAN];
+  else
+    raw = y-w*res[ZMEAN];
+  switch(ty)
+  { case RDEV:
+      if (res[ZDLL]>0) return(sqrt(-2*res[ZLIK]));
+            else return(-sqrt(-2*res[ZLIK]));
+    case RPEAR:
+      if (res[ZDDLL]<=0)
+      { if (res[ZDLL]==0) return(0);
+        return(NOSLN);
+      }
+      return(res[ZDLL]/sqrt(res[ZDDLL]));
+    case RRAW:  return(raw);
+    case RLDOT: return(res[ZDLL]);
+    case RDEV2: return(-2*res[ZLIK]);
+    case RLDDT: return(res[ZDDLL]);
+    case RFIT:  return(th);
+    case RMEAN: return(res[ZMEAN]);
+    default: LERR(("resid: unknown residual type %d",ty));
+  }
+  return(0.0);
+}
+
+double studentize(res,inl,var,ty,link)
+double res, inl, var, *link;
+int ty;
+{ double den;
+  inl *= link[ZDDLL];
+  var = var*var*link[ZDDLL];
+  if (inl>1) inl = 1;
+  if (var>inl) var = inl;
+  den = 1-2*inl+var;
+  if (den<0) return(0.0);
+  switch(ty)
+  { case RDEV:
+    case RPEAR:
+    case RRAW:
+    case RLDOT:
+      return(res/sqrt(den));
+    case RDEV2:
+      return(res/den);
+    default: return(res);
+  }
+}
+
+void fitted(lf,fit,what,cv,st,ty)
+lfit *lf;
+double *fit;
+int what, cv, st, ty;
+{ int i, j, d, n, evo;
+  double xx[MXDIM], th, inl, var, link[LLEN];
+  n = lf->lfd.n;
+  d = lf->lfd.d;
+  evo = ev(&lf->evs);
+  cv &= (evo!=ECROS);
+  if ((evo==EDATA)|(evo==ECROS)) evo = EFITP;
+  setfamily(&lf->sp);
+
+  for (i=0; i<n; i++)
+  { for (j=0; j<d; j++) xx[j] = datum(&lf->lfd,j,i);
+    th = dointpoint(lf,xx,what,evo,i);
+    if ((what==PT0)|(what==PVARI)) th = th*th;
+    if (what==PCOEF)
+    {
+      th += base(&lf->lfd,i);
+      stdlinks(link,&lf->lfd,&lf->sp,i,th,rsc(&lf->fp));
+      if ((cv)|(st))
+      { inl = dointpoint(lf,xx,PT0,evo,i);
+        inl = inl*inl;
+        if (cv)
+        { th -= inl*link[ZDLL];
+          stdlinks(link,&lf->lfd,&lf->sp,i,th,rsc(&lf->fp));
+        }
+        if (st) var = dointpoint(lf,xx,PNLX,evo,i);
+      }
+      fit[i] = resid(resp(&lf->lfd,i),prwt(&lf->lfd,i),th,fam(&lf->sp),ty,link);
+      if (st) fit[i] = studentize(fit[i],inl,var,ty,link);
+    } else fit[i] = th;
+    if (lf_error) return;
+  }
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+extern double robscale;
+
+/* special version of ressumm to estimate sigma^2, with derivative estimation */
+void ressummd(lf)
+lfit *lf;
+{ int i;
+  double s0, s1;
+  s0 = s1 = 0.0;
+  if ((fam(&lf->sp)&64)==0)
+  { rv(&lf->fp) = 1.0;
+    return;
+  }
+  for (i=0; i<lf->fp.nv; i++)
+  { s0 += lf->fp.lik[2*lf->fp.nvm+i];
+    s1 += lf->fp.lik[i];
+  }
+  if (s0==0.0)
+    rv(&lf->fp) = 0.0;
+  else
+    rv(&lf->fp) = -2*s1/s0;
+}
+
+/*
+ * res[0] = log-likelihood.
+ * res[1] = df0 = tr(H)
+ * res[2] = df0 = tr(H'H)
+ * res[3] = s^2.
+ * res[5] = robustscale.
+ */
+void ressumm(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{ int i, j, evo, tg;
+  double *oy, pw, r1, r2, rdf, t0, t1, u[MXDIM], link[LLEN];
+  fitpt *fp;
+
+  res[0] = res[1] = res[2] = 0.0;
+
+  evo = ev(&lf->evs);
+  if ((evo==EKDCE) | (evo==EPRES))
+  { res[3] = 1.0;
+    return;
+  }
+  if (lf->dv.nd>0)
+  { ressummd(lf);
+    return;
+  }
+
+  r1 = r2 = 0.0;
+  if ((evo==EDATA) | (evo==ECROS)) evo = EFITP;
+
+  for (i=0; i<lf->lfd.n; i++)
+  { for (j=0; j<lf->lfd.d; j++) u[j] = datum(&lf->lfd,j,i);
+    fitv(des,i) = base(&lf->lfd,i)+dointpoint(lf,u,PCOEF,evo,i);
+    des->wd[i] = resp(&(lf->lfd),i) - fitv(des,i);
+    wght(des,i) = 1.0;
+    des->ind[i] = i;
+  }
+
+  tg = fam(&lf->sp);
+  res[5] = 1.0;
+  if ((tg==TROBT+64) | (tg==TCAUC+64)) /* global robust scale */
+  { oy = lf->lfd.y; lf->lfd.y = des->wd;
+    des->xev = lf->pc.xbar;
+    locfit(&lf->lfd,des,&lf->sp,1,0,0);
+    lf->lfd.y = oy;
+    res[5] = robscale;
+  }
+
+  for (i=0; i<lf->lfd.n; i++)
+  { for (j=0; j<lf->lfd.d; j++) u[j] = datum(&lf->lfd,j,i);
+    t0 = dointpoint(lf,u,PT0,evo,i);
+    t1 = dointpoint(lf,u,PNLX,evo,i);
+    stdlinks(link,&lf->lfd,&lf->sp,i,fitv(des,i),res[5]);
+    t1 = t1*t1*link[ZDDLL];
+    t0 = t0*t0*link[ZDDLL];
+    if (t1>1) t1 = 1;
+    if (t0>1) t0 = 1; /* no observation gives >1 deg.free */
+    res[0] += link[ZLIK];
+    res[1] += t0;
+    res[2] += t1;
+    pw = prwt(&lf->lfd,i);
+    if (pw>0)
+    { r1 += link[ZDLL]*link[ZDLL]/pw;
+      r2 += link[ZDDLL]/pw;
+    }
+  }
+
+  res[3] = 1.0;
+  if ((fam(&lf->sp)&64)==64) /* quasi family */
+  { rdf = lf->lfd.n-2*res[1]+res[2];
+    if (rdf<1.0)
+    { WARN(("Estimated rdf < 1.0; not estimating variance"));
+    }
+    else
+      res[3] = r1/r2 * lf->lfd.n / rdf;
+  }
+
+  /* try to ensure consistency for family="circ"! */
+  if (((fam(&lf->sp)&63)==TCIRC) & (lf->lfd.d==1))
+  { int *ind, nv;
+    double dlt, th0, th1;
+    ind = des->ind;
+    nv = fp->nv;
+    for (i=0; i<nv; i++) ind[i] = i;
+    lforder(ind,evp(fp),0,nv-1);
+    for (i=1; i<nv; i++)
+    { dlt = evptx(fp,ind[i],0)-evptx(fp,ind[i-1],0);
+      th0 = fp->coef[ind[i]]-dlt*fp->coef[ind[i]+nv]-fp->coef[ind[i-1]];
+      th1 = fp->coef[ind[i]]-dlt*fp->coef[ind[i-1]+nv]-fp->coef[ind[i-1]];
+      if ((th0>PI)&(th1>PI))
+      { for (j=0; j<i; j++)
+          fp->coef[ind[j]] += 2*PI;
+        i--;
+      }
+      if ((th0<(-PI))&(th1<(-PI)))
+      { for (j=0; j<i; j++)
+          fp->coef[ind[j]] -= 2*PI;
+        i--;
+      }
+    }
+  }
+
+}
+
+double rss(lf,des,df)
+lfit *lf;
+design *des;
+double *df;
+{ double ss, res[10];
+  ss = 0;
+  ressumm(lf,des,res);
+  *df = lf->lfd.n - 2*res[1] + res[2];
+  return(-2*res[0]);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *   Derivative corrections. The local slopes are not the derivatives
+ *   of the local likelihood estimate; the function dercor() computes
+ *   the adjustment to get the correct derivatives under the assumption
+ *   that h is constant.
+ *
+ *   By differentiating the local likelihood equations, one obtains
+ *
+ *     d ^      ^       T      -1   T  d    .       ^
+ *    -- a   =  a  -  (X W V X)    X  -- W  l( Y, X a)
+ *    dx  0      1                    dx
+ */
+
+#include "lfev.h"
+extern double robscale;
+
+void dercor(lfd,sp,des,coef)
+lfdata *lfd;
+smpar *sp;
+design *des;
+double *coef;
+{ double s1, dc[MXDIM], wd, link[LLEN];
+  int i, ii, j, m, d, p;
+  if (fam(sp)<=THAZ) return;
+  if (ker(sp)==WPARM) return;
+
+  d = lfd->d;
+  p = des->p; m = des->n;
+
+  if (lf_debug>1) mut_printf("  Correcting derivatives\n");
+  fitfun(lfd, sp, des->xev,des->xev,des->f1,NULL);
+  jacob_solve(&des->xtwx,des->f1);
+  setzero(dc,d);
+
+  /* correction term is e1^T (XTWVX)^{-1} XTW' ldot. */
+  for (i=0; i<m; i++)
+  { s1 = innerprod(des->f1,d_xi(des,i),p);
+    ii = des->ind[i];
+    stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+    for (j=0; j<d; j++)
+    { wd = wght(des,ii)*weightd(datum(lfd,j,ii)-des->xev[j],lfd->sca[j],
+        d,ker(sp),kt(sp),des->h,lfd->sty[j],dist(des,ii));
+      dc[j] += s1*wd*link[ZDLL];
+    }
+
+  }
+  for (j=0; j<d; j++) coef[j+1] += dc[j];
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+void allocallcf(lf)
+lfit *lf;
+{ lf->fp.coef = VVEC(lf,0);
+  lf->fp.h    = VVEC(lf,NPAR(lf));
+}
+
+int procvallcf(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int i, p, lf_status;
+
+  lf_status = procv_nov(des,lf,v);
+  if (lf_error) return(lf_status);
+
+  p = NPAR(lf);
+  for (i=0; i<p; i++) VVAL(lf,v,i) = des->cf[i];
+  lf->fp.h[v] = des->h;
+
+  return(0);
+}
+
+void initallcf(lf)
+lfit *lf;
+{ PROCV(lf) = procvallcf;
+  ALLOC(lf) = allocallcf;
+  PPROC(lf) = NULL;
+  KEEPV(lf) = NPAR(lf)+1;
+  KEEPC(lf) = 0;
+  NOPC(lf)  = 1;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+void pprocgam(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{ int i, j, n, evo, op;
+  double *fv, *vr, df, t0, t1, u[MXDIM], link[LLEN];
+
+  n = lf->lfd.n;
+  fv = res;
+  vr = &res[n];
+  df = 0.0;
+
+  evo = ev(&lf->evs);
+  if (evo==EDATA) evo = EFITP;
+  
+  for (i=0; i<n; i++)
+  { for (j=0; j<lf->lfd.d; j++)  u[j] = datum(&lf->lfd,j,i);
+    fitv(des,i) = base(&lf->lfd,i)+dointpoint(lf,u,PCOEF,evo,i);
+    lf->lfd.y[i] -= fitv(des,i);
+    wght(des,i) = 1.0;
+    des->ind[i] = i;
+
+    t0 = dointpoint(lf,u,PT0,evo,i);
+    t1 = dointpoint(lf,u,PNLX,evo,i);
+    stdlinks(link,&lf->lfd,&lf->sp,i,fitv(des,i),1.0);
+    t0 = t0*t0*link[ZDDLL];
+    t1 = t1*t1*link[ZDDLL];
+    if (t0>1) t0 = 1; /* no observation gives >1 deg.free */
+    if (t1>1) t1 = 1; /* no observation gives >1 deg.free */
+    vr[i] = t1;
+    df += t0;
+  }
+
+  des->n = n;
+  deg(&lf->sp) = 1;
+  op = npar(&lf->sp);
+  npar(&lf->sp) = des->p = 1+lf->lfd.d;
+  des->xev = lf->pc.xbar;
+  locfit(&lf->lfd,des,&lf->sp,1,0,0);
+
+  for (i=0; i<n; i++) fv[i] = resp(&lf->lfd,i) - fitv(des,i);
+  for (i=0; i<=lf->lfd.d; i++)
+    lf->pc.coef[i] += des->cf[i];
+  res[2*n] = df-2;
+  npar(&lf->sp) = op;
+}
+
+void initgam(lf)
+lfit *lf;
+{ initstd(lf);
+  PPROC(lf) = pprocgam;
+  KEEPC(lf) = 2*NOBS(lf)+1;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+int procvhatm(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int k;
+  double *l;
+  l = &lf->fp.coef[v*lf->lfd.n];
+  if ((ker(&lf->sp)!=WPARM) | (!haspc(&lf->pc)))
+  { k = procv_nov(des,lf,v);
+    wdiag(&lf->lfd,&lf->sp,des,l,&lf->dv,0,1,1);
+  }
+  else
+    wdiagp(&lf->lfd,&lf->sp,des,l,&lf->pc,&lf->dv,0,1,1);
+  lf->fp.h[v] = des->h;
+  return(k);
+}
+
+void allochatm(lf)
+lfit *lf;
+{ lf->fp.coef = VVEC(lf,0);
+  lf->fp.h    = VVEC(lf,NOBS(lf));
+}
+
+void pprochatm(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{ transpose(lf->fp.coef,lf->fp.nvm,lf->lfd.n);
+}
+
+void inithatm(lf)
+lfit *lf;
+{ PROCV(lf) = procvhatm;
+  ALLOC(lf) = allochatm;
+  PPROC(lf) = pprochatm;
+  KEEPV(lf) = NOBS(lf)+1;
+  KEEPC(lf) = 1;
+  NOPC(lf) = 1; /* could use pc if mi[MKER] == WPARM */
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+static lfit *lf_scb;
+static lfdata *lfd_scb;
+static smpar  *scb_sp;
+static design *des_scb;
+
+int scbfitter(x,l,reqd)
+double *x, *l;
+int reqd;
+{
+  int m;
+  des_scb->xev = x;
+  if ((ker(scb_sp)!=WPARM) | (!haspc(&lf_scb->pc)))
+  { locfit(lfd_scb,des_scb,&lf_scb->sp,1,1,0);
+    m = wdiag(lfd_scb, scb_sp, des_scb,l,&lf_scb->dv,reqd,2,0);
+  }
+  else
+    m = wdiagp(lfd_scb, scb_sp, des_scb,l,&lf_scb->pc,&lf_scb->dv,reqd,2,0);
+  return(m);
+}
+
+int constants(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{
+  int d, m, nt;
+  double *wk;
+  evstruc *evs;
+
+  lf_scb = lf;
+  des_scb = des;
+  lfd_scb = &lf->lfd;
+  scb_sp  = &lf->sp;
+
+  evs = &lf->evs;
+  d = lfd_scb->d;
+  m = lfd_scb->n;
+  trchck(lf,0,0,0);
+
+  if (lf_error) return(0);
+  if ((ker(scb_sp) != WPARM) && (lf->sp.nn>0))
+    WARN(("constants are approximate for varying h"));
+  npar(scb_sp) = calcp(scb_sp,lf->lfd.d);
+  des_init(des,m,npar(scb_sp));
+  set_scales(&lf->lfd);
+  set_flim(&lf->lfd,&lf->evs);
+  compparcomp(des,&lf->lfd,&lf->sp,&lf->pc,ker(scb_sp)!=WPARM);
+  
+  wk = &res[d+1];
+  nt = tube_constants(scbfitter,d,m,ev(evs),mg(evs),evs->fl,
+    res,wk,(d>3) ? 4 : d+1,0);
+  lf->evs.nce = nt;   /* cheat way to return it to S. */
+  return(nt);
+}
+
+void initkappa(lf)
+lfit *lf;
+{ PROCV(lf) = NULL;
+  ALLOC(lf) = NULL;
+  PPROC(lf) = (void *)constants;
+  KEEPV(lf) = 0;
+  KEEPC(lf) = NVAR(lf)+1+k0_reqd(NVAR(lf),NOBS(lf),0);
+  NOPC(lf) = 0;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+/*  fix df computation for link=IDENT. */
+void pproclscv(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{ double df, fh, fh_cv, infl, z0, z1, x[MXDIM];
+  int i, n, j, evo;
+  z1 = df = 0.0;
+  evo = ev(&lf->evs);
+  n = lf->lfd.n;
+  if ((evo==EDATA) | (evo==ECROS)) evo = EFITP;
+
+  z0 = dens_integrate(lf,des,2);
+
+  for (i=0; i<n; i++)
+  { for (j=0; j<lf->lfd.d; j++) x[j] = datum(&lf->lfd,j,i);
+    fh = base(&lf->lfd,i)+dointpoint(lf,x,PCOEF,evo,i);
+    if (link(&lf->sp)==LLOG) fh = exp(fh);
+    infl = dointpoint(lf,x,PT0,evo,i);
+    infl = infl * infl;
+    if (infl>1) infl = 1;
+    fh_cv = (link(&lf->sp) == LIDENT) ?
+       (n*fh - infl) / (n-1.0) : fh*(1-infl)*n/(n-1.0);
+    z1 += fh_cv;
+    df += infl;
+  }
+
+  res[0] = z0-2*z1/n;
+  res[1] = df;
+}
+
+void initlscv(lf)
+lfit *lf;
+{ initstd(lf);
+  KEEPC(lf) = 2;
+  PPROC(lf) = pproclscv;
+  NOPC(lf) = 1;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+static double pen, sig2;
+
+void goldensec(f,des,tr,eps,xm,ym,meth)
+double (*f)(), eps, *xm, *ym;
+int meth;
+design *des;
+lfit *tr;
+{ double x[4], y[4], xx[11], yy[11];
+  int i, im;
+  xx[0] = tr->sp.fixh;
+  if (xx[0]<=0)
+  { LERR(("regband: initialize h>0"));
+    return;
+  }
+  for (i=0; i<=10; i++)
+  { if (i>0) xx[i] = (1+gold_rat)*xx[i-1];
+    yy[i] = f(xx[i],des,tr,meth);
+    if ((i==0) || (yy[i]<yy[im])) im = i;
+  }
+  if (im==0) im = 1;
+  if (im==10)im = 9;
+  x[0] = xx[im-1]; y[0] = yy[im-1];
+  x[1] = xx[im];   y[1] = yy[im];
+  x[3] = xx[im+1]; y[3] = yy[im+1];
+  x[2] = gold_rat*x[3]+(1-gold_rat)*x[0];
+  y[2] = f(x[2],des,tr,meth);
+  while (x[3]-x[0]>eps)
+  { if (y[1]<y[2])
+    { x[3] = x[2]; y[3] = y[2];
+      x[2] = x[1]; y[2] = y[1];
+      x[1] = gold_rat*x[0]+(1-gold_rat)*x[3];
+      y[1] = f(x[1],des,tr,meth);
+    }
+    else
+    { x[0] = x[1]; y[0] = y[1];
+      x[1] = x[2]; y[1] = y[2];
+      x[2] = gold_rat*x[3]+(1-gold_rat)*x[0];
+      y[2] = f(x[2],des,tr,meth);
+    }
+  }
+  im = 0;
+  for (i=1; i<4; i++) if (y[i]<y[im]) im = i;
+  *xm = x[im]; *ym = y[im];
+}
+
+double dnk(x,k)
+double x;
+int k;
+{ double f;
+  switch(k)
+  { case 0: f = 1; break;
+    case 1: f = -x; break;
+    case 2: f = x*x-1; break;
+    case 3: f = x*(x*x-3); break;
+    case 4: f = 3-x*x*(6-x*x); break;
+    case 5: f = -x*(15-x*x*(10-x*x)); break;
+    case 6: f = -15+x*x*(45-x*x*(15-x*x)); break;
+    default: LERR(("dnk: k=%d too large",k)); return(0.0);
+  }
+  return(f*exp(-x*x/2)/S2PI);
+}
+
+double locai(h,des,lf)
+double h;
+design *des;
+lfit *lf;
+{ double cp, res[10];
+  nn(&lf->sp) = h;
+  lf->mdl.procv = procvstd;
+  nstartlf(des,lf);
+  ressumm(lf,des,res);
+  cp = -2*res[0] + pen*res[1];
+  return(cp);
+}
+
+static int fc;
+
+double loccp(h,des,lf,m) /* m=1: cp    m=2: gcv */
+double h;
+design *des;
+lfit *lf;
+int m;
+{ double cp, res[10];
+  int dg, n;
+
+  n = lf->lfd.n;
+  nn(&lf->sp) = 0;
+  fixh(&lf->sp) = h;
+  lf->mdl.procv = procvstd;
+  nstartlf(des,lf);
+  ressumm(lf,des,res);
+  if (m==1)
+  { if (fc) sig2 = res[3]; /* first call - set sig2 */
+    cp = -2*res[0]/sig2 - n + 2*res[1];
+  }
+  else
+    cp = -2*n*res[0]/((n-res[1])*(n-res[1]));
+  fc = 0;
+  return(cp);
+}
+
+double cp(des,lf,meth)
+design *des;
+lfit *lf;
+int meth;
+{ double hm, ym;
+  fc = 1;
+  goldensec(loccp,des,lf,0.001,&hm,&ym,meth);
+  return(hm);
+}
+
+double gkk(des,lf)
+design *des;
+lfit *lf;
+{ double h, h5, nf, th;
+  int i, j, n, dg0, dg1;
+  ev(&lf->evs)= EDATA;
+  nn(&lf->sp) = 0;
+  n = lf->lfd.n;
+  dg0 = deg0(&lf->sp);     /* target degree */
+  dg1 = dg0+1+(dg0%2==0);  /* pilot degree */
+  nf = exp(log(1.0*n)/10); /* bandwidth inflation factor */
+  h = lf->sp.fixh;         /* start bandwidth */
+  for (i=0; i<=10; i++)
+  { deg(&lf->sp) = dg1;
+    lf->sp.fixh = h*nf;
+    lf->mdl.procv = procvstd;
+    nstartlf(des,lf);
+    th = 0;
+    for (j=10; j<n-10; j++)
+      th += lf->fp.coef[dg1*n+j]*lf->fp.coef[dg1*n+j];
+th *= n/(n-20.0);
+    h5 = sig2 * Wikk(ker(&lf->sp),dg0) / th;
+    h = exp(log(h5)/(2*dg1+1));
+    if (lf_error) return(0.0);
+/* mut_printf("pilot %8.5f  sel %8.5f\n",lf->sp.fixh,h); */
+  }
+  return(h);
+}
+
+double rsw(des,lf)
+design *des;
+lfit *lf;
+{ int i, j, k, nmax, nvm, n, mk, evo, dg0, dg1;
+  double rss[6], cp[6], th22, dx, d2, hh;
+  nmax = 5;
+  evo = ev(&lf->evs); ev(&lf->evs) = EGRID;
+  mk = ker(&lf->sp);  ker(&lf->sp) = WRECT;
+  dg0 = deg0(&lf->sp);
+  dg1 = 1 + dg0 + (dg0%2==0);
+  deg(&lf->sp) = 4;
+  for (k=nmax; k>0; k--)
+  { lf->evs.mg[0] = k;
+    lf->evs.fl[0] = 1.0/(2*k);
+    lf->evs.fl[1] = 1-1.0/(2*k);
+    nn(&lf->sp) = 0;
+    fixh(&lf->sp) = 1.0/(2*k);
+    lf->mdl.procv = procvstd;
+    nstartlf(des,lf);
+    nvm = lf->fp.nvm;
+    rss[k] = 0;
+    for (i=0; i<k; i++) rss[k] += -2*lf->fp.lik[i];
+  }
+  n = lf->lfd.n; k = 1;
+  for (i=1; i<=nmax; i++)
+  { /* cp[i] = (n-5*nmax)*rss[i]/rss[nmax]-(n-10*i); */
+    cp[i] = rss[i]/sig2-(n-10*i);
+    if (cp[i]<cp[k]) k = i;
+  }
+  lf->evs.mg[0] = k;
+  lf->evs.fl[0] = 1.0/(2*k);
+  lf->evs.fl[1] = 1-1.0/(2*k);
+  nn(&lf->sp) = 0;
+  fixh(&lf->sp) = 1.0/(2*k);
+  lf->mdl.procv = procvstd;
+  nstartlf(des,lf);
+  ker(&lf->sp) = mk; ev(&lf->evs) = evo;
+  nvm = lf->fp.nvm;
+  th22 = 0;
+  for (i=10; i<n-10; i++)
+  { j = floor(k*datum(&lf->lfd,0,i));
+    if (j>=k) j = k-1;
+    dx = datum(&lf->lfd,0,i)-evptx(&lf->fp,0,j);
+    if (dg1==2)
+      d2 = lf->fp.coef[2*nvm+j]+dx*lf->fp.coef[3*nvm+j]+dx*dx*lf->fp.coef[4*nvm+j]/2;
+    else d2 = lf->fp.coef[4*nvm+j];
+    th22 += d2*d2;
+  }
+  hh = Wikk(mk,dg0)*sig2/th22*(n-20.0)/n;
+  return(exp(log(hh)/(2*dg1+1)));
+}
+
+#define MAXMETH 10
+
+void rband(lf,des,hhat)
+lfit *lf;
+design *des;
+double *hhat;
+{ int i, dg, nmeth, meth[MAXMETH];
+  double h0, res[10];
+
+  nmeth = lf->dv.nd;
+  for (i=0; i<nmeth; i++) meth[i] = lf->dv.deriv[i];
+  lf->dv.nd = 0;
+
+/* first, estimate sigma^2.
+ * this is ridiculously bad. lf->sp.fixh = 0.05????
+ */
+/*  dg = deg(&lf->sp); deg(&lf->sp) = 2;
+  h0 = lf->sp.fixh;  lf->sp.fixh = 0.05;
+  lf->mdl.procv = procvstd;
+  nstartlf(des,lf);
+  ressumm(lf,des,res);
+  deg(&lf->sp) = dg; lf->sp.fixh = h0;
+  sig2 = res[3];  */
+
+  for (i=0; i<nmeth; i++)
+  {
+    switch(meth[i])
+    { case 0: hhat[i] = cp(des,lf,1);
+              break;
+      case 1: hhat[i] = cp(des,lf,2);
+              break;
+      case 2: hhat[i] = gkk(des,lf);
+              break;
+      case 3: hhat[i] = rsw(des,lf);
+              break;
+      default: hhat[i] = 0;
+              mut_printf("Unknown method %d\n",meth[i]);
+    }
+    if (lf_error) i = nmeth;
+  }
+  lf->dv.nd = nmeth;
+}
+
+void initrband(lf)
+lfit *lf;
+{
+  initstd(lf);
+  KEEPC(lf) = MAXMETH;
+  PROCV(lf) = NULL;
+  PPROC(lf) = rband;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+static double scb_crit, *x, c[10], kap[5], kaq[5], max_p2;
+static int side, type;
+design *scb_des;
+
+double covar_par(lf,des,x1,x2)
+lfit *lf;
+design *des;
+double x1, x2;
+{ double *v1, *v2, *wk;
+  paramcomp *pc;
+  int i, j, p, ispar;
+
+  v1 = des->f1; v2 = des->ss; wk = des->oc;
+  ispar = (ker(&lf->sp)==WPARM) && (haspc(&lf->pc));
+  p = npar(&lf->sp);
+
+/*  for parametric models, the covariance is
+ *  A(x1)^T (X^T W V X)^{-1} A(x2)
+ *  which we can find easily from the parametric component.
+ */
+  if (ispar)
+  { pc = &lf->pc;
+    fitfun(&lf->lfd, &lf->sp, &x1,pc->xbar,v1,NULL);
+    fitfun(&lf->lfd, &lf->sp, &x2,pc->xbar,v2,NULL);
+    jacob_hsolve(&lf->pc.xtwx,v1);
+    jacob_hsolve(&lf->pc.xtwx,v2);
+  }
+
+/*  for non-parametric models, we must use the cholseky decomposition
+ *  of M2 = X^T W^2 V X. Courtesy of lf_vcov caclulations, should have
+ *  des->P = M2^{1/2} M1^{-1}.
+ */
+  if (!ispar)
+  { fitfun(&lf->lfd, &lf->sp, &x1,des->xev,wk,NULL);
+    for (i=0; i<p; i++)
+    { v1[i] = 0;
+      for (j=0; j<p; j++) v1[i] += des->P[i*p+j]*wk[j];
+    }
+    fitfun(&lf->lfd, &lf->sp, &x2,des->xev,wk,NULL);
+    for (i=0; i<p; i++)
+    { v2[i] = 0;
+      for (j=0; j<p; j++) v2[i] += des->P[i*p+j]*wk[j];
+    }
+  }
+
+  return(innerprod(v1,v2,p));
+}
+
+void cumulant(lf,des,sd)
+lfit *lf;
+design *des;
+double sd;
+{ double b2i, b3i, b3j, b4i;
+  double ss, si, sj, uii, uij, ujj, k1;
+  int ii, i, j, jj;
+  for (i=1; i<10; i++) c[i] = 0.0;
+  k1 = 0;
+
+  /* ss = sd*sd; */
+  ss = covar_par(lf,des,des->xev[0],des->xev[0]);
+
+/*
+ * this isn't valid for nonparametric models. At a minimum,
+ * the sums would have to include weights. Still have to work
+ * out the right way.
+ */
+  for (i=0; i<lf->lfd.n; i++)
+  { ii = des->ind[i];
+    b2i = b2(fitv(des,ii),fam(&lf->sp),prwt(&lf->lfd,ii));
+    b3i = b3(fitv(des,ii),fam(&lf->sp),prwt(&lf->lfd,ii));
+    b4i = b4(fitv(des,ii),fam(&lf->sp),prwt(&lf->lfd,ii));
+    si = covar_par(lf,des,des->xev[0],datum(&lf->lfd,0,ii));
+    uii= covar_par(lf,des,datum(&lf->lfd,0,ii),datum(&lf->lfd,0,ii));
+    if (lf_error) return;
+
+    c[2] += b4i*si*si*uii;
+    c[6] += b4i*si*si*si*si;
+    c[7] += b3i*si*uii;
+    c[8] += b3i*si*si*si;
+    /* c[9] += b2i*si*si*si*si;
+       c[9] += b2i*b2i*si*si*si*si; */
+    k1 += b3i*si*(si*si/ss-uii);
+
+    /* i=j components */
+    c[1] += b3i*b3i*si*si*uii*uii;
+    c[3] += b3i*b3i*si*si*si*si*uii;
+    c[4] += b3i*b3i*si*si*uii*uii;
+
+    for (j=i+1; j<lf->lfd.n; j++)
+    { jj = des->ind[j];
+      b3j = b3(fitv(des,ii),fam(&lf->sp),prwt(&lf->lfd,jj));
+      sj = covar_par(lf,des,des->xev[0],datum(&lf->lfd,0,jj));
+      uij= covar_par(lf,des,datum(&lf->lfd,0,ii),datum(&lf->lfd,0,jj));
+      ujj= covar_par(lf,des,datum(&lf->lfd,0,jj),datum(&lf->lfd,0,jj));
+
+      c[1] += 2*b3i*b3j*si*sj*uij*uij;
+      c[3] += 2*b3i*b3j*si*si*sj*sj*uij;
+      c[4] += b3i*b3j*uij*(si*si*ujj+sj*sj*uii);
+      if (lf_error) return;
+    }
+  }
+  c[5] = c[1];
+  c[7] = c[7]*c[8];
+  c[8] = c[8]*c[8];
+
+  c[1] /= ss; c[2] /= ss; c[3] /= ss*ss; c[4] /= ss;
+  c[5] /= ss; c[6] /= ss*ss; c[7] /= ss*ss;
+  c[8] /= ss*ss*ss; c[9] /= ss*ss;
+
+/* constants used in p(x,z) computation */
+  kap[1] = k1/(2*sqrt(ss));
+  kap[2] = 1 + 0.5*(c[1]-c[2]+c[4]-c[7]) - 3*c[3] + c[6] + 1.75*c[8];
+  kap[4] = -9*c[3] + 3*c[6] + 6*c[8] + 3*c[9];
+
+/* constants used in q(x,u) computation */
+  kaq[2] = c[3] - 1.5*c[8] - c[5] - c[4] + 0.5*c[7] + c[6] - c[2];
+  kaq[4] = -3*c[3] - 6*c[4] - 6*c[5] + 3*c[6] + 3*c[7] - 3*c[8] + 3*c[9];
+}
+
+/* q2(u) := u+q2(x,u) in paper */
+double q2(u)
+double u;
+{ return(u-u*(36.0*kaq[2] + 3*kaq[4]*(u*u-3) + c[8]*((u*u-10)*u*u+15))/72.0);
+}
+
+/*  p2(u) := p2(x,u) in paper */
+double p2(u)
+double u;
+{ return( -u*( 36*(kap[2]-1+kap[1]*kap[1])
+     + 3*(kap[4]+4*kap[1]*sqrt(kap[3]))*(u*u-3)
+     + c[8]*((u*u-10)*u*u+15) ) / 72 );
+}
+
+extern int likereg();
+double gldn_like(a)
+double a;
+{ int err;
+
+  scb_des->fix[0] = 1;
+  scb_des->cf[0] = a;
+  max_nr(likereg, scb_des->cf, scb_des->oc, scb_des->res, scb_des->f1,
+    &scb_des->xtwx, scb_des->p, lf_maxit, 1.0e-6, &err); 
+  scb_des->fix[0] = 0;
+
+  return(scb_des->llk);
+}
+
+/* v1/v2 is correct for deg=0 only */
+void get_gldn(fp,des,lo,hi,v)
+fitpt *fp;
+design *des;
+double *lo, *hi;
+int v;
+{ double v1, v2, c, tlk;
+  int err;
+
+  v1 = fp->nlx[v];
+  v2 = fp->t0[v];
+  c = scb_crit * v1 / v2;
+  tlk = des->llk - c*c/2;
+mut_printf("v %8.5f %8.5f  c %8.5f  tlk %8.5f   llk %8.5f\n",v1,v2,c,tlk,des->llk);
+
+  /* want: { a : l(a) >= l(a-hat) - c*c/2 } */
+  lo[v] = fp->coef[v] - scb_crit*v1;
+  hi[v] = fp->coef[v] + scb_crit*v1;
+
+  err = 0;
+
+mut_printf("lo %2d\n",v);
+  lo[v] = solve_secant(gldn_like,tlk,lo[v],fp->coef[v],1e-8,BDF_EXPLEFT,&err);
+  if (err>0) mut_printf("solve_secant error\n");
+mut_printf("hi %2d\n",v);
+  hi[v] = solve_secant(gldn_like,tlk,fp->coef[v],hi[v],1e-8,BDF_EXPRIGHT,&err);
+  if (err>0) mut_printf("solve_secant error\n");
+}
+
+int procvscb2(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ double thhat, sd, *lo, *hi, u;
+  int err, st, tmp;
+  x = des->xev = evpt(&lf->fp,v);
+  tmp = haspc(&lf->pc);
+  /* if ((ker(&lf->sp)==WPARM) && (haspc(&lf->pc)))
+  { lf->coef[v] = thhat = addparcomp(lf,des->xev,PCOEF);
+    lf->nlx[v] = lf->t0[v] = sd = addparcomp(lf,des->xev,PNLX);
+  }
+  else */
+  { haspc(&lf->pc) = 0;
+    st = procvstd(des,lf,v);
+    thhat = lf->fp.coef[v];
+    sd = lf->fp.nlx[v];
+  }
+  if ((type==GLM2) | (type==GLM3) | (type==GLM4))
+  { if (ker(&lf->sp) != WPARM)
+      WARN(("nonparametric fit; correction is invalid"));
+    cumulant(lf,des,sd);
+  }
+  haspc(&lf->pc) = tmp;
+  lo = lf->fp.t0;
+  hi = &lo[lf->fp.nvm];
+  switch(type)
+  {
+    case GLM1:
+      return(st);
+    case GLM2: /* centered scr */
+      lo[v] = kap[1];
+      hi[v] = sqrt(kap[2]);
+      return(st);
+    case GLM3: /* corrected 2 */
+      lo[v] = solve_secant(q2,scb_crit,0.0,2*scb_crit,0.000001,BDF_NONE,&err);
+      return(st);
+    case GLM4: /* corrected 2' */
+      u = fabs(p2(scb_crit));
+      max_p2 = MAX(max_p2,u);
+      return(st);
+    case GLDN:
+      get_gldn(&lf->fp,des,lo,hi,v);
+      return(st);
+  }
+  LERR(("procvscb2: invalid type"));
+  return(st);
+}
+
+void scb(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{ double k1, k2, *lo, *hi, sig, thhat, nlx, rss[10];
+  int i, nterms;
+
+  scb_des= des;
+
+  npar(&lf->sp) = calcp(&lf->sp,lf->lfd.d);
+  des_init(des,lf->lfd.n,npar(&lf->sp));
+
+  type = geth(&lf->fp);
+
+  if (type >= 80) /* simultaneous */
+  {
+    nterms = constants(lf,des,res);
+    scb_crit = critval(0.05,res,nterms,lf->lfd.d,TWO_SIDED,0.0,GAUSS);
+    type -= 10;
+  }
+  else /* pointwise */
+  { res[0] = 1;
+    scb_crit = critval(0.05,res,1,lf->lfd.d,TWO_SIDED,0.0,GAUSS);
+  }
+
+  max_p2 = 0.0;
+  lf->mdl.procv = procvscb2;
+  nstartlf(des,lf);
+
+  if ((fam(&lf->sp)&64)==64)
+  { i = haspc(&lf->pc); haspc(&lf->pc) = 0;
+    ressumm(lf,des,rss);
+    haspc(&lf->pc) = i;
+    sig = sqrt(rss[3]);
+  }
+  else sig = 1.0;
+
+  lo = lf->fp.t0;
+  hi = &lo[lf->fp.nvm];
+  for (i=0; i<lf->fp.nv; i++)
+  { thhat = lf->fp.coef[i];
+    nlx = lf->fp.nlx[i];
+    switch(type)
+    {
+      case GLM1:  /* basic scb */
+        lo[i] = thhat - scb_crit * sig * nlx;
+        hi[i] = thhat + scb_crit * sig * nlx;
+        break;
+      case GLM2:
+        k1 = lo[i];
+        k2 = hi[i];
+        lo[i] = thhat - k1*nlx - scb_crit*nlx*k2;
+        hi[i] = thhat - k1*nlx + scb_crit*nlx*k2;
+        break;
+      case GLM3:
+        k1 = lo[i];
+        lo[i] = thhat - k1*nlx;
+        hi[i] = thhat + k1*nlx;
+      case GLM4:  /* corrected 2' */
+        lo[i] = thhat - (scb_crit-max_p2)*lf->fp.nlx[i];
+        hi[i] = thhat + (scb_crit-max_p2)*lf->fp.nlx[i];
+        break;
+      case GLDN:
+        break;
+    }
+  }
+}
+
+void initscb(lf)
+lfit *lf;
+{ initstd(lf);
+  PROCV(lf) = NULL;
+  KEEPC(lf) = NVAR(lf)+1+k0_reqd(NVAR(lf),NOBS(lf),0);
+  PPROC(lf) = scb;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+int procvsimple(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int lf_status;
+  lf_status = procv_nov(des,lf,v);
+  VVAL(lf,v,0) = des->cf[cfn(des,0)];
+  return(lf_status);
+}
+
+void allocsimple(lf)
+lfit *lf;
+{ lf->fp.coef = VVEC(lf,0);
+  lf->fp.h = NULL;
+}
+
+void initsimple(lf)
+lfit *lf;
+{
+  PROCV(lf) = procvsimple;
+  ALLOC(lf) = allocsimple;
+  PPROC(lf) = NULL;
+  KEEPV(lf) = 1;
+  KEEPC(lf) = 1;
+  NOPC(lf)  = 1;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+/* 3d+8 variables to keep:
+ * d+1 coef+derivs.
+ * d+1 sd's + derivs.
+ * d+1 infl + derivs.
+ *   3 likelihood and d.f's.
+ *   1 bandwidth h
+ *   1 degree.
+ */
+
+void allocstd(lf)
+lfit *lf;
+{ int d;
+  d = NVAR(lf);
+  lf->fp.coef = VVEC(lf,0);
+  lf->fp.nlx  = VVEC(lf,d+1);
+  lf->fp.t0   = VVEC(lf,2*d+2);
+  lf->fp.lik  = VVEC(lf,3*d+3);
+  lf->fp.h    = VVEC(lf,3*d+6);
+  lf->fp.deg  = VVEC(lf,3*d+7);
+}
+
+int procvstd(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int d, p, nvm, i, k;
+  double t0[1+MXDIM], vari[1+MXDIM];
+  k = procv_var(des,lf,v);
+  if (lf_error) return(k);
+   
+  d = lf->lfd.d;
+  p = npar(&lf->sp);
+  nvm = lf->fp.nvm;
+
+  if (k != LF_OK) lf_status_msg(k);
+
+  lf->fp.lik[v] = des->llk;
+  lf->fp.lik[nvm+v] = des->tr2;
+  lf->fp.lik[2*nvm+v] = des->tr0 - des->tr2;
+
+  for (i=0; i<des->ncoef; i++)
+    vari[i] = des->V[p*cfn(des,0) + cfn(des,i)];
+  vari[0] = sqrt(vari[0]);
+  if (vari[0]>0) for (i=1; i<des->ncoef; i++) vari[i] /= vari[0];
+
+  t0[0] = sqrt(des->f1[0]);
+  if (t0[0]>0) for (i=1; i<des->ncoef; i++) t0[i] = des->f1[i]/t0[0];
+
+  if (dc(&lf->fp)) dercor(&lf->lfd,&lf->sp,des,des->cf);
+  subparcomp(des,lf,des->cf);
+  for (i=0; i<des->ncoef; i++)
+    lf->fp.coef[i*lf->fp.nvm+v] =  des->cf[cfn(des,i)];
+
+  subparcomp2(des,lf,vari,t0);
+  for (i=0; i<des->ncoef; i++)
+  { lf->fp.nlx[i*nvm+v] = vari[i];
+    lf->fp.t0[i*nvm+v]  = t0[i];
+  }
+
+  lf->fp.deg[v] = deg(&lf->sp);
+  return(k);
+}
+
+void pprocstd(lf,des,res)
+lfit *lf;
+design *des;
+double *res;
+{
+  ressumm(lf,des,res);
+}
+
+void initstd(lf)
+lfit *lf;
+{ PROCV(lf) = procvstd;
+  ALLOC(lf) = allocstd;
+  PPROC(lf) = pprocstd;
+  KEEPV(lf) = 3*NVAR(lf) + 8;
+  KEEPC(lf) = 6;
+  NOPC(lf)  = 0;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+extern void procstd(), allocstd();
+extern double robscale;
+
+double vocri(lk,t0,t2,pen)
+double lk, t0, t2, pen;
+{ if (pen==0) return(-2*t0*lk/((t0-t2)*(t0-t2)));
+  return((-2*lk+pen*t2)/t0);
+}
+
+double intvo(des,lf,c0,c1,a,p,t0,t20,t21)
+design *des;
+lfit *lf;
+double *c0, *c1, a, t0, t20, t21;
+int p;
+{ double th, lk, link[LLEN];
+  int i, ii;
+  lk = 0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    th = (1-a)*innerprod(c0,d_xi(des,i),p) + a*innerprod(c1,d_xi(des,i),p);
+    stdlinks(link,&lf->lfd,&lf->sp,ii,th,robscale);
+    lk += wght(des,ii)*link[ZLIK];
+  }
+  des->llk = lk;
+  return(vocri(des->llk,t0,(1-a)*t20+a*t21,pen(&lf->sp)));
+}
+
+int procvvord(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ double tr[6], gcv, g0, ap, coef[4][10], t2[4], th, md;
+  int i, j, k, d1, i0, p1, ip;
+  des->xev = evpt(&lf->fp,v);
+
+  ap = pen(&lf->sp);
+  if ((ap==0) & ((fam(&lf->sp)&63)!=TGAUS)) ap = 2.0;
+  d1 = deg(&lf->sp); p1 = npar(&lf->sp);
+  for (i=0; i<p1; i++) coef[0][i] = coef[1][i] = coef[2][i] = coef[3][i] = 0.0;
+  i0 = 0; g0 = 0;
+  ip = 1;
+
+  for (i=deg0(&lf->sp); i<=d1; i++)
+  { deg(&lf->sp) = i;
+    des->p = npar(&lf->sp) = calcp(&lf->sp,lf->lfd.d);
+    k = locfit(&lf->lfd,des,&lf->sp,0, i==deg0(&lf->sp),0);
+
+    local_df(&lf->lfd,&lf->sp,des,tr);
+    gcv = vocri(des->llk,tr[0],tr[2],ap);
+    if ((i==deg0(&lf->sp)) || (gcv<g0)) { i0 = i; g0 = gcv; md = i; }
+
+    for (j=0; j<des->p; j++) coef[i][j] = des->cf[j];
+    t2[i] = tr[2];
+
+#ifdef RESEARCH
+    if ((ip) && (i>deg0(&lf->sp)))
+    { for (j=1; j<10; j++)
+      { gcv = intvo(des,lf,coef[i-1],coef[i],j/10.0,des->p,tr[0],t2[i-1],t2[i]);
+        if (gcv<g0) { g0 = gcv; md = i-1+j/10.0; }
+      }
+    }
+#endif
+  }
+  lf->fp.h[v] = des->h;
+  if (lf->fp.h[v]<=0) WARN(("zero bandwidth in procvvord"));
+
+  if (i0<d1) /* recompute the best fit */
+  { deg(&lf->sp) = i0;
+    des->p = npar(&lf->sp) = calcp(&lf->sp,lf->lfd.d);
+    k = locfit(&lf->lfd,des,&lf->sp,0,0,0);
+    for (i=npar(&lf->sp); i<p1; i++) des->cf[i] = 0.0;
+    i0 = md; if (i0==d1) i0--;
+    th = md-i0;
+    for (i=0; i<p1; i++) des->cf[i] = (1-th)*coef[i0][i]+th*coef[i0+1][i];
+    deg(&lf->sp) = d1; npar(&lf->sp) = p1;
+  }
+
+  for (i=0; i<p1; i++) lf->fp.coef[i*lf->fp.nvm+v] = des->cf[i];
+  lf->fp.deg[v] = md;
+  return(k);
+}
+
+void initvord(lf)
+lfit *lf;
+{ initstd(lf);
+  PROCV(lf) = procvvord;
+  ALLOC(lf) = allocstd;
+  PPROC(lf) = NULL;
+  KEEPC(lf) = 0;
+  NOPC(lf)  = 1;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * functions for computing and subtracting, adding the
+ * parametric component
+ */
+
+#include "lfev.h"
+
+int noparcomp(sp)
+smpar *sp;
+{ int tg;
+  if (ubas(sp)) return(1);
+  tg = fam(sp) & 63;
+  if (tg<=THAZ) return(1);
+  if (tg==TROBT) return(1);
+  if (tg==TCAUC) return(1);
+  if (tg==TQUANT) return(1);
+  return(0);
+}
+
+int pc_reqd(d,p)
+int d, p;
+{ return(d + 2*p + jac_reqd(p));
+}
+
+void pcchk(pc,d,p,lc)
+paramcomp *pc;
+int d, p, lc;
+{ int rw;
+  double *z;
+
+  rw = pc_reqd(d,p);
+  if (pc->lwk < rw)
+  { pc->wk = (double *)calloc(rw,sizeof(double));
+    if ( pc->wk == NULL ) {
+      printf("Problem allocating memory for pc->wk\n");fflush(stdout);
+    }
+    pc->lwk= rw;
+  }
+  z = pc->wk;
+
+  pc->xbar = z; z += d;
+  pc->coef = z; z += p;
+  pc->f    = z; z += p;
+
+  z = jac_alloc(&pc->xtwx,p,z);
+  pc->xtwx.p = p;
+}
+
+void compparcomp(des,lfd,sp,pc,nopc)
+design *des;
+lfdata *lfd;
+smpar *sp;
+paramcomp *pc;
+int nopc;
+{ int i, j, k, p;
+  double wt, sw;
+
+  if (lf_debug>1) mut_printf(" compparcomp:\n");
+  p = des->p;
+  pcchk(pc,lfd->d,p,1);
+
+  for (i=0; i<lfd->d; i++) pc->xbar[i] = 0.0;
+  sw = 0.0;
+  for (i=0; i<lfd->n; i++)
+  { 
+    wt = prwt(lfd,i);
+    sw += wt;
+    for (j=0; j<lfd->d; j++)
+      pc->xbar[j] += datum(lfd,j,i)*wt;
+    des->ind[i] = i;
+    wght(des,i) = 1.0;
+  }
+  for (i=0; i<lfd->d; i++) pc->xbar[i] /= sw;
+  if ((nopc) || noparcomp(sp))
+  { haspc(pc) = 0;
+    return;
+  }
+  haspc(pc) = 1;
+  des->xev = pc->xbar;
+  k = locfit(lfd,des,sp,0,0,0);
+  if (k != LF_OK) lf_status_msg(k);
+  if (lf_error) return;
+  switch(k)
+  { case LF_NOPT: return;
+    case LF_INFA: return;
+    case LF_NCON: return;
+    case LF_OOB: return;
+    case LF_NSLN: return;
+    case LF_PF:
+      WARN(("compparcomp: perfect fit"));
+    case LF_OK:
+    case LF_DONE:
+      for (i=0; i<p; i++)
+      { pc->coef[i] = des->cf[i];
+        pc->xtwx.dg[i] = des->xtwx.dg[i];
+        pc->xtwx.wk[i] = des->xtwx.wk[i];
+      }
+      for (i=0; i<p*p; i++)
+      { pc->xtwx.Z[i] = des->xtwx.Z[i];
+        pc->xtwx.Q[i] = des->xtwx.Q[i];
+      }
+      pc->xtwx.sm = des->xtwx.sm;
+      pc->xtwx.st = des->xtwx.st;
+      return;
+    default:
+      LERR(("compparcomp: locfit unknown return status %d",k));
+      return;
+  }
+}
+
+void subparcomp(des,lf,coef)
+design *des;
+lfit *lf;
+double *coef;
+{ int i, nd;
+  deriv *dv;
+  paramcomp *pc;
+
+  pc = &lf->pc;
+  if (!haspc(pc)) return;
+
+  dv = &lf->dv; nd = dv->nd;
+  fitfun(&lf->lfd, &lf->sp, des->xev,pc->xbar,des->f1,dv);
+  coef[0] -= innerprod(pc->coef,des->f1,pc->xtwx.p);
+  if (des->ncoef == 1) return;
+
+  dv->nd = nd+1;
+  for (i=0; i<lf->lfd.d; i++)
+  { dv->deriv[nd] = i;
+    fitfun(&lf->lfd, &lf->sp, des->xev,pc->xbar,des->f1,dv);
+    coef[i+1] -= innerprod(pc->coef,des->f1,pc->xtwx.p);
+  }
+  dv->nd = nd;
+}
+
+void subparcomp2(des,lf,vr,il)
+design *des;
+lfit *lf;
+double *vr, *il;
+{ double t0, t1;
+  int i, nd;
+  deriv *dv;
+  paramcomp *pc;
+
+  pc = &lf->pc;
+  if (!haspc(pc)) return;
+
+  dv = &lf->dv; nd = dv->nd;
+
+  fitfun(&lf->lfd, &lf->sp, des->xev,pc->xbar,des->f1,dv);
+  for (i=0; i<npar(&lf->sp); i++) pc->f[i] = des->f1[i];
+  jacob_solve(&pc->xtwx,des->f1);
+  t0 = sqrt(innerprod(pc->f,des->f1,pc->xtwx.p));
+  vr[0] -= t0;
+  il[0] -= t0;
+  if ((t0==0) | (des->ncoef==1)) return;
+
+  dv->nd = nd+1;
+  for (i=0; i<lf->lfd.d; i++)
+  { dv->deriv[nd] = i;
+    fitfun(&lf->lfd, &lf->sp, des->xev,pc->xbar,pc->f,dv);
+    t1 = innerprod(pc->f,des->f1,pc->xtwx.p)/t0;
+    vr[i+1] -= t1;
+    il[i+1] -= t1;
+  }
+  dv->nd = nd;
+}
+
+double addparcomp(lf,x,c)
+lfit *lf;
+double *x;
+int c;
+{ double y;
+  paramcomp *pc;
+
+  pc = &lf->pc;
+  if (!haspc(pc)) return(0.0);
+  fitfun(&lf->lfd, &lf->sp, x,pc->xbar,pc->f,&lf->dv);
+  if (c==PCOEF) return(innerprod(pc->coef,pc->f,pc->xtwx.p));
+  if ((c==PNLX)|(c==PT0)|(c==PVARI))
+  { y = sqrt(jacob_qf(&pc->xtwx,pc->f));
+    return(y);
+  }
+  return(0.0);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+/*
+  preplot():  interpolates the fit to a new set of points.
+  lf  -- the fit structure.
+  x   -- the points to predict at.
+  f   -- vector to return the predictions.
+  se  -- vector to return std errors (NULL if not req'd)
+  band-- char for conf band type. ('n'=none, 'g'=global etc.)
+  n   -- no of predictions (or vector of margin lengths for grid)
+  where -- where to predict:
+           1 = points in the array x.
+           2 = grid defined by margins in x.
+           3 = data points from lf (ignore x).
+           4 = fit points from lf (ignore x).
+  what -- what to predict.
+           (PCOEF etc; see lfcons.h file)
+
+*/
+
+#define NWH 8
+static char *whtyp[NWH] = { "coef", "nlx", "infl", "band",
+                          "degr", "like", "rdf", "vari" };
+static int   whval[NWH] = { PCOEF, PNLX, PT0, PBAND, PDEGR, PLIK, PRDF, PVARI };
+int ppwhat(z)
+char *z;
+{ int val;
+
+  val = pmatch(z, whtyp, whval, NWH, -1);
+  if (val==-1) LERR(("Unknown what = %s",z));
+  return(val);
+}
+
+static char cb;
+double *sef, *fit, sigmahat;
+
+void predptall(lf,x,what,ev,i)
+lfit *lf;
+double *x;
+int what, ev, i;
+{ double lik, rdf;
+  fit[i] = dointpoint(lf,x,what,ev,i);
+  if (cb=='n') return;
+  sef[i] = dointpoint(lf,x,PNLX,ev,i);
+  if (cb=='g')
+  { sef[i] *= sigmahat;
+    return;
+  }
+  if (cb=='l')
+  { lik = dointpoint(lf,x,PLIK,ev,i);
+    rdf = dointpoint(lf,x,PRDF,ev,i);
+    sef[i] *= sqrt(-2*lik/rdf);
+    return;
+  }
+  if (cb=='p')
+  { sef[i] = sigmahat*sqrt(1+sef[i]*sef[i]);
+    return;
+  }
+}
+
+void predptdir(lf,des,x,what,i)
+lfit *lf;
+design *des;
+double *x;
+int what, i;
+{ int needcv;
+  des->xev = x;
+  needcv = (what==PVARI) | (what==PNLX) | (what==PT0) | (what==PRDF);
+  locfit(&lf->lfd,des,&lf->sp,0,1,needcv);
+  switch(what)
+  { case PCOEF: fit[i] = des->cf[0]; break;
+    case PVARI: fit[i] = des->V[0]; break;
+    case PNLX:  fit[i] = sqrt(des->V[0]); break;
+    case PT0:   fit[i] = des->f1[0]; break;
+    case PBAND: fit[i] = des->h; break;
+    case PDEGR: fit[i] = deg(&lf->sp); break;
+    case PLIK:  fit[i] = des->llk; break;
+    case PRDF:  fit[i] = des->tr0 - des->tr2; break;
+    default: LERR(("unknown what in predptdir"));
+  }
+}
+
+void prepvector(lf,des,x,n,what,dir) /* interpolate a vector */
+lfit *lf;
+design *des;
+double **x;
+int n, what, dir;
+{ int i, j;
+  double xx[MXDIM];
+  for (i=0; i<n; i++)
+  { for (j=0; j<lf->fp.d; j++) xx[j] = x[j][i];
+    if (dir)
+      predptdir(lf,des,xx,what,i);
+    else
+      predptall(lf,xx,what,ev(&lf->evs),i);
+    if (lf_error) return;
+  }
+}
+
+void prepfitp(lf,what)
+lfit *lf;
+int what;
+{ int  i;
+  for (i=0; i<lf->fp.nv; i++)
+  { predptall(lf,evpt(&lf->fp,i),what,EFITP,i);
+    if (lf_error) return;
+  }
+}
+
+void prepgrid(lf,des,x,mg,n,what,dir) /* interpolate a grid given margins */
+lfit *lf;
+design *des;
+double **x;
+int *mg, dir, n, what;
+{ int i, ii, j, d;
+  double xv[MXDIM];
+  d = lf->fp.d;
+  for (i=0; i<n; i++)
+  { ii = i;
+    for (j=0; j<d; j++)
+    { xv[j] = x[j][ii%mg[j]];
+      ii /= mg[j];
+    }
+    if (dir)
+      predptdir(lf,des,xv,what,i);
+    else
+      predptall(lf,xv,what,ev(&lf->evs),i);
+    if (lf_error) return;
+  }
+}
+
+void preplot(lf,x,f,se,band,mg,where,what,dir)
+lfit *lf;
+double **x, *f, *se;
+int *mg, where, what, dir;
+char band;
+{ int d, i, n;
+  double *xx[MXDIM];
+  design ppdes;
+  d = lf->fp.d;
+  fit = f;
+  sef = se;
+  cb = band;
+  if (cb!='n') sigmahat = sqrt(rv(&lf->fp));
+  if (dir) des_init(&ppdes,lf->lfd.n,npar(&lf->sp));
+
+  switch(where)
+  { case 1: /* vector */
+      n = mg[0];
+      prepvector(lf,&ppdes,x,n,what,dir);
+      break;
+    case 2: /* grid */
+      n = 1;
+      for (i=0; i<d; i++) n *= mg[i];
+      prepgrid(lf,&ppdes,x,mg,n,what,dir);
+      break;
+    case 3: /* data */
+      n = lf->lfd.n;
+      if ((ev(&lf->evs)==EDATA) | (ev(&lf->evs)==ECROS))
+      { prepfitp(lf,what);
+        dir = 0;
+      }
+      else
+      { for (i=0; i<d; i++) xx[i] = dvari(&lf->lfd,i);
+        prepvector(lf,&ppdes,xx,n,what,dir);
+      }
+      break;
+    case 4: /* fit points */
+      n = lf->fp.nv; dir = 0;
+      prepfitp(lf,what);
+      break;
+    default:
+      LERR(("unknown where in preplot"));
+  }
+
+  if ((!dir) && ((what==PT0)|(what==PVARI)))
+    for (i=0; i<n; i++) f[i] = f[i]*f[i];
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "lfev.h"
+
+int procv_nov(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int lf_status;
+
+  if (lf_debug>1) mut_printf(" procveraw: %d\n",v);
+  des->xev = evpt(&lf->fp,v);
+
+  if (acri(&lf->sp)==ANONE)
+    lf_status = locfit(&lf->lfd,des,&lf->sp,0,1,0);
+  else
+    lf_status = alocfit(&lf->lfd,&lf->sp,&lf->dv,des,0);
+  if (lf->fp.h != NULL) lf->fp.h[v] = des->h;
+
+  return(lf_status);
+}
+
+int procv_var(des,lf,v)
+design *des;
+lfit *lf;
+int v;
+{ int i, lf_status;
+
+  if (lf_debug>1) mut_printf(" procvraw: %d\n",v);
+  des->xev = evpt(&lf->fp,v);
+
+  if (acri(&lf->sp)==ANONE)
+    lf_status = locfit(&lf->lfd,des,&lf->sp,0,1,1);
+  else
+    lf_status = alocfit(&lf->lfd,&lf->sp,&lf->dv,des,1);
+  if (lf->fp.h != NULL) lf->fp.h[v] = des->h;
+
+  return(lf_status);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * startmodule(lf,des,mod,dir) -- the standard entry point.
+ *   des and lf are pointers to the design and fit structures.
+ *   mod - module name. Set to NULL if the module is already
+ *         initialized.
+ *   dir - for dynamic modules, the directory.
+ *
+ * initmodule(mdl,mod,dir,lf)
+ *   direct call for module initialization.
+ *
+ */
+
+#include "lfev.h"
+
+#ifdef WINDOWS
+
+#define DIRSEP '\\'
+#define PATHSEP ';'
+
+#else
+
+#define DIRSEP '/'
+#define PATHSEP ':'
+
+#endif
+
+
+#ifdef ALLOW_MODULES
+
+#ifdef WINDOWS
+#include <windows.h>
+#define DLEXT "dll"
+#define DLOPEN(x) LoadLibrary(x)
+#define DLSYM GetProcAddress
+
+#else
+
+#include <dlfcn.h>
+#define DLEXT "so"
+#define DLOPEN(x) dlopen(x,RTLD_LAZY)
+#define DLSYM dlsym
+#endif
+
+#endif
+
+static double fpkap[6];
+void fitpt_init(fp)
+fitpt *fp;
+{ 
+  dc(fp) = 0;
+  geth(fp) = GSTD;
+  fp->nv = fp->nvm = 0;
+  if (fp->kap==NULL) fp->kap = fpkap;
+}
+
+void lfit_init(lf)
+lfit *lf;
+{
+  lfdata_init(&lf->lfd);
+  evstruc_init(&lf->evs);
+  smpar_init(&lf->sp,&lf->lfd);
+  deriv_init(&lf->dv);
+  fitpt_init(&lf->fp);
+  lf->mdl.np = 0;
+}
+
+void fitdefault(lf)
+lfit *lf;
+{ WARN(("fitdefault deprecated -- use lfit_init()"));
+  lfit_init(lf);
+}
+
+void set_flim(lfd,evs)
+lfdata *lfd;
+evstruc *evs;
+{ int i, j, d, n;
+  double z, mx, mn, *bx;
+
+  if (ev(evs)==ESPHR) return;
+  d = lfd->d; n = lfd->n;
+  bx = evs->fl;
+  for (i=0; i<d; i++)
+    if (bx[i]==bx[i+d])
+    { if (lfd->sty[i]==STANGL)
+      { bx[i] = 0.0; bx[i+d] = 2*PI*lfd->sca[i];
+      }
+      else
+      { mx = mn = datum(lfd,i,0);
+        for (j=1; j<n; j++)
+        { mx = MAX(mx,datum(lfd,i,j));
+          mn = MIN(mn,datum(lfd,i,j));
+        }
+        if (lfd->xl[i]<lfd->xl[i+d]) /* user set xlim; maybe use them. */
+        { z = mx-mn;
+          if (mn-0.2*z < lfd->xl[i]) mn = lfd->xl[i];
+          if (mx+0.2*z > lfd->xl[i+d]) mx = lfd->xl[i+d];
+        }
+        bx[i] = mn;
+        bx[i+d] = mx;
+      }
+    }
+}
+
+double vvari(v,n)
+double *v;
+int n;
+{ int i;
+  double xb, s2;
+  xb = s2 = 0.0;
+  for (i=0; i<n; i++) xb += v[i];
+  xb /= n;
+  for (i=0; i<n; i++) s2 += SQR(v[i]-xb);
+  return(s2/(n-1));
+}
+
+void set_scales(lfd)
+lfdata *lfd;
+{ int i;
+  for (i=0; i<lfd->d; i++)
+    if (lfd->sca[i]<=0) /* set automatic scales */
+    { if (lfd->sty[i]==STANGL)
+        lfd->sca[i] = 1.0;
+      else lfd->sca[i] = sqrt(vvari(lfd->x[i],lfd->n));
+    }
+}
+
+void nstartlf(des,lf)
+design *des;
+lfit *lf;
+{ int i, d, n;
+
+  if (lf_debug>0) mut_printf("nstartlf\n");
+  n = lf->lfd.n;
+  d = lf->lfd.d;
+  npar(&lf->sp) = calcp(&lf->sp,d);
+
+  des_init(des,n,npar(&lf->sp));
+  set_scales(&lf->lfd);
+  set_flim(&lf->lfd,&lf->evs);
+  compparcomp(des,&lf->lfd,&lf->sp,&lf->pc,lf->mdl.nopc);
+  if (lf_error) return;
+  makecfn(&lf->sp,des,&lf->dv,lf->lfd.d);
+
+  lf->lfd.ord = 0;
+  if ((d==1) && (lf->lfd.sty[0]!=STANGL))
+  { i = 1;
+    while ((i<n) && (datum(&lf->lfd,0,i)>=datum(&lf->lfd,0,i-1))) i++;
+    lf->lfd.ord = (i==n);
+  }
+  for (i=0; i<npar(&lf->sp); i++) des->fix[i] = 0;
+
+  lf->fp.d = lf->lfd.d;
+  lf->fp.hasd = (des->ncoef==(1+lf->fp.d));
+  lf->fp.nv = lf->evs.nce = 0;
+
+  if (lf_debug>1) mut_printf("call eval structure %d\n",ev(&lf->evs));
+  switch(ev(&lf->evs))
+  { case EPHULL: triang_start(des,lf); break;
+    case EDATA:  dataf(des,lf); break;
+    case ECROS:  crossf(des,lf); break;
+    case EGRID:  gridf(des,lf); break;
+    case ETREE:  atree_start(des,lf); break;
+    case EKDCE:  kt(&lf->sp) = KCE;
+    case EKDTR:  kdtre_start(des,lf); break;
+    case EPRES:  preset(des,lf); break;
+    case EXBAR:  xbarf(des,lf); break;
+    case ENONE:  return;
+    case ESPHR:  sphere_start(des,lf); break;
+    case ESPEC:  lf->evs.espec(des,lf); break;
+    default: LERR(("startlf: Invalid evaluation structure %d",ev(&lf->evs)));
+  }
+
+  /* renormalize for family=density */
+  if ((de_renorm) && (fam(&lf->sp)==TDEN)) dens_renorm(lf,des);
+}
+
+/*
+ * getnextdir() gets the next dir from a string dirpath="dir1:dir2:dir3:..."
+ *   (;-separated on windows).
+ *   The directory is returned through dirnext, and the function returns
+ *   a pointer to the next string.
+ *   typical usage is recursive, dirpath = getnextdir(dirpath,dirnext).
+ *   with the above example, this sets dirnext="dir1" and dirpath="dir2:dir3:...".
+ * if the input dirpath has no :, then it is copied to dirnext, and return is "".
+ * if input dirpath is "", dirnext is set to "", and null pointer returned.
+ */
+char *getnextdir(dirpath,dirnext)
+char *dirpath, *dirnext;
+{ char *z;
+  if (strlen(dirpath)==0)
+  { sprintf(dirnext,"");
+    return(NULL);
+  }
+
+  z = strchr(dirpath,PATHSEP);
+  if (z==NULL)
+  { sprintf(dirnext,"%s%c",dirpath,DIRSEP);
+    return(&dirpath[strlen(dirnext)]);
+  }
+
+  *z = '\0';
+  sprintf(dirnext,"%s%c",dirpath,DIRSEP);
+  return(++z);
+}
+
+int initmodule(mdl, mod, dir, lf)
+module *mdl;
+lfit *lf;
+char *mod, *dir;
+{ int n, d, p;
+#ifdef ALLOW_MODULES
+#ifdef WINDOWS
+HINSTANCE res;
+typedef void (CALLBACK* DLLFN)();
+DLLFN init;
+#else
+void *res;
+void (*init)();
+#endif
+  char distname[500];
+#endif
+
+  n = lf->lfd.n;
+  d = lf->lfd.d;
+  p = npar(&lf->sp) = calcp(&lf->sp,d);
+
+  mdl->isset = 1;
+  PPROC(lf) = NULL;
+  if (strcmp(mod,"std")==0)    { initstd(lf); return(1); }
+  if (strcmp(mod,"simple")==0) { initsimple(lf); return(1); }
+  if (strcmp(mod,"allcf")==0)  { initallcf(lf); return(1); }
+  if (strcmp(mod,"hatm")==0)   { inithatm(lf); return(1); }
+  if (strcmp(mod,"kappa")==0)  { initkappa(lf); return(1); }
+  if (strcmp(mod,"lscv")==0)   { initlscv(lf); return(1); }
+  if (strcmp(mod,"gamf")==0)   { initgam(lf); return(1); }
+  if (strcmp(mod,"gamp")==0)   { initgam(lf); return(1); }
+  if (strcmp(mod,"rband")==0)  { initrband(lf); return(1); }
+  if (strcmp(mod,"scb")==0)    { initscb(lf); return(1); }
+  if (strcmp(mod,"vord")==0)   { initvord(lf); return(1); }
+
+#ifdef ALLOW_MODULES
+  while (dir != NULL)
+  {
+    dir = getnextdir(dir,distname);
+    sprintf(&distname[strlen(distname)],"mod%s.%s",mod,DLEXT);
+    res = DLOPEN(distname);
+    if (res==NULL)
+    {
+#ifdef WINDOWS
+      mut_printf("LoadLibrary failed: %s, %d\n",distname,GetLastError());
+#else
+      mut_printf("dlopen failed: %s\n",dlerror());
+#endif
+    }
+    else
+    {
+#ifdef WINDOWS
+      mut_printf("LoadLibrary success: %s\n",distname);
+#else
+      mut_printf("dlopen success: %s\n",distname);
+#endif
+      sprintf(distname,"init%s",mod);
+      init = (void *)DLSYM(res,distname);
+      if (init==NULL)
+      { mut_printf("I can't find %s() function.\n",distname);
+        mdl->isset = 0;
+        return(0);
+      }
+      init(lf);
+      return(1);
+    }
+  }
+#endif
+
+  mdl->isset = 0;
+  return(0);
+}
+
+/*
+ * startmodule is the entry point to launch the fit.
+ * if mod is provided, will first initialize the module.
+ * if mod==NULL, assumes the module has been initialized separately.
+ */
+void startmodule(lf,des,mod,dir)
+lfit *lf;
+design *des;
+char *mod, *dir;
+{ int z;
+
+  if (mod != NULL)
+  { z = initmodule(&lf->mdl,mod,dir,lf);
+    if (!z) return;
+  }
+
+  lf->fp.nv = lf->evs.nce = 0;
+  if (lf_error) return;
+  if (PROCV(lf) != NULL) nstartlf(des,lf);
+  if (lf_error) return;
+  if (PPROC(lf) != NULL) PPROC(lf)(lf,des,lf->fp.kap);
+}
+
+/* for compatability, more or less. */
+void startlf(des,lf,vfun,nopc)
+design *des;
+lfit *lf;
+int (*vfun)(), nopc;
+{ int z;
+  z = initmodule(&lf->mdl,"std",NULL,lf);
+  if (!z) return;
+  lf->mdl.procv = vfun;
+  lf->mdl.nopc = nopc;
+  nstartlf(des,lf);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/liblocf.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,4940 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+
+#include "mex.h"
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Integration for hazard rate estimation. The functions in this
+ *   file are used to evaluate
+ *      sum int_0^{Ti} W_i(t,x) A()A()' exp( P() ) dt
+ *   for hazard rate models.
+ *
+ *   These routines assume the weight function is supported on [-1,1].
+ *   hasint_sph multiplies by exp(base(lf,i)), which allows estimating
+ *   the baseline in a proportional hazards model, when the covariate
+ *   effect base(lf,i) is known.
+ *
+ *   TODO:
+ *     hazint_sph, should be able to reduce mint in some cases with
+ *       small integration range. onedint could be used for beta-family
+ *       (RECT,EPAN,BISQ,TRWT) kernels.
+ *     hazint_prod, restrict terms from the sum based on x values.
+ *       I should count obs >= max, and only do that integration once.
+ */
+
+#include "locf.h"
+
+static double ilim[2*MXDIM], *ff, tmax;
+static lfdata *haz_lfd;
+static smpar  *haz_sp;
+
+/*
+ *  hrao returns 0 if integration region is empty.
+ *               1 otherwise.
+ */
+int haz_sph_int(dfx,cf,h,r1)
+double *dfx, *cf, h, *r1;
+{ double s, t0, t1, wt, th;
+  int j, dim, p;
+  s = 0; p = npar(haz_sp);
+  dim = haz_lfd->d;
+  for (j=1; j<dim; j++) s += SQR(dfx[j]/(h*haz_lfd->sca[j]));
+  if (s>1) return(0);
+
+  setzero(r1,p*p);
+  t1 = sqrt(1-s)*h*haz_lfd->sca[0];
+  t0 = -t1;
+  if (t0<ilim[0])   t0 = ilim[0];
+  if (t1>ilim[dim]) t1 = ilim[dim];
+  if (t1>dfx[0]) t1 = dfx[0];
+  if (t1<t0) return(0);
+
+/*  Numerical integration by Simpson's rule.
+ */
+  for (j=0; j<=de_mint; j++)
+  { dfx[0] = t0+(t1-t0)*j/de_mint;
+    wt = weight(haz_lfd, haz_sp, dfx, NULL, h, 0, 0.0);
+    fitfun(haz_lfd, haz_sp, dfx,NULL,ff,NULL);
+    th = innerprod(cf,ff,p);
+    if (link(haz_sp)==LLOG) th = exp(th);
+    wt *= 2+2*(j&1)-(j==0)-(j==de_mint);
+    addouter(r1,ff,ff,p,wt*th);
+  }
+  multmatscal(r1,(t1-t0)/(3*de_mint),p*p);
+
+  return(1);
+}
+
+int hazint_sph(t,resp,r1,cf,h)
+double *t, *resp, *r1, *cf, h;
+{ int i, j, n, p, st;
+  double dfx[MXDIM], eb, sb;
+  p = npar(haz_sp);
+  setzero(resp,p*p);
+  sb = 0.0;
+
+  n = haz_lfd->n;
+  for (i=0; i<=n; i++)
+  {
+    if (i==n)
+    { dfx[0] = tmax-t[0];
+      for (j=1; j<haz_lfd->d; j++) dfx[j] = 0.0;
+      eb = exp(sb/n);
+    }
+    else
+    { eb = exp(base(haz_lfd,i)); sb += base(haz_lfd,i);
+      for (j=0; j<haz_lfd->d; j++) dfx[j] = datum(haz_lfd,j,i)-t[j];
+    }
+
+    st = haz_sph_int(dfx,cf,h,r1);
+    if (st)
+      for (j=0; j<p*p; j++) resp[j] += eb*r1[j];
+  }
+  return(LF_OK);
+}
+
+int hazint_prod(t,resp,x,cf,h)
+double *t, *resp, *x, *cf, h;
+{ int d, p, i, j, k, st;
+  double dfx[MXDIM], t_prev,
+         hj, hs, ncf[MXDEG], ef, il1;
+  double prod_wk[MXDIM][2*MXDEG+1], eb, sb;
+
+  p = npar(haz_sp);
+  d = haz_lfd->d;
+  setzero(resp,p*p);
+  hj = hs = h*haz_lfd->sca[0];
+
+  ncf[0] = cf[0];
+  for (i=1; i<=deg(haz_sp); i++)
+  { ncf[i] = hj*cf[(i-1)*d+1]; hj *= hs;
+  }
+
+/*   for i=0..n....
+ *     First we compute prod_wk[j], j=0..d.
+ *     For j=0, this is int_0^T_i (u-t)^k W((u-t)/h) exp(b0*(u-t)) du
+ *     For remaining j,   (x(i,j)-x(j))^k Wj exp(bj*(x..-x.))
+ *
+ *     Second, we add to the integration (exp(a) incl. in integral)
+ *     with the right factorial denominators.
+ */
+  t_prev = ilim[0]; sb = 0.0;
+  for (i=0; i<=haz_lfd->n; i++)
+  { if (i==haz_lfd->n)
+    { dfx[0] = tmax-t[0];
+      for (j=1; j<d; j++) dfx[j] = 0.0;
+      eb = exp(sb/haz_lfd->n);
+    }
+    else
+    { eb = exp(base(haz_lfd,i)); sb += base(haz_lfd,i);
+      for (j=0; j<d; j++) dfx[j] = datum(haz_lfd,j,i)-t[j];
+    }
+
+    if (dfx[0]>ilim[0]) /* else it doesn't contribute */
+    {
+/* time integral */
+      il1 = (dfx[0]>ilim[d]) ? ilim[d] : dfx[0];
+      if (il1 != t_prev) /* don't repeat! */
+      { st = onedint(haz_sp,ncf,ilim[0]/hs,il1/hs,prod_wk[0]);
+        if (st>0) return(st);
+        hj = eb;
+        for (j=0; j<=2*deg(haz_sp); j++)
+        { hj *= hs;
+          prod_wk[0][j] *= hj;
+        }
+        t_prev = il1;
+      }
+
+/* covariate terms */
+      for (j=1; j<d; j++)
+      {
+        ef = 0.0;
+        for (k=deg(haz_sp); k>0; k--) ef = (ef+dfx[j])*cf[1+(k-1)*d+j];
+        ef = exp(ef);
+        prod_wk[j][0] = ef * W(dfx[j]/(h*haz_lfd->sca[j]),ker(haz_sp));
+        for (k=1; k<=2*deg(haz_sp); k++)
+          prod_wk[j][k] = prod_wk[j][k-1] * dfx[j];
+      }
+
+/*  add to the integration.  */
+      prodintresp(resp,prod_wk,d,deg(haz_sp),p);
+    } /* if dfx0 > ilim0 */
+  } /* n loop */
+
+/* symmetrize */
+  for (k=0; k<p; k++)
+    for (j=k; j<p; j++)
+      resp[j*p+k] = resp[k*p+j];
+  return(LF_OK);
+}
+
+int hazint(t,resp,resp1,cf,h)
+double *t, *resp, *resp1, *cf, h;
+{ if (haz_lfd->d==1) return(hazint_prod(t,resp,resp1,cf,h));
+  if (kt(haz_sp)==KPROD) return(hazint_prod(t,resp,resp1,cf,h));
+
+  return(hazint_sph(t,resp,resp1,cf,h));
+}
+
+void haz_init(lfd,des,sp,il)
+lfdata *lfd;
+design *des;
+smpar *sp;
+double *il;
+{ int i;
+  
+  haz_lfd = lfd;
+  haz_sp  = sp;
+
+  tmax = datum(lfd,0,0);
+  for (i=1; i<lfd->n; i++) tmax = MAX(tmax,datum(lfd,0,i));
+  ff = des->xtwx.wk;
+  for (i=0; i<2*lfd->d; i++) ilim[i] = il[i];
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *  Routines for one-dimensional numerical integration
+ *  in density estimation. The entry point is
+ *
+ *  onedint(cf,mi,l0,l1,resp)
+ *
+ *  which evaluates int W(u)u^j exp( P(u) ), j=0..2*deg.
+ *  P(u) = cf[0] + cf[1]u + cf[2]u^2/2 + ... + cf[deg]u^deg/deg!
+ *  l0 and l1 are the integration limits.
+ *  The results are returned through the vector resp.
+ *
+ */
+
+#include "locf.h"
+
+static int debug;
+
+int exbctay(b,c,n,z) /* n-term taylor series of e^(bx+cx^2) */
+double b, c, *z;
+int n;
+{ double ec[20];
+  int i, j;
+  z[0] = 1;
+  for (i=1; i<=n; i++) z[i] = z[i-1]*b/i;
+  if (c==0.0) return(n);
+  if (n>=40)
+  { WARN(("exbctay limit to n<40"));
+    n = 39;
+  }
+  ec[0] = 1;
+  for (i=1; 2*i<=n; i++) ec[i] = ec[i-1]*c/i;
+  for (i=n; i>1; i--)
+    for (j=1; 2*j<=i; j++)
+      z[i] += ec[j]*z[i-2*j];
+  return(n);
+}
+
+double explinjtay(l0,l1,j,cf)
+/* int_l0^l1 x^j e^(a+bx+cx^2); exbctay aroud l1 */
+double l0, l1, *cf;
+int j;
+{ double tc[40], f, s;
+  int k, n;
+  if ((l0!=0.0) | (l1!=1.0)) WARN(("explinjtay: invalid l0, l1"));
+  n = exbctay(cf[1]+2*cf[2]*l1,cf[2],20,tc);
+  s = tc[0]/(j+1);
+  f = 1/(j+1);
+  for (k=1; k<=n; k++)
+  { f *= -k/(j+k+1.0);
+    s += tc[k]*f;
+  }
+  return(f);
+}
+
+void explint1(l0,l1,cf,I,p) /* int x^j exp(a+bx); j=0..p-1 */
+double l0, l1, *cf, *I;
+int p;
+{ double y0, y1, f;
+  int j, k, k1;
+  y0 = mut_exp(cf[0]+l0*cf[1]);
+  y1 = mut_exp(cf[0]+l1*cf[1]);
+  if (p<2*fabs(cf[1])) k = p; else k = (int)fabs(cf[1]);
+
+  if (k>0)
+  { I[0] = (y1-y0)/cf[1];
+    for (j=1; j<k; j++) /* forward steps for small j */
+    { y1 *= l1; y0 *= l0;
+      I[j] = (y1-y0-j*I[j-1])/cf[1];
+    }
+    if (k==p) return;
+    y1 *= l1; y0 *= l0;
+  }
+
+  f = 1; k1 = k;
+  while ((k<50) && (f>1.0e-8)) /* initially Ik = diff(x^{k+1}e^{a+bx}) */
+  { y1 *= l1; y0 *= l0;
+    I[k] = y1-y0;
+    if (k>=p) f *= fabs(cf[1])/(k+1);
+    k++;
+  }
+  if (k==50) WARN(("explint1: want k>50"));
+  I[k] = 0.0;
+  for (j=k-1; j>=k1; j--) /* now do back step recursion */
+    I[j] = (I[j]-cf[1]*I[j+1])/(j+1);
+}
+
+void explintyl(l0,l1,cf,I,p) /* small c, use taylor series and explint1 */
+double l0, l1, *cf, *I;
+int p;
+{ int i;
+  double c;
+  explint1(l0,l1,cf,I,p+8);
+  c = cf[2];
+  for (i=0; i<p; i++)
+    I[i] = (((I[i+8]*c/4+I[i+6])*c/3+I[i+4])*c/2+I[i+2])*c+I[i];
+}
+
+void solvetrid(X,y,m)
+double *X, *y;
+int m;
+{ int i;
+  double s;
+  for (i=1; i<m; i++)
+  { s = X[3*i]/X[3*i-2];
+    X[3*i] = 0; X[3*i+1] -= s*X[3*i-1];
+    y[i] -= s*y[i-1];
+  }
+  for (i=m-2; i>=0; i--)
+  { s = X[3*i+2]/X[3*i+4];
+    X[3*i+2] = 0;
+    y[i] -= s*y[i+1];
+  }
+  for (i=0; i<m; i++) y[i] /= X[3*i+1];
+}
+
+void initi0i1(I,cf,y0,y1,l0,l1)
+double *I, *cf, y0, y1, l0, l1;
+{ double a0, a1, c, d, bi;
+  d = -cf[1]/(2*cf[2]); c = sqrt(2*fabs(cf[2]));
+  a0 = c*(l0-d); a1 = c*(l1-d);
+  if (cf[2]<0)
+  { bi = mut_exp(cf[0]+cf[1]*d+cf[2]*d*d)/c;
+    if (a0>0)
+    { if (a0>6) I[0] = (y0*ptail(-a0)-y1*ptail(-a1))/c;
+      else I[0] = S2PI*(mut_pnorm(-a0)-mut_pnorm(-a1))*bi;
+    }
+    else
+    { if (a1< -6) I[0] = (y1*ptail(a1)-y0*ptail(a0))/c;
+      else I[0] = S2PI*(mut_pnorm(a1)-mut_pnorm(a0))*bi;
+    }
+  }
+  else
+    I[0] = (y1*mut_daws(a1)-y0*mut_daws(a0))/c;
+  I[1] = (y1-y0)/(2*cf[2])+d*I[0];
+}
+
+void explinsid(l0,l1,cf,I,p) /* large b; don't use fwd recursion */
+double l0, l1, *cf, *I;
+int p;
+{ int k, k0, k1, k2;
+  double y0, y1, Z[150];
+if (debug) mut_printf("side: %8.5f %8.5f %8.5f    limt %8.5f %8.5f  p %2d\n",cf[0],cf[1],cf[2],l0,l1,p);
+ 
+  k0 = 2;
+  k1 = (int)(fabs(cf[1])+fabs(2*cf[2]));
+  if (k1<2) k1 = 2;
+  if (k1>p+20) k1 = p+20;
+  k2 = p+20;
+
+if (k2>50) { mut_printf("onedint: k2 warning\n"); k2 = 50; }
+  if (debug) mut_printf("k0 %2d  k1 %2d  k2 %2d  p %2d\n",k0,k1,k2,p);
+
+  y0 = mut_exp(cf[0]+l0*(cf[1]+l0*cf[2]));
+  y1 = mut_exp(cf[0]+l1*(cf[1]+l1*cf[2]));
+  initi0i1(I,cf,y0,y1,l0,l1);
+if (debug) mut_printf("i0 %8.5f  i1 %8.5f\n",I[0],I[1]);
+
+  y1 *= l1; y0 *= l0; /* should be x^(k1)*exp(..) */
+  if (k0<k1) /* center steps; initially x^k*exp(...) */
+    for (k=k0; k<k1; k++)
+    { y1 *= l1; y0 *= l0;
+      I[k] = y1-y0;
+      Z[3*k] = k; Z[3*k+1] = cf[1]; Z[3*k+2] = 2*cf[2];
+    }
+   
+  y1 *= l1; y0 *= l0; /* should be x^(k1)*exp(..) */
+if (debug) mut_printf("k1 %2d  y0 %8.5f  y1 %8.5f\n",k1,y0,y1);
+  for (k=k1; k<k2; k++)
+  { y1 *= l1; y0 *= l0;
+    I[k] = y1-y0;
+  }
+  I[k2] = I[k2+1] = 0.0;
+  for (k=k2-1; k>=k1; k--)
+    I[k] = (I[k]-cf[1]*I[k+1]-2*cf[2]*I[k+2])/(k+1);
+
+  if (k0<k1)
+  { I[k0] -= k0*I[k0-1];
+    I[k1-1] -= 2*cf[2]*I[k1];
+    Z[3*k0] = Z[3*k1-1] = 0;
+    solvetrid(&Z[3*k0],&I[k0],k1-k0);
+  }
+if (debug)
+{ mut_printf("explinsid:\n");
+  for (k=0; k<p; k++) mut_printf("  %8.5f\n",I[k]);
+}
+}
+
+void explinbkr(l0,l1,cf,I,p) /* small b,c; use back recursion */
+double l0, l1, *cf, *I;
+int p;
+{ int k, km;
+  double y0, y1;
+  y0 = mut_exp(cf[0]+l0*(cf[1]+cf[2]*l0));
+  y1 = mut_exp(cf[0]+l1*(cf[1]+cf[2]*l1));
+  km = p+10;
+  for (k=0; k<=km; k++)
+  { y1 *= l1; y0 *= l0;
+    I[k] = y1-y0;
+  }
+  I[km+1] = I[km+2] = 0;
+  for (k=km; k>=0; k--)
+    I[k] = (I[k]-cf[1]*I[k+1]-2*cf[2]*I[k+2])/(k+1);
+}
+
+void explinfbk0(l0,l1,cf,I,p) /* fwd and bac recur; b=0; c<0 */
+double l0, l1, *cf, *I;
+int p;
+{ double y0, y1, f1, f2, f, ml2;
+  int k, ks;
+
+  y0 = mut_exp(cf[0]+l0*l0*cf[2]);
+  y1 = mut_exp(cf[0]+l1*l1*cf[2]);
+  initi0i1(I,cf,y0,y1,l0,l1);
+
+  ml2 = MAX(l0*l0,l1*l1);
+  ks = 1+(int)(2*fabs(cf[2])*ml2);
+  if (ks<2) ks = 2;
+  if (ks>p-3) ks = p;
+
+  /* forward recursion for k < ks */
+  for (k=2; k<ks; k++)
+  { y1 *= l1; y0 *= l0;
+    I[k] = (y1-y0-(k-1)*I[k-2])/(2*cf[2]);
+  }
+  if (ks==p) return;
+
+  y1 *= l1*l1; y0 *= l0*l0;
+  for (k=ks; k<p; k++) /* set I[k] = x^{k+1}e^(a+cx^2) | {l0,l1} */
+  { y1 *= l1; y0 *= l0;
+    I[k] = y1-y0;
+  }
+
+  /* initialize I[p-2] and I[p-1] */
+  f1 = 1.0/p; f2 = 1.0/(p-1);
+  I[p-1] *= f1; I[p-2] *= f2;
+  k = p; f = 1.0;
+  while (f>1.0e-8)
+  { y1 *= l1; y0 *= l0;
+    if ((k-p)%2==0) /* add to I[p-2] */
+    { f2 *= -2*cf[2]/(k+1);
+      I[p-2] += (y1-y0)*f2;
+    }
+    else /* add to I[p-1] */
+    { f1 *= -2*cf[2]/(k+1);
+      I[p-1] += (y1-y0)*f1;
+      f *= 2*fabs(cf[2])*ml2/(k+1);
+    }
+    k++;
+  }
+  
+  /* use back recursion for I[ks..(p-3)] */
+  for (k=p-3; k>=ks; k--)
+    I[k] = (I[k]-2*cf[2]*I[k+2])/(k+1);
+}
+
+void explinfbk(l0,l1,cf,I,p) /* fwd and bac recur; b not too large */
+double l0, l1, *cf, *I;
+int p;
+{ double y0, y1;
+  int k, ks, km;
+
+  y0 = mut_exp(cf[0]+l0*(cf[1]+l0*cf[2]));
+  y1 = mut_exp(cf[0]+l1*(cf[1]+l1*cf[2]));
+  initi0i1(I,cf,y0,y1,l0,l1);
+
+  ks = (int)(3*fabs(cf[2]));
+  if (ks<3) ks = 3;
+  if (ks>0.75*p) ks = p; /* stretch the forward recurs as far as poss. */
+  /* forward recursion for k < ks */
+  for (k=2; k<ks; k++)
+  { y1 *= l1; y0 *= l0;
+    I[k] = (y1-y0-cf[1]*I[k-1]-(k-1)*I[k-2])/(2*cf[2]);
+  }
+  if (ks==p) return;
+
+  km = p+15;
+  y1 *= l1*l1; y0 *= l0*l0;
+  for (k=ks; k<=km; k++)
+  { y1 *= l1; y0 *= l0;
+    I[k] = y1-y0;
+  }
+  I[km+1] = I[km+2] = 0.0;
+  for (k=km; k>=ks; k--)
+    I[k] = (I[k]-cf[1]*I[k+1]-2*cf[2]*I[k+2])/(k+1);
+}
+
+void recent(I,resp,wt,p,s,x)
+double *I, *resp, *wt, x;
+int p, s;
+{ int i, j;
+
+  /* first, use W taylor series I -> resp */
+  for (i=0; i<=p; i++)
+  { resp[i] = 0.0;
+    for (j=0; j<s; j++) resp[i] += wt[j]*I[i+j];
+  }
+
+  /* now, recenter x -> 0 */
+  if (x==0) return;
+  for (j=0; j<=p; j++) for (i=p; i>j; i--) resp[i] += x*resp[i-1];
+}
+
+void recurint(l0,l2,cf,resp,p,ker)
+double l0, l2, *cf, *resp;
+int p, ker;
+{ int i, s;
+  double l1, d0, d1, d2, dl, z0, z1, z2, wt[20], ncf[3], I[50], r1[5], r2[5];
+if (debug) mut_printf("\nrecurint: %8.5f %8.5f %8.5f   %8.5f %8.5f\n",cf[0],cf[1],cf[2],l0,l2);
+
+  if (cf[2]==0) /* go straight to explint1 */
+  { s = wtaylor(wt,0.0,ker);
+if (debug) mut_printf("case 1\n");
+    explint1(l0,l2,cf,I,p+s);
+    recent(I,resp,wt,p,s,0.0);
+    return;
+  }
+
+  dl = l2-l0;
+  d0 = cf[1]+2*l0*cf[2];
+  d2 = cf[1]+2*l2*cf[2];
+  z0 = cf[0]+l0*(cf[1]+l0*cf[2]);
+  z2 = cf[0]+l2*(cf[1]+l2*cf[2]);
+
+  if ((fabs(cf[1]*dl)<1) && (fabs(cf[2]*dl*dl)<1))
+  { ncf[0] = z0; ncf[1] = d0; ncf[2] = cf[2];
+if (debug) mut_printf("case 2\n");
+    s = wtaylor(wt,l0,ker);
+    explinbkr(0.0,dl,ncf,I,p+s);
+    recent(I,resp,wt,p,s,l0);
+    return;
+  }
+
+  if (fabs(cf[2]*dl*dl)<0.001) /* small c, use explint1+tay.ser */
+  { ncf[0] = z0; ncf[1] = d0; ncf[2] = cf[2];
+if (debug) mut_printf("case small c\n");
+    s = wtaylor(wt,l0,ker);
+    explintyl(0.0,l2-l0,ncf,I,p+s);
+    recent(I,resp,wt,p,s,l0);
+    return;
+  }
+
+  if (d0*d2<=0) /* max/min in [l0,l2] */
+  { l1 = -cf[1]/(2*cf[2]);
+    z1 = cf[0]+l1*(cf[1]+l1*cf[2]);
+    d1 = 0.0;
+    if (cf[2]<0) /* peak, integrate around l1 */
+    { s = wtaylor(wt,l1,ker);
+      ncf[0] = z1; ncf[1] = 0.0; ncf[2] = cf[2];
+if (debug) mut_printf("case peak  p %2d  s %2d\n",p,s);
+      explinfbk0(l0-l1,l2-l1,ncf,I,p+s);
+      recent(I,resp,wt,p,s,l1);
+      return;
+    }
+  }
+
+  if ((d0-2*cf[2]*dl)*(d2+2*cf[2]*dl)<0) /* max/min is close to [l0,l2] */
+  { l1 = -cf[1]/(2*cf[2]);
+    z1 = cf[0]+l1*(cf[1]+l1*cf[2]);
+    if (l1<l0) { l1 = l0; z1 = z0; }
+    if (l1>l2) { l1 = l2; z1 = z2; }
+
+    if ((z1>=z0) & (z1>=z2)) /* peak; integrate around l1 */
+    { s = wtaylor(wt,l1,ker);
+if (debug) mut_printf("case 4\n");
+      d1 = cf[1]+2*l1*cf[2];
+      ncf[0] = z1; ncf[1] = d1; ncf[2] = cf[2];
+      explinfbk(l0-l1,l2-l1,ncf,I,p+s);
+      recent(I,resp,wt,p,s,l1);
+      return;
+    }
+
+    /* trough; integrate [l0,l1] and [l1,l2] */
+    for (i=0; i<=p; i++) r1[i] = r2[i] = 0.0;
+    if (l0<l1)
+    { s = wtaylor(wt,l0,ker);
+if (debug) mut_printf("case 5\n");
+      ncf[0] = z0; ncf[1] = d0; ncf[2] = cf[2];
+      explinfbk(0.0,l1-l0,ncf,I,p+s);
+      recent(I,r1,wt,p,s,l0);
+    }
+    if (l1<l2)
+    { s = wtaylor(wt,l2,ker);
+if (debug) mut_printf("case 6\n");
+      ncf[0] = z2; ncf[1] = d2; ncf[2] = cf[2];
+      explinfbk(l1-l2,0.0,ncf,I,p+s);
+      recent(I,r2,wt,p,s,l2);
+    }
+    for (i=0; i<=p; i++) resp[i] = r1[i]+r2[i];
+    return;
+  }
+
+  /* Now, quadratic is monotone on [l0,l2]; big b; moderate c */
+  if (z2>z0+3) /* steep increase, expand around l2 */
+  { s = wtaylor(wt,l2,ker);
+if (debug) mut_printf("case 7\n");
+
+
+    ncf[0] = z2; ncf[1] = d2; ncf[2] = cf[2];
+    explinsid(l0-l2,0.0,ncf,I,p+s);
+    recent(I,resp,wt,p,s,l2);
+if (debug) mut_printf("7 resp: %8.5f %8.5f %8.5f %8.5f\n",resp[0],resp[1],resp[2],resp[3]);
+    return;
+  }
+
+  /* bias towards expansion around l0, because it's often 0 */
+if (debug) mut_printf("case 8\n");
+  s = wtaylor(wt,l0,ker);
+  ncf[0] = z0; ncf[1] = d0; ncf[2] = cf[2];
+  explinsid(0.0,l2-l0,ncf,I,p+s);
+  recent(I,resp,wt,p,s,l0);
+  return;
+}
+
+int onedexpl(cf,deg,resp)
+double *cf, *resp;
+int deg;
+{ int i;
+  double f0, fr, fl;
+  if (deg>=2) LERR(("onedexpl only valid for deg=0,1"));
+  if (fabs(cf[1])>=EFACT) return(LF_BADP);
+
+  f0 = exp(cf[0]); fl = fr = 1.0;
+  for (i=0; i<=2*deg; i++)
+  { f0 *= i+1;
+    fl /=-(EFACT+cf[1]);
+    fr /=  EFACT-cf[1];
+    resp[i] = f0*(fr-fl);
+  }
+  return(LF_OK);
+}
+
+int onedgaus(cf,deg,resp)
+double *cf, *resp;
+int deg;
+{ int i;
+  double f0, mu, s2;
+  if (deg==3)
+  { LERR(("onedgaus only valid for deg=0,1,2"));
+    return(LF_ERR);
+  }
+  if (2*cf[2]>=GFACT*GFACT) return(LF_BADP);
+
+  s2 = 1/(GFACT*GFACT-2*cf[2]);
+  mu = cf[1]*s2;
+  resp[0] = 1.0;
+  if (deg>=1)
+  { resp[1] = mu;
+    resp[2] = s2+mu*mu;
+    if (deg==2)
+    { resp[3] = mu*(3*s2+mu*mu);
+      resp[4] = 3*s2*s2 + mu*mu*(6*s2+mu*mu);
+    }
+  }
+  f0 = S2PI * exp(cf[0]+mu*mu/(2*s2))*sqrt(s2);
+  for (i=0; i<=2*deg; i++) resp[i] *= f0;
+  return(LF_OK);
+}
+
+int onedint(sp,cf,l0,l1,resp) /* int W(u)u^j exp(..), j=0..2*deg */
+smpar *sp;
+double *cf, l0, l1, *resp;
+{ double u, uj, y, ncf[4], rr[5];
+  int i, j;
+
+if (debug) mut_printf("onedint: %f %f %f   %f %f\n",cf[0],cf[1],cf[2],l0,l1);
+
+  if (deg(sp)<=2)
+  { for (i=0; i<3; i++) ncf[i] = (i>deg(sp)) ? 0.0 : cf[i];
+    ncf[2] /= 2;
+
+    if (ker(sp)==WEXPL) return(onedexpl(ncf,deg(sp),resp));
+    if (ker(sp)==WGAUS) return(onedgaus(ncf,deg(sp),resp));
+
+    if (l1>0)
+      recurint(MAX(l0,0.0),l1,ncf,resp,2*deg(sp),ker(sp));
+    else for (i=0; i<=2*deg(sp); i++) resp[i] = 0;
+
+    if (l0<0)
+    { ncf[1] = -ncf[1];
+      l0 = -l0; l1 = -l1;
+      recurint(MAX(l1,0.0),l0,ncf,rr,2*deg(sp),ker(sp));
+    }
+    else for (i=0; i<=2*deg(sp); i++) rr[i] = 0.0;
+
+    for (i=0; i<=2*deg(sp); i++)
+      resp[i] += (i%2==0) ? rr[i] : -rr[i];
+
+    return(LF_OK);
+  }
+
+  /* For degree >= 3, we use Simpson's rule. */
+  for (j=0; j<=2*deg(sp); j++) resp[j] = 0.0;
+  for (i=0; i<=de_mint; i++)
+  { u = l0+(l1-l0)*i/de_mint;
+    y = cf[0]; uj = 1;
+    for (j=1; j<=deg(sp); j++)
+    { uj *= u;
+      y += cf[j]*uj/fact[j];
+    }
+    y = (4-2*(i%2==0)-(i==0)-(i==de_mint)) *
+          W(fabs(u),ker(sp))*exp(MIN(y,300.0));
+    for (j=0; j<=2*deg(sp); j++)
+    { resp[j] += y;
+      y *= u;
+    }
+  }
+  for (j=0; j<=2*deg(sp); j++) resp[j] = resp[j]*(l1-l0)/(3*de_mint);
+  return(LF_OK);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+extern int lf_status;
+static double u[MXDIM], ilim[2*MXDIM], *ff, hh, *cff;
+static lfdata *den_lfd;
+static design *den_des;
+static smpar *den_sp;
+int fact[] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800};
+int de_mint  = 20;
+int de_itype = IDEFA;
+int de_renorm= 0;
+
+int multint(), prodint(), gausint(), mlinint();
+
+#define NITYPE 7
+static char *itype[NITYPE] = { "default", "multi", "product", "mlinear",
+                          "hazard",  "sphere", "monte" };
+static int   ivals[NITYPE] =
+   { IDEFA, IMULT, IPROD, IMLIN, IHAZD, ISPHR, IMONT };
+int deitype(char *z)
+{ return(pmatch(z, itype, ivals, NITYPE, IDEFA));
+}
+
+void prresp(coef,resp,p)
+double *coef, *resp;
+int p;
+{ int i, j;
+  mut_printf("Coefficients:\n");
+  for (i=0; i<p; i++) mut_printf("%8.5f ",coef[i]);
+  mut_printf("\n");
+  mut_printf("Response matrix:\n");
+  for (i=0; i<p; i++)
+  { for (j=0; j<p; j++) mut_printf("%9.6f, ",resp[i+j*p]);
+    mut_printf("\n");
+  }
+}
+
+int mif(u,d,resp,M)
+double *u, *resp, *M;
+int d;
+{ double wt;
+  int i, j, p;
+
+  p = den_des->p;
+  wt = weight(den_lfd, den_sp, u, NULL, hh, 0, 0.0);
+  if (wt==0)
+  { setzero(resp,p*p);
+    return(p*p);
+  }
+
+  fitfun(den_lfd, den_sp, u,NULL,ff,NULL);
+  if (link(den_sp)==LLOG)
+    wt *= mut_exp(innerprod(ff,cff,p));
+  for (i=0; i<p; i++)
+    for (j=0; j<p; j++)
+      resp[i*p+j] = wt*ff[i]*ff[j];
+  return(p*p);
+}
+
+int multint(t,resp1,resp2,cf,h)
+double *t, *resp1, *resp2, *cf, h;
+{ int d, i, mg[MXDIM];
+
+  if (ker(den_sp)==WGAUS) return(gausint(t,resp1,resp2,cf,h,den_lfd->sca));
+
+  d = den_lfd->d;
+  for (i=0; i<d; i++) mg[i] = de_mint;
+
+  hh = h;
+  cff= cf;
+  simpsonm(mif,ilim,&ilim[d],d,resp1,mg,resp2);
+  return(LF_OK);
+}
+
+int mlinint(t,resp1,resp2,cf,h)
+double *t, *resp1, *resp2, *cf, h;
+{
+  double hd, nb, wt, wu, g[4], w0, w1, v, *sca;
+  int d, p, i, j, jmax, k, l, z, jj[2];
+
+  d = den_lfd->d; p = den_des->p; sca = den_lfd->sca;
+  hd = 1;
+  for (i=0; i<d; i++) hd *= h*sca[i];
+
+  if (link(den_sp)==LIDENT)
+  { setzero(resp1,p*p);
+    resp1[0] = wint(d,NULL,0,ker(den_sp))*hd;
+    if (deg(den_sp)==0) return(LF_OK);
+    jj[0] = 2; w0 = wint(d,jj,1,ker(den_sp))*hd*h*h;
+    for (i=0; i<d; i++) resp1[(i+1)*p+i+1] = w0*sca[i]*sca[i];
+    if (deg(den_sp)==1) return(LF_OK);
+    for (i=0; i<d; i++)
+    { j = p-(d-i)*(d-i+1)/2;
+      resp1[j] = resp1[p*j] = w0*sca[i]*sca[i]/2;
+    }
+    if (d>1)
+    { jj[1] = 2;
+      w0 = wint(d,jj,2,ker(den_sp)) * hd*h*h*h*h;
+    }
+    jj[0] = 4;
+    w1 = wint(d,jj,1,ker(den_sp)) * hd*h*h*h*h/4;
+    z = d+1;
+    for (i=0; i<d; i++)
+    { k = p-(d-i)*(d-i+1)/2;
+      for (j=i; j<d; j++)
+      { l = p-(d-j)*(d-j+1)/2;
+        if (i==j) resp1[z*p+z] = w1*SQR(sca[i])*SQR(sca[i]);
+        else
+        { resp1[z*p+z] = w0*SQR(sca[i])*SQR(sca[j]);
+          resp1[k*p+l] = resp1[k+p*l] = w0/4*SQR(sca[i])*SQR(sca[j]);
+        }
+        z++;
+    } }
+    return(LF_OK);
+  }
+  switch(deg(den_sp))
+  { case 0:
+      resp1[0] = mut_exp(cf[0])*wint(d,NULL,0,ker(den_sp))*hd;
+      return(LF_OK);
+    case 1:
+      nb = 0.0;
+      for (i=1; i<=d; i++)
+      { v = h*cf[i]*sca[i-1];
+        nb += v*v;
+      }
+      if (ker(den_sp)==WGAUS)
+      { w0 = 1/(GFACT*GFACT);
+        g[0] = mut_exp(cf[0]+w0*nb/2+d*log(S2PI/2.5));
+        g[1] = g[3] = g[0]*w0;
+        g[2] = g[0]*w0*w0;
+      }
+      else
+      { wt = wu = mut_exp(cf[0]);
+        w0 = wint(d,NULL,0,ker(den_sp)); g[0] = wt*w0;
+        g[1] = g[2] = g[3] = 0.0;
+        j = 0; jmax = (d+2)*de_mint;
+        while ((j<jmax) && (wt*w0/g[0]>1.0e-8))
+        { j++;
+          jj[0] = 2*j; w0 = wint(d,jj,1,ker(den_sp));
+          if (d==1) g[3] += wt * w0;
+          else
+          { jj[0] = 2; jj[1] = 2*j-2; w1 = wint(d,jj,2,ker(den_sp));
+            g[3] += wt*w1;
+            g[2] += wu*(w0-w1);
+          }
+          wt /= (2*j-1.0); g[1] += wt*w0;
+          wt *= nb/(2*j); g[0] += wt*w0;
+          wu /= (2*j-1.0)*(2*j);
+          if (j>1) wu *= nb;
+        }
+        if (j==jmax) WARN(("mlinint: series not converged"));
+      }
+      g[0] *= hd; g[1] *= hd;
+      g[2] *= hd; g[3] *= hd;
+      resp1[0] = g[0];
+      for (i=1; i<=d; i++)
+      { resp1[i] = resp1[(d+1)*i] = cf[i]*SQR(h*sca[i-1])*g[1];
+        for (j=1; j<=d; j++)
+        { resp1[(d+1)*i+j] = (i==j) ? g[3]*SQR(h*sca[i-1]) : 0;
+          resp1[(d+1)*i+j] += g[2]*SQR(h*h*sca[i-1]*sca[j-1])*cf[i]*cf[j];
+        }
+      }
+      return(LF_OK);
+  }
+  LERR(("mlinint: deg=0,1 only"));
+  return(LF_ERR);
+}
+
+void prodintresp(resp,prod_wk,dim,deg,p)
+double *resp, prod_wk[MXDIM][2*MXDEG+1];
+int dim, deg, p;
+{ double prod;
+  int i, j, k, j1, k1;
+
+  prod = 1.0;
+  for (i=0; i<dim; i++) prod *= prod_wk[i][0];
+  resp[0] += prod;
+  if (deg==0) return;
+
+  for (j1=1; j1<=deg; j1++)
+  { for (j=0; j<dim; j++)
+    { prod = 1.0;
+      for (i=0; i<dim; i++) prod *= prod_wk[i][j1*(j==i)];
+      prod /= fact[j1];
+      resp[1 + (j1-1)*dim +j] += prod;
+    }
+  }
+
+  for (k1=1; k1<=deg; k1++)
+    for (j1=k1; j1<=deg; j1++)
+    { for (k=0; k<dim; k++)
+        for (j=0; j<dim; j++)
+        { prod = 1.0;
+          for (i=0; i<dim; i++) prod *= prod_wk[i][k1*(k==i) + j1*(j==i)];
+          prod /= fact[k1]*fact[j1];
+          resp[ (1+(k1-1)*dim+k)*p + 1+(j1-1)*dim+j] += prod;
+        }
+    }
+}
+
+int prodint(t,resp,resp2,coef,h)
+double *t, *resp, *resp2, *coef, h;
+{ int dim, p, i, j, k, st;
+  double cf[MXDEG+1], hj, hs, prod_wk[MXDIM][2*MXDEG+1];
+
+  dim = den_lfd->d;
+  p = den_des->p;
+  for (i=0; i<p*p; i++) resp[i] = 0.0;
+  cf[0] = coef[0];
+
+/*  compute the one dimensional terms
+ */
+  for (i=0; i<dim; i++)
+  { hj = 1; hs = h*den_lfd->sca[i];
+    for (j=0; j<deg(den_sp); j++)
+    { hj *= hs;
+      cf[j+1] = hj*coef[ j*dim+i+1 ];
+    }
+    st = onedint(den_sp,cf,ilim[i]/hs,ilim[i+dim]/hs,prod_wk[i]);
+    if (st==LF_BADP) return(st);
+    hj = 1;
+    for (j=0; j<=2*deg(den_sp); j++)
+    { hj *= hs;
+      prod_wk[i][j] *= hj;
+    }
+    cf[0] = 0.0; /* so we only include it once, when d>=2 */
+  }
+
+/*  transfer to the resp array
+ */
+  prodintresp(resp,prod_wk,dim,deg(den_sp),p);
+
+/* Symmetrize.
+*/
+  for (k=0; k<p; k++)
+    for (j=k; j<p; j++)
+      resp[j*p+k] = resp[k*p+j];
+
+  return(st);
+}
+
+int gausint(t,resp,C,cf,h,sca)
+double *t, *resp, *C, *cf, h, *sca;
+{ double nb, det, z, *P;
+  int d, p, i, j, k, l, m1, m2, f;
+  d = den_lfd->d; p = den_des->p;
+  m1 = d+1; nb = 0;
+  P = &C[d*d];
+  resp[0] = 1;
+  for (i=0; i<d; i++)
+  { C[i*d+i] = SQR(GFACT/(h*sca[i]))-cf[m1++];
+    for (j=i+1; j<d; j++) C[i*d+j] = C[j*d+i] = -cf[m1++];
+  }
+  eig_dec(C,P,d);
+  det = 1;
+  for (i=1; i<=d; i++)
+  { det *= C[(i-1)*(d+1)];
+    if (det <= 0) return(LF_BADP);
+    resp[i] = cf[i];
+    for (j=1; j<=d; j++) resp[j+i*p] = 0;
+    resp[i+i*p] = 1;
+    svdsolve(&resp[i*p+1],u,P,C,P,d,0.0);
+  }
+  svdsolve(&resp[1],u,P,C,P,d,0.0);
+  det = sqrt(det);
+  for (i=1; i<=d; i++)
+  { nb += cf[i]*resp[i];
+    resp[i*p] = resp[i];
+    for (j=1; j<=d; j++)
+      resp[i+p*j] += resp[i]*resp[j];
+  }
+  m1 = d;
+  for (i=1; i<=d; i++)
+    for (j=i; j<=d; j++)
+    { m1++; f = 1+(i==j);
+      resp[m1] = resp[m1*p] = resp[i*p+j]/f;
+      m2 = d;
+      for (k=1; k<=d; k++)
+      { resp[m1+k*p] = resp[k+m1*p] =
+        ( resp[i]*resp[j*p+k] + resp[j]*resp[i*p+k]
+        + resp[k]*resp[i*p+j] - 2*resp[i]*resp[j]*resp[k] )/f;
+        for (l=k; l<=d; l++)
+        { m2++; f = (1+(i==j))*(1+(k==l));
+          resp[m1+m2*p] = resp[m2+m1*p] = ( resp[i+j*p]*resp[k+l*p]
+            + resp[i+k*p]*resp[j+l*p] + resp[i+l*p]*resp[j+k*p]
+            - 2*resp[i]*resp[j]*resp[k]*resp[l] )/f;
+    } } }
+  z = mut_exp(d*0.918938533+cf[0]+nb/2)/det;
+  multmatscal(resp,z,p*p);
+  return(LF_OK);
+}
+
+int likeden(coef, lk0, f1, A)
+double *coef, *lk0, *f1, *A;
+{ double lk, r;
+  int i, j, p, rstat;
+
+  lf_status = LF_OK;
+  p = den_des->p;
+  if ((link(den_sp)==LIDENT) && (coef[0] != 0.0)) return(NR_BREAK);
+  lf_status = (den_des->itype)(den_des->xev,A,den_des->xtwx.Q,coef,den_des->h);
+  if (lf_error) lf_status = LF_ERR;
+  if (lf_status==LF_BADP)
+  { *lk0 = -1.0e300;
+    return(NR_REDUCE);
+  }
+  if (lf_status!=LF_OK) return(NR_BREAK);
+  if (lf_debug>2) prresp(coef,A,p);
+
+  den_des->xtwx.p = p;
+  rstat = NR_OK;
+  switch(link(den_sp))
+  { case LLOG:
+      r = den_des->ss[0]/A[0];
+      coef[0] += log(r);
+      multmatscal(A,r,p*p);
+      A[0] = den_des->ss[0];
+      lk = -A[0];
+      if (fabs(coef[0]) > 700)
+      { lf_status = LF_OOB;
+        rstat = NR_REDUCE;
+      }
+      for (i=0; i<p; i++)
+      { lk += coef[i]*den_des->ss[i];
+        f1[i] = den_des->ss[i]-A[i];
+      }
+      break;
+    case LIDENT:
+      lk = 0.0;
+      for (i=0; i<p; i++)
+      { f1[i] = den_des->ss[i];
+        for (j=0; j<p; j++)
+          den_des->res[i] -= A[i*p+j]*coef[j];
+      }
+      break;
+  }
+  *lk0 = den_des->llk = lk;
+
+  return(rstat);
+}
+
+int inre(x,bound,d)
+double *x, *bound;
+int d;
+{ int i, z;
+  z = 1;
+  for (i=0; i<d; i++)
+    if (bound[i]<bound[i+d])
+      z &= (x[i]>=bound[i]) & (x[i]<=bound[i+d]);
+  return(z);
+}
+
+int setintlimits(lfd, x, h, ang, lset)
+lfdata *lfd;
+int *ang, *lset;
+double *x, h;
+{ int d, i;
+  d = lfd->d;
+  *ang = *lset = 0;
+  for (i=0; i<d; i++)
+  { if (lfd->sty[i]==STANGL)
+    { ilim[i+d] = ((h<2) ? 2*asin(h/2) : PI)*lfd->sca[i];
+      ilim[i] = -ilim[i+d];
+      *ang = 1;
+    }
+    else
+    { ilim[i+d] = h*lfd->sca[i];
+      ilim[i] = -ilim[i+d];
+
+      if (lfd->sty[i]==STLEFT) { ilim[i+d] = 0; *lset = 1; }
+      if (lfd->sty[i]==STRIGH) { ilim[i] = 0;   *lset = 1; }
+
+      if (lfd->xl[i]<lfd->xl[i+d]) /* user limits for this variable */
+      { if (lfd->xl[i]-x[i]> ilim[i])
+        { ilim[i] = lfd->xl[i]-x[i]; *lset=1; }
+        if (lfd->xl[i+d]-x[i]< ilim[i+d])
+        { ilim[i+d] = lfd->xl[i+d]-x[i]; *lset=1; }
+      }
+    }
+    if (ilim[i]==ilim[i+d]) return(LF_DEMP); /* empty integration */
+  }
+  return(LF_OK);
+}
+
+int selectintmeth(itype,lset,ang)
+int itype, lset, ang;
+{
+  if (itype==IDEFA) /* select the default method */
+  { if (fam(den_sp)==THAZ)
+    { if (ang) return(IDEFA);
+      return( IHAZD );
+    }
+
+    if (ubas(den_sp)) return(IMULT);
+
+    if (ang) return(IMULT);
+
+    if (iscompact(ker(den_sp)))
+    { if (kt(den_sp)==KPROD) return(IPROD);
+      if (lset)
+        return( (den_lfd->d==1) ? IPROD : IMULT );
+      if (deg(den_sp)<=1) return(IMLIN);
+      if (den_lfd->d==1) return(IPROD);
+      return(IMULT);
+    }
+
+    if (ker(den_sp)==WGAUS)
+    { if (lset) WARN(("Integration for Gaussian weights ignores limits"));
+      if ((den_lfd->d==1)|(kt(den_sp)==KPROD)) return(IPROD);
+      if (deg(den_sp)<=1) return(IMLIN);
+      if (deg(den_sp)==2) return(IMULT);
+    }
+
+    return(IDEFA);
+  }
+
+  /* user provided an integration method, check it is valid */
+
+  if (fam(den_sp)==THAZ)
+  { if (ang) return(INVLD);
+    if (!iscompact(ker(den_sp))) return(INVLD);
+    return( ((kt(den_sp)==KPROD) | (kt(den_sp)==KSPH)) ? IHAZD : INVLD );
+  }
+
+  if ((ang) && (itype != IMULT)) return(INVLD);
+
+  switch(itype)
+  { case IMULT:
+      if (ker(den_sp)==WGAUS) return(deg(den_sp)==2);
+      return( iscompact(ker(den_sp)) ? IMULT : INVLD );
+    case IPROD: return( ((den_lfd->d==1) | (kt(den_sp)==KPROD)) ? IPROD : INVLD );
+    case IMLIN: return( ((kt(den_sp)==KSPH) && (!lset) &&
+      (deg(den_sp)<=1)) ? IMLIN : INVLD );
+  }
+
+  return(INVLD);
+}
+
+extern double lf_tol;
+
+int densinit(lfd,des,sp)
+lfdata *lfd;
+design *des;
+smpar *sp;
+{ int p, i, ii, j, nnz, rnz, ang, lset, status;
+  double w, *cf;
+
+  den_lfd = lfd;
+  den_des = des;
+  den_sp  = sp;
+  cf = des->cf;
+
+  lf_tol = (link(sp)==LLOG) ? 1.0e-6 : 0.0;
+
+  p = des->p;
+  ff = des->xtwx.wk;
+  cf[0] = NOSLN;
+  for (i=1; i<p; i++) cf[i] = 0.0;
+
+  if (!inre(des->xev,lfd->xl,lfd->d)) return(LF_XOOR);
+
+  status = setintlimits(lfd,des->xev,des->h,&ang,&lset);
+  if (status != LF_OK) return(status);
+
+  switch(selectintmeth(de_itype,lset,ang))
+  { case IMULT: des->itype = multint; break;
+    case IPROD: des->itype = prodint; break;
+    case IMLIN: des->itype = mlinint; break;
+    case IHAZD: des->itype = hazint; break;
+    case INVLD: LERR(("Invalid integration method %d",de_itype));
+                break;
+    case IDEFA: LERR(("No integration type available for this model"));
+                break;
+    default: LERR(("densinit: unknown integral type"));
+  }
+
+  switch(deg(den_sp))
+  { case 0: rnz = 1; break;
+    case 1: rnz = 1; break;
+    case 2: rnz = lfd->d+1; break;
+    case 3: rnz = lfd->d+2; break;
+    default: LERR(("densinit: invalid degree %d",deg(den_sp)));
+  }
+  if (lf_error) return(LF_ERR);
+
+  setzero(des->ss,p);
+  nnz = 0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    if (!cens(lfd,ii))
+    { w = wght(des,ii)*prwt(lfd,ii);
+      for (j=0; j<p; j++) des->ss[j] += d_xij(des,ii,j)*w;
+      if (wght(des,ii)>0.00001) nnz++;
+  } }
+
+  if (fam(den_sp)==THAZ) haz_init(lfd,des,sp,ilim);
+/* this should really only be done once. Not sure how to enforce that,
+ * esp. when locfit() has been called directly.
+ */
+  if (fam(den_sp)==TDEN)
+    des->smwt = (lfd->w==NULL) ? lfd->n : vecsum(lfd->w,lfd->n);
+
+  if (lf_debug>2)
+  { mut_printf("    LHS: ");
+    for (i=0; i<p; i++) mut_printf(" %8.5f",des->ss[i]);
+    mut_printf("\n");
+  }
+
+  switch(link(den_sp))
+  { case LIDENT:
+      cf[0] = 0.0;
+      return(LF_OK);
+    case LLOG:
+      if (nnz<rnz) { cf[0] = -1000; return(LF_DNOP); }
+      cf[0] = 0.0;
+      return(LF_OK);
+    default:
+      LERR(("unknown link in densinit"));
+      return(LF_ERR);
+  }
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int bino_vallink(link)
+int link;
+{ return((link==LLOGIT) | (link==LIDENT) | (link==LASIN));
+}
+
+int bino_fam(y,p,th,link,res,cens,w)
+double y, p, th, *res, w;
+int link, cens;
+{ double wp;
+  if (link==LINIT)
+  { if (y<0) y = 0;
+    if (y>w) y = w;
+    res[ZDLL] = y;
+    return(LF_OK);
+  }
+  wp = w*p;
+  if (link==LIDENT)
+  { if ((p<=0) && (y>0)) return(LF_BADP);
+    if ((p>=1) && (y<w)) return(LF_BADP);
+    res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+    if (y>0)
+    { res[ZLIK] += y*log(wp/y);
+      res[ZDLL] += y/p;
+      res[ZDDLL]+= y/(p*p);
+    }
+    if (y<w)
+    { res[ZLIK] += (w-y)*log((w-wp)/(w-y));
+      res[ZDLL] -= (w-y)/(1-p);
+      res[ZDDLL]+= (w-y)/SQR(1-p);
+    }
+    return(LF_OK);
+  }
+  if (link==LLOGIT)
+  { if ((y<0) | (y>w)) /* goon observation; delete it */
+    { res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+      return(LF_OK);
+    }
+    res[ZLIK] = (th<0) ? th*y-w*log(1+exp(th)) : th*(y-w)-w*log(1+exp(-th));
+    if (y>0) res[ZLIK] -= y*log(y/w);
+    if (y<w) res[ZLIK] -= (w-y)*log(1-y/w);
+    res[ZDLL] = (y-wp);
+    res[ZDDLL]= wp*(1-p);
+    return(LF_OK);
+  }
+  if (link==LASIN)
+  { if ((p<=0) && (y>0)) return(LF_BADP);
+    if ((p>=1) && (y<w)) return(LF_BADP);
+    if ((th<0) | (th>PI/2)) return(LF_BADP);
+    res[ZDLL] = res[ZDDLL] = res[ZLIK] = 0;
+    if (y>0)
+    { res[ZDLL] += 2*y*sqrt((1-p)/p);
+      res[ZLIK] += y*log(wp/y);
+    }
+    if (y<w)
+    { res[ZDLL] -= 2*(w-y)*sqrt(p/(1-p));
+      res[ZLIK] += (w-y)*log((w-wp)/(w-y));
+    }
+    res[ZDDLL] = 4*w;
+    return(LF_OK);
+  }
+  LERR(("link %d invalid for binomial family",link));
+  return(LF_LNK);
+}
+
+int bino_check(sp,des,lfd)
+smpar *sp;
+design *des;
+lfdata *lfd;
+{ int i, ii;
+  double t0, t1;
+
+  if (fabs(des->cf[0])>700) return(LF_OOB);
+
+  /* check for separation.
+   * this won't detect separation if there's boundary points with
+   *   both 0 and 1 responses.
+   */
+  t0 = -1e100; t1 = 1e100;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    if ((resp(lfd,ii)<prwt(lfd,ii)) && (fitv(des,ii) > t0)) t0 = fitv(des,ii);
+    if ((resp(lfd,ii)>0) && (fitv(des,ii) < t1)) t1 = fitv(des,ii);
+    if (t1 <= t0) return(LF_OK);
+  }
+  mut_printf("separated %8.5f %8.5f\n",t0,t1);
+  return(LF_NSLN);
+}
+
+void setfbino(fam)
+family *fam;
+{ fam->deflink = LLOGIT;
+  fam->canlink = LLOGIT;
+  fam->vallink = bino_vallink;
+  fam->family  = bino_fam;
+  fam->pcheck  = bino_check;
+}
+
+int rbin_vallink(link)
+int link;
+{ return(link==LLOGIT);
+}
+
+int rbin_fam(y,p,th,link,res,cens,w)
+double y, p, th, *res, w;
+int link, cens;
+{ double s2y;
+  if (link==LINIT)
+  { res[ZDLL] = y;
+    return(LF_OK);
+  }
+  if ((y<0) | (y>w)) /* goon observation; delete it */
+  { res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+    return(LF_OK);
+  }
+  res[ZLIK] = (th<0) ? th*y-w*log(1+exp(th)) : th*(y-w)-w*log(1+exp(-th));
+  if (y>0) res[ZLIK] -= y*log(y/w);
+  if (y<w) res[ZLIK] -= (w-y)*log(1-y/w);
+  res[ZDLL] = (y-w*p);
+  res[ZDDLL]= w*p*(1-p);
+  if (-res[ZLIK]>HUBERC*HUBERC/2.0)
+  { s2y = sqrt(-2*res[ZLIK]);
+    res[ZLIK] = HUBERC*(HUBERC/2.0-s2y);
+    res[ZDLL] *= HUBERC/s2y;
+    res[ZDDLL] = HUBERC/s2y*(res[ZDDLL]-1/(s2y*s2y)*w*p*(1-p));
+  }
+  return(LF_OK);
+}
+
+void setfrbino(fam)
+family *fam;
+{ fam->deflink = LLOGIT;
+  fam->canlink = LLOGIT;
+  fam->vallink = rbin_vallink;
+  fam->family  = rbin_fam;
+  fam->pcheck  = bino_check;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int circ_vallink(link)
+int link;
+{ return(link==LIDENT);
+}
+
+int circ_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ if (link==LINIT)
+  { res[ZDLL] = w*sin(y);
+    res[ZLIK] = w*cos(y);
+    return(LF_OK);
+  }
+  res[ZDLL] = w*sin(y-mean);
+  res[ZDDLL]= w*cos(y-mean);
+  res[ZLIK] = res[ZDDLL]-w;
+  return(LF_OK);
+}
+
+extern double lf_tol;
+int circ_init(lfd,des,sp)
+lfdata *lfd;
+design *des;
+smpar *sp;
+{ int i, ii;
+  double s0, s1;
+  s0 = s1 = 0.0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    s0 += wght(des,ii)*prwt(lfd,ii)*sin(resp(lfd,ii)-base(lfd,ii));
+    s1 += wght(des,ii)*prwt(lfd,ii)*cos(resp(lfd,ii)-base(lfd,ii));
+  }
+  des->cf[0] = atan2(s0,s1);
+  for (i=1; i<des->p; i++) des->cf[i] = 0.0;
+  lf_tol = 1.0e-6;
+  return(LF_OK);
+}
+
+
+void setfcirc(fam)
+family *fam;
+{ fam->deflink = LIDENT;
+  fam->canlink = LIDENT;
+  fam->vallink = circ_vallink;
+  fam->family  = circ_fam;
+  fam->initial = circ_init;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int dens_vallink(link)
+int link;
+{ return((link==LIDENT) | (link==LLOG));
+}
+
+int dens_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ if (cens)
+    res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+  else
+  { res[ZLIK] = w*th;
+    res[ZDLL] = res[ZDDLL] = w;
+  }
+  return(LF_OK);
+}
+
+void setfdensity(fam)
+family *fam;
+{ fam->deflink = LLOG;
+  fam->canlink = LLOG;
+  fam->vallink = dens_vallink;
+  fam->family  = dens_fam;
+  fam->initial = densinit;
+  fam->like = likeden;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int gamma_vallink(link)
+int link;
+{ return((link==LIDENT) | (link==LLOG) | (link==LINVER));
+}
+
+int gamma_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double lb, pt, dg;
+  if (link==LINIT)
+  { res[ZDLL] = MAX(y,0.0);
+    return(LF_OK);
+  }
+  res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+  if (w==0.0) return(LF_OK);
+  if ((mean<=0) & (y>0)) return(LF_BADP);
+  if (link==LIDENT) lb = 1/th;
+  if (link==LINVER) lb = th;
+  if (link==LLOG)   lb = mut_exp(-th);
+  if (cens)
+  { if (y<=0) return(LF_OK);
+    pt = 1-igamma(lb*y,w);
+    dg = dgamma(lb*y,w,1.0,0);
+    res[ZLIK] = log(pt);
+    res[ZDLL] = -y*dg/pt;
+/*
+ * res[ZDLL]  = -y*dg/pt * dlb/dth.
+ * res[ZDDLL] =  y*dg/pt * (d2lb/dth2 + ((w-1)/lb-y)*(dlb/dth)^2)
+ *              + res[ZDLL]^2.
+ */
+    if (link==LLOG)       /* lambda = exp(-theta) */
+    { res[ZDLL] *= -lb;
+      res[ZDDLL] = dg*y*lb*(w-lb*y)/pt + SQR(res[ZDLL]);
+      return(LF_OK);
+    }
+    if (link==LINVER)     /* lambda = theta */
+    { res[ZDLL] *= 1.0;
+      res[ZDDLL] = dg*y*((w-1)*mean-y)/pt + SQR(res[ZDLL]);
+      return(LF_OK);
+    }
+    if (link==LIDENT)     /* lambda = 1/theta */
+    { res[ZDLL] *= -lb*lb;
+      res[ZDDLL] = dg*y*lb*lb*lb*(1+w-lb*y)/pt + SQR(res[ZDLL]);
+      return(LF_OK);
+    }
+  }
+  else
+  { if (y<0) WARN(("Negative Gamma observation"));
+    if (link==LLOG)
+    { res[ZLIK] = -lb*y+w*(1-th);
+      if (y>0) res[ZLIK] += w*log(y/w);
+      res[ZDLL] = lb*y-w;
+      res[ZDDLL]= lb*y;
+      return(LF_OK);
+    }
+    if (link==LINVER)
+    { res[ZLIK] = -lb*y+w-w*log(mean);
+      if (y>0) res[ZLIK] += w*log(y/w);
+      res[ZDLL] = -y+w*mean;
+      res[ZDDLL]= w*mean*mean;
+      return(LF_OK);
+    }
+    if (link==LIDENT)
+    { res[ZLIK] = -lb*y+w-w*log(mean);
+      if (y>0) res[ZLIK] += w*log(y/w);
+      res[ZDLL] = lb*lb*(y-w*mean);
+      res[ZDDLL]= lb*lb*lb*(2*y-w*mean);
+      return(LF_OK);
+    }
+  }
+  LERR(("link %d invalid for Gamma family",link));
+  return(LF_LNK);
+}
+
+void setfgamma(fam)
+family *fam;
+{ fam->deflink = LLOG;
+  fam->canlink = LINVER;
+  fam->vallink = gamma_vallink;
+  fam->family  = gamma_fam;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int gaus_vallink(link)
+int link;
+{ return((link==LIDENT) | (link==LLOG) | (link==LLOGIT));
+}
+
+int gaus_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double z, pz, dp;
+  if (link==LINIT)
+  { res[ZDLL] = w*y;
+    return(LF_OK);
+  }
+  z = y-mean;
+  if (cens)
+  { if (link!=LIDENT)
+    { LERR(("Link invalid for censored Gaussian family"));
+      return(LF_LNK);
+    }
+    pz = mut_pnorm(-z);
+    dp = ((z>6) ? ptail(-z) : exp(-z*z/2)/pz)/2.5066283;
+    res[ZLIK] = w*log(pz);
+    res[ZDLL] = w*dp;
+    res[ZDDLL]= w*dp*(dp-z);
+    return(LF_OK);
+  }
+  res[ZLIK] = -w*z*z/2; 
+  switch(link)
+  { case LIDENT:
+      res[ZDLL] = w*z;
+      res[ZDDLL]= w;
+      break;
+    case LLOG:
+      res[ZDLL] = w*z*mean;
+      res[ZDDLL]= w*mean*mean;
+      break;
+    case LLOGIT:
+      res[ZDLL] = w*z*mean*(1-mean);
+      res[ZDDLL]= w*mean*mean*(1-mean)*(1-mean);
+      break;
+    default:
+      LERR(("Invalid link for Gaussian family"));
+      return(LF_LNK);
+  }
+  return(LF_OK);
+}
+
+int gaus_check(sp,des,lfd)
+smpar *sp;
+design *des;
+lfdata *lfd;
+{ int i, ii;
+  if (fami(sp)->robust) return(LF_OK);
+  if (link(sp)==LIDENT)
+  { for (i=0; i<des->n; i++)
+    { ii = des->ind[i];
+      if (cens(lfd,ii)) return(LF_OK);
+    }
+    return(LF_DONE);
+  }
+  return(LF_OK);
+}
+
+void setfgauss(fam)
+family *fam;
+{ fam->deflink = LIDENT;
+  fam->canlink = LIDENT;
+  fam->vallink = gaus_vallink;
+  fam->family  = gaus_fam;
+  fam->pcheck  = gaus_check;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int geom_vallink(link)
+int link;
+{ return((link==LIDENT) | (link==LLOG));
+}
+
+int geom_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double p, pt, dp, p1;
+  if (link==LINIT)
+  { res[ZDLL] = MAX(y,0.0);
+    return(LF_OK);
+  }
+  p = 1/(1+mean);
+  if (cens) /* censored observation */
+  { if (y<=0)
+    { res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0;
+      return(LF_OK);
+    }
+    p1 = (link==LIDENT) ? -p*p : -p*(1-p);
+    pt = 1-ibeta(p,w,y);
+    dp = dbeta(p,w,y,0)/pt;
+    res[ZLIK] = log(pt);
+    res[ZDLL] = -dp*p1;
+    res[ZDDLL] = dp*dp*p1*p1;
+    if (link==LIDENT)
+      res[ZDDLL] += dp*p*p*p*(1+w*(1-p)-p*y)/(1-p);
+    else
+      res[ZDDLL] += dp*p*(1-p)*(w*(1-p)-p*y);
+    return(LF_OK);
+  }
+  else
+  { res[ZLIK] = (y+w)*log((y/w+1)/(mean+1));
+    if (y>0) res[ZLIK] += y*log(w*mean/y);
+    if (link==LLOG)
+    { res[ZDLL] = (y-w*mean)*p;
+      res[ZDDLL]= (y+w)*p*(1-p);
+      return(LF_OK);
+    }
+    if (link==LIDENT)
+    { res[ZDLL] = (y-w*mean)/(mean*(1+mean));
+      res[ZDDLL]= w/(mean*(1+mean));
+      return(LF_OK);
+    }
+  }
+  LERR(("link %d invalid for geometric family",link));
+  return(LF_LNK);
+}
+
+void setfgeom(fam)
+family *fam;
+{ fam->deflink = LLOG;
+  fam->canlink = LIDENT; /* this isn't correct. I haven't prog. canon */
+  fam->vallink = geom_vallink;
+  fam->family  = geom_fam;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+#define HUBERC 2.0
+
+double links_rs;
+int inllmix=0;
+
+/*
+ * lffamily("name") converts family names into a numeric value.
+ * typical usage is  fam(&lf->sp) = lffamily("gaussian");
+ * Note that family can be preceded by q and/or r for quasi, robust.
+ *
+ * link(&lf->sp) = lflink("log") does the same for the link function.
+ */
+#define NFAMILY 18
+static char *famil[NFAMILY] =
+  { "density", "ate",   "hazard",    "gaussian", "binomial",
+    "poisson", "gamma", "geometric", "circular", "obust", "huber",
+    "weibull", "cauchy","probab",    "logistic", "nbinomial",
+    "vonmises", "quant" };
+static int   fvals[NFAMILY] =
+  { TDEN,  TRAT,  THAZ,  TGAUS, TLOGT,
+    TPOIS, TGAMM, TGEOM, TCIRC, TROBT, TROBT,
+    TWEIB, TCAUC, TPROB, TLOGT, TGEOM, TCIRC, TQUANT };
+int lffamily(z)
+char *z;
+{ int quasi, robu, f;
+  quasi = robu = 0;
+  while ((z[0]=='q') | (z[0]=='r'))
+  { quasi |= (z[0]=='q');
+    robu  |= (z[0]=='r');
+    z++;
+  }
+  z[0] = tolower(z[0]);
+  f = pmatch(z,famil,fvals,NFAMILY,-1);
+  if ((z[0]=='o') | (z[0]=='a')) robu = 0;
+  if (f==-1)
+  { WARN(("unknown family %s",z));
+    f = TGAUS;
+  }
+  if (quasi) f += 64;
+  if (robu)  f += 128;
+  return(f);
+}
+
+#define NLINKS 8
+static char *ltype[NLINKS] = { "default", "canonical", "identity", "log",
+                          "logi",    "inverse",   "sqrt",     "arcsin" };
+static int   lvals[NLINKS] = { LDEFAU, LCANON, LIDENT, LLOG,
+                          LLOGIT, LINVER, LSQRT,  LASIN };
+int lflink(char *z)
+{ int f;
+  if (z==NULL) return(LDEFAU);
+  z[0] = tolower(z[0]);
+  f = pmatch(z, ltype, lvals, NLINKS, -1);
+  if (f==-1)
+  { WARN(("unknown link %s",z));
+    f = LDEFAU;
+  }
+  return(f);
+}
+
+int defaultlink(link,fam)
+int link;
+family *fam;
+{ if (link==LDEFAU) return(fam->deflink);
+  if (link==LCANON) return(fam->canlink);
+  return(link);
+}
+
+/*
+void robustify(res,rs)
+double *res, rs;
+{ double sc, z;
+  sc = rs*HUBERC;
+  if (res[ZLIK] > -sc*sc/2) return;
+  z = sqrt(-2*res[ZLIK]);
+  res[ZDDLL]= -sc*res[ZDLL]*res[ZDLL]/(z*z*z)+sc*res[ZDDLL]/z;
+  res[ZDLL]*= sc/z;
+  res[ZLIK] = sc*sc/2-sc*z;
+}
+*/
+void robustify(res,rs)
+double *res, rs;
+{ double sc, z;
+  sc = rs*HUBERC;
+  if (res[ZLIK] > -sc*sc/2)
+  { res[ZLIK] /= sc*sc;
+    res[ZDLL] /= sc*sc;
+    res[ZDDLL] /= sc*sc;
+    return;
+  }
+  z = sqrt(-2*res[ZLIK]);
+  res[ZDDLL]= (-sc*res[ZDLL]*res[ZDLL]/(z*z*z)+sc*res[ZDDLL]/z)/(sc*sc);
+  res[ZDLL]*= 1.0/(z*sc);
+  res[ZLIK] = 0.5-z/sc;
+}
+
+double lf_link(y,lin)
+double y;
+int lin;
+{ switch(lin)
+  { case LIDENT: return(y);
+    case LLOG:   return(log(y));
+    case LLOGIT: return(logit(y));
+    case LINVER: return(1/y);
+    case LSQRT:  return(sqrt(fabs(y)));
+    case LASIN:  return(asin(sqrt(y)));
+  }
+  LERR(("link: unknown link %d",lin));
+  return(0.0);
+}
+
+double invlink(th,lin)
+double th;
+int lin;
+{ switch(lin)
+  { case LIDENT: return(th);
+    case LLOG:   return(mut_exp(th));
+    case LLOGIT: return(expit(th));
+    case LINVER: return(1/th);
+    case LSQRT:  return(th*fabs(th));
+    case LASIN:  return(sin(th)*sin(th));
+    case LINIT:  return(0.0);
+  }
+  LERR(("invlink: unknown link %d",lin));
+  return(0.0);
+}
+
+/* the link and various related functions */
+int links(th,y,fam,link,res,c,w,rs)
+double th, y, *res, w, rs;
+int link, c;
+family *fam;
+{ double mean;
+  int st;
+
+  mean = res[ZMEAN] = invlink(th,link);
+  if (lf_error) return(LF_LNK);
+  links_rs = rs;
+/*  mut_printf("links: rs %8.5f\n",rs); */
+
+  st = fam->family(y,mean,th,link,res,c,w);
+
+  if (st!=LF_OK) return(st);
+  if (link==LINIT) return(st);
+  if (isrobust(fam)) robustify(res,rs);
+  return(st);
+}
+
+/*
+  stdlinks is a version of links when family, link, response e.t.c
+  all come from the standard places.
+*/
+int stdlinks(res,lfd,sp,i,th,rs)
+lfdata *lfd;
+smpar *sp;
+double th, rs, *res;
+int i;
+{
+  return(links(th,resp(lfd,i),fami(sp),link(sp),res,cens(lfd,i),prwt(lfd,i),rs));
+}
+
+/*
+ *  functions used in variance, skewness, kurtosis calculations
+ *  in scb corrections.
+ */
+
+double b2(th,tg,w)
+double th, w;
+int tg;
+{ double y;
+  switch(tg&63)
+  { case TGAUS: return(w);
+    case TPOIS: return(w*mut_exp(th));
+    case TLOGT:
+      y = expit(th);
+      return(w*y*(1-y));
+  }
+  LERR(("b2: invalid family %d",tg));
+  return(0.0);
+}
+
+double b3(th,tg,w)
+double th, w;
+int tg;
+{ double y;
+  switch(tg&63)
+  { case TGAUS: return(0.0);
+    case TPOIS: return(w*mut_exp(th));
+    case TLOGT:
+      y = expit(th);
+      return(w*y*(1-y)*(1-2*y));
+  }
+  LERR(("b3: invalid family %d",tg));
+  return(0.0);
+}
+
+double b4(th,tg,w)
+double th, w;
+int tg;
+{ double y;
+  switch(tg&63)
+  { case TGAUS: return(0.0);
+    case TPOIS: return(w*mut_exp(th));
+    case TLOGT:
+      y = expit(th); y = y*(1-y);
+      return(w*y*(1-6*y));
+  }
+  LERR(("b4: invalid family %d",tg));
+  return(0.0);
+}
+
+int def_check(sp,des,lfd)
+smpar *sp;
+design *des;
+lfdata *lfd;
+{ switch(link(sp))
+  { case LLOG: if (des->cf[0]>700) return(LF_OOB);
+               break;
+  }
+  return(LF_OK);
+}
+extern void setfdensity(), setfgauss(), setfbino(), setfpoisson();
+extern void setfgamma(), setfgeom(), setfcirc(), setfweibull();
+extern void setfrbino(), setfrobust(), setfcauchy(), setfquant();
+
+void setfamily(sp)
+smpar *sp;
+{ int tg, lnk;
+  family *f;
+
+  tg = fam(sp);
+  f = fami(sp);
+  f->quasi = tg&64;
+  f->robust = tg&128;
+  f->initial = reginit;
+  f->like = likereg;
+  f->pcheck = def_check;
+
+  switch(tg&63)
+  { case TDEN:
+    case THAZ:
+    case TRAT:	setfdensity(f); break;
+    case TGAUS: setfgauss(f); break;
+    case TLOGT: setfbino(f); break;
+    case TRBIN: setfrbino(f); break;
+    case TPROB:
+    case TPOIS: setfpoisson(f); break;
+    case TGAMM: setfgamma(f); break;
+    case TGEOM: setfgeom(f); break;
+    case TWEIB: setfweibull(f);
+    case TCIRC: setfcirc(f); break;
+    case TROBT: setfrobust(f); break;
+    case TCAUC: setfcauchy(f); break;
+    case TQUANT: setfquant(f); break;
+    default: LERR(("setfamily: unknown family %d",tg&63));
+             return;
+  }
+  
+  lnk = defaultlink(link(sp),f);
+  if (!f->vallink(lnk))
+  { WARN(("setfamily: invalid link %d - revert to default",link(sp)));
+    link(sp) = f->deflink;
+  }
+  else
+    link(sp) = lnk;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int pois_vallink(link)
+int link;
+{ return((link==LLOG) | (link==LIDENT) | (link==LSQRT));
+}
+
+int pois_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double wmu, pt, dp;
+  if (link==LINIT)
+  { res[ZDLL] = MAX(y,0.0);
+    return(LF_OK);
+  }
+  wmu = w*mean;
+  if (inllmix) y = w*y;
+  if (cens)
+  { if (y<=0)
+    { res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0.0;
+      return(LF_OK);
+    }
+    pt = igamma(wmu,y);
+    dp = dgamma(wmu,y,1.0,0)/pt;
+    res[ZLIK] = log(pt);
+/*
+ * res[ZDLL] = dp * w*dmu/dth
+ * res[ZDDLL]= -dp*(w*d2mu/dth2 + (y-1)/mu*(dmu/dth)^2) + res[ZDLL]^2
+ */
+    if (link==LLOG)
+    { res[ZDLL] = dp*wmu;
+      res[ZDDLL]= -dp*wmu*(y-wmu) + SQR(res[ZDLL]);
+      return(LF_OK);
+    }
+    if (link==LIDENT)
+    { res[ZDLL] = dp*w;
+      res[ZDDLL]= -dp*(y-1-wmu)*w/mean + SQR(res[ZDLL]);
+      return(LF_OK);
+    }
+    if (link==LSQRT)
+    { res[ZDLL] = dp*2*w*th;
+      res[ZDDLL]= -dp*w*(4*y-2-4*wmu) + SQR(res[ZDLL]);
+      return(LF_OK);
+  } }
+  if (link==LLOG)
+  { if (y<0) /* goon observation - delete it */
+    { res[ZLIK] = res[ZDLL] = res[ZDDLL] = 0;
+      return(LF_OK);
+    }
+    res[ZLIK] = res[ZDLL] = y-wmu;
+    if (y>0) res[ZLIK] += y*(th-log(y/w));
+    res[ZDDLL] = wmu;
+    return(LF_OK);
+  }
+  if (link==LIDENT)
+  { if ((mean<=0) && (y>0)) return(LF_BADP);
+    res[ZLIK] = y-wmu;
+    res[ZDLL] = -w;
+    res[ZDDLL] = 0;
+    if (y>0)
+    { res[ZLIK] += y*log(wmu/y);
+      res[ZDLL] += y/mean;
+      res[ZDDLL]= y/(mean*mean);
+    }
+    return(LF_OK);
+  }
+  if (link==LSQRT)
+  { if ((mean<=0) && (y>0)) return(LF_BADP);
+    res[ZLIK] = y-wmu;
+    res[ZDLL] = -2*w*th;
+    res[ZDDLL]= 2*w;
+    if (y>0)
+    { res[ZLIK] += y*log(wmu/y);
+      res[ZDLL] += 2*y/th;
+      res[ZDDLL]+= 2*y/mean;
+    }
+    return(LF_OK);
+  }
+  LERR(("link %d invalid for Poisson family",link));
+  return(LF_LNK);
+}
+
+void setfpoisson(fam)
+family *fam;
+{ fam->deflink = LLOG;
+  fam->canlink = LLOG;
+  fam->vallink = pois_vallink;
+  fam->family  = pois_fam;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+#define QTOL 1.0e-10
+extern int lf_status;
+static double q0;
+
+int quant_vallink(int link) { return(1); }
+
+int quant_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double z, p;
+  if (link==LINIT)
+  { res[ZDLL] = w*y;
+    return(LF_OK);
+  }
+p = 0.5; /* should be pen(sp) */
+  z = y-mean;
+  res[ZLIK] = (z<0) ? (w*z/p) : (-w*z/(1-p));
+  res[ZDLL] = (z<0) ? -w/p : w/(1-p);
+  res[ZDDLL]= w/(p*(1-p));
+  return(LF_OK);
+}
+
+int quant_check(sp,des,lfd)
+smpar *sp;
+design *des;
+lfdata *lfd;
+{ return(LF_DONE);
+}
+
+void setfquant(fam)
+family *fam;
+{ fam->deflink = LIDENT;
+  fam->canlink = LIDENT;
+  fam->vallink = quant_vallink;
+  fam->family  = quant_fam;
+  fam->pcheck  = quant_check;
+}
+
+/*
+ * cycling rule for choosing among ties.
+ */
+int tiecycle(ind,i0,i1,oi)
+int *ind, i0, i1, oi;
+{ int i, ii, im;
+  im = ind[i0];
+  for (i=i0+1; i<=i1; i++)
+  { ii = ind[i];
+    if (im<=oi)
+    { if ((ii<im) | (ii>oi)) im = ii;
+    }
+    else
+    { if ((ii<im) & (ii>oi)) im = ii;
+    }
+  }
+  return(im);
+}
+
+/*
+ * move coefficient vector cf, as far as possible, in direction dc.
+ */
+int movecoef(lfd,des,p,cf,dc,oi)
+lfdata *lfd;
+design *des;
+double p, *cf, *dc;
+int oi;
+{ int i, ii, im, i0, i1, j;
+  double *lb, *el, e, sp, sn, sw, sum1, sum2, tol1;
+
+  lb = des->th;
+  el = des->res;
+  sum1 = sum2 = 0.0;
+
+  sp = sn = sw = 0.0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    lb[ii] = innerprod(dc,d_xi(des,ii),des->p);
+    e = resp(lfd,ii) - innerprod(cf,d_xi(des,ii),des->p);
+    el[ii] = (fabs(lb[ii])<QTOL) ? 1e100 : e/lb[ii];
+    if (lb[ii]>0)
+      sp += prwt(lfd,ii)*wght(des,ii)*lb[ii];
+    else
+      sn -= prwt(lfd,ii)*wght(des,ii)*lb[ii];
+    sw += prwt(lfd,ii)*wght(des,ii);
+  }
+printf("sp %8.5f  sn %8.5f\n",sn,sp);
+/* if sn, sp are both zero, should return an LF_PF.
+ * but within numerical tolerance? what does it mean?
+ */
+  if (sn+sp <= QTOL*q0) { lf_status = LF_PF; return(0); }
+
+  sum1 = sp/(1-p) + sn/p;
+  tol1 = QTOL*(sp+sn);
+  mut_order(el,des->ind,0,des->n-1);
+
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    sum2 += prwt(lfd,ii)*wght(des,ii)*((lb[ii]>0) ? lb[ii]/p : -lb[ii]/(1-p) );
+    sum1 -= prwt(lfd,ii)*wght(des,ii)*((lb[ii]>0) ? lb[ii]/(1-p) : -lb[ii]/p );
+    if (sum1<=sum2+tol1)
+    {
+/* determine the range of ties [i0,i1]
+ *   el[ind[i0..i1]] = el[ind[i]].
+ *   if sum1==sum2, el[ind[i+1]]..el[ind[i1]]] = el[ind[i1]], else i1 = i.
+ */
+      i0 = i1 = i;
+      while ((i0>0) && (el[des->ind[i0-1]]==el[ii])) i0--;
+      while ((i1<des->n-1) && (el[des->ind[i1+1]]==el[ii])) i1++;
+      if (sum1>=sum2-tol1)
+        while ((i1<des->n-1) && (el[des->ind[i1+1]]==el[des->ind[i+1]])) i1++;
+
+      if (i0<i1) ii = tiecycle(des->ind,i0,i1,oi);
+      for (j=0; j<des->p; j++) cf[j] += el[ii]*dc[j];
+      return(ii);
+    }
+  }
+mut_printf("Big finddlt problem.\n");
+ii = des->ind[des->n-1];
+for (j=0; j<des->p; j++) cf[j] += el[ii]*dc[j];
+return(ii);
+}
+
+/*
+ * special version of movecoef for min/max.
+ */
+int movemin(lfd,des,f,cf,dc,oi)
+design *des;
+lfdata *lfd;
+double *cf, *dc, f;
+int oi;
+{ int i, ii, im, p, s, ssum;
+  double *lb, sum, lb0, lb1, z0, z1;
+
+  lb = des->th;
+  s = (f<=0.0) ? 1 : -1;
+
+/* first, determine whether move should be in positive or negative direction */
+  p = des->p;
+  sum = 0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    lb[ii] = innerprod(dc,d_xi(des,ii),des->p);
+    sum += prwt(lfd,ii)*wght(des,ii)*lb[ii];
+  }
+  if (fabs(sum) <= QTOL*q0)
+  { lf_status = LF_PF;
+    return(0);
+  }
+  ssum = (sum<=0.0) ? -1 : 1;
+  if (ssum != s)
+    for (i=0; i<p; i++) dc[i] = -dc[i];
+
+/* now, move positively. How far can we move? */
+  lb0 = 1.0e100; im = oi;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    lb[ii] = innerprod(dc,d_xi(des,ii),des->p); /* must recompute - signs! */
+    if (s*lb[ii]>QTOL) /* should have scale-free tolerance here */
+    { z0 = innerprod(cf,d_xi(des,ii),p);
+      lb1 = (resp(lfd,ii) - z0)/lb[ii];
+      if (lb1<lb0)
+      { if (fabs(lb1-lb0)<QTOL) /* cycle */
+        { if (im<=oi)
+          { if ((ii>oi) | (ii<im)) im = ii; }
+          else
+          { if ((ii>oi) & (ii<im)) im = ii; }
+        }
+        else
+        { im = ii; lb0 = lb1; }
+      }
+    }
+  }
+
+  for (i=0; i<p; i++) cf[i] = cf[i]+lb0*dc[i];
+  if (im==-1) lf_status = LF_PF;
+  return(im);
+}
+
+double qll(lfd,spr,des,cf)
+lfdata *lfd;
+smpar *spr;
+design *des;
+double *cf;
+{ int i, ii;
+  double th, sp, sn, p, e;
+
+  p = pen(spr);
+  sp = sn = 0.0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    th = innerprod(d_xi(des,ii),cf,des->p);
+    e = resp(lfd,ii)-th;
+    if (e<0) sn -= prwt(lfd,ii)*wght(des,ii)*e;
+    if (e>0) sp += prwt(lfd,ii)*wght(des,ii)*e;
+  }
+  if (p<=0.0) return((sn<QTOL) ? -sp : -1e300);
+  if (p>=1.0) return((sp<QTOL) ? -sn : -1e300);
+  return(-sp/(1-p)-sn/p);
+}
+
+/*
+ * running quantile smoother.
+ */
+void lfquantile(lfd,sp,des,maxit)
+lfdata *lfd;
+smpar *sp;
+design *des;
+int maxit;
+{ int i, ii, im, j, k, p, *ci, (*mover)();
+  double *cf, *db, *dc, *cm, f, q1, q2, l0;
+
+printf("in lfquantile\n");
+  f = pen(sp);
+  p = des->p;
+  cf = des->cf;
+  dc = des->oc;
+  db = des->ss;
+  setzero(cf,p);
+  setzero(dc,p);
+  cm = des->V;
+  setzero(cm,p*p);
+  ci = (int *)des->fix;
+
+  q1 = -qll(lfd,sp,des,cf);
+  if (q1==0.0) { lf_status = LF_PF; return; }
+  for (i=0; i<p; i++) cm[i*(p+1)] = 1;
+  mover = movecoef;
+  if ((f<=0.0) | (f>=1.0)) mover = movemin;
+
+  dc[0] = 1.0;
+  im = mover(lfd,des,f,cf,dc,-1);
+  if (lf_status != LF_OK) return;
+  ci[0] = im;
+printf("init const %2d\n",ci[0]);
+  q0 = -qll(lfd,sp,des,cf);
+  if (q0<QTOL*q1) { lf_status = LF_PF; return; }
+
+printf("loop 0\n"); fflush(stdout);
+  for (i=1; i<p; i++)
+  {
+printf("i %2d\n",i);
+    memcpy(&cm[(i-1)*p],d_xi(des,im),p*sizeof(double));
+    setzero(db,p);
+    db[i] = 1.0;
+    resproj(db,cm,dc,p,i);
+printf("call mover\n"); fflush(stdout);
+    im = mover(lfd,des,f,cf,dc,-1);
+    if (lf_status != LF_OK) return;
+printf("mover %2d\n",im); fflush(stdout);
+    ci[i] = im;
+  }
+printf("call qll\n"); fflush(stdout);
+  q1 = qll(lfd,sp,des,cf);
+
+printf("loop 1    %d %d %d %d\n",ci[0],ci[1],ci[2],ci[3]); fflush(stdout);
+  for (k=0; k<maxit; k++)
+  { for (i=0; i<p; i++)
+    { for (j=0; j<p; j++)
+        if (j!=i) memcpy(&cm[(j-(j>i))*p],d_xi(des,ci[j]),p*sizeof(double));
+      memcpy(db,d_xi(des,ci[i]),p*sizeof(double));
+      resproj(db,cm,dc,p,p-1);
+printf("call mover\n"); fflush(stdout);
+      im = mover(lfd,des,f,cf,dc,ci[i]);
+      if (lf_status != LF_OK) return;
+printf("mover %2d\n",im); fflush(stdout);
+      ci[i] = im;
+    }
+    q2 = qll(lfd,sp,des,cf);
+/*
+ * convergence: require no change -- reasonable, since discrete?
+ * remember we're maximizing, and q's are negative.
+ */
+     if (q2 <= q1) return;
+     q1 = q2;
+  }
+printf("loop 2\n");
+  mut_printf("Warning: lfquantile not converged.\n");
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+extern double links_rs;
+
+int robust_vallink(link)
+int link;
+{ return(link==LIDENT);
+}
+
+int robust_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double z, sw;
+  if (link==LINIT)
+  { res[ZDLL] = w*y;
+    return(LF_OK);
+  }
+  sw = (w==1.0) ? 1.0 : sqrt(w); /* don't want unnecess. sqrt! */
+  z = sw*(y-mean)/links_rs;
+  res[ZLIK] = (fabs(z)<HUBERC) ? -z*z/2 : HUBERC*(HUBERC/2.0-fabs(z));
+  if (z< -HUBERC)
+  { res[ZDLL] = -sw*HUBERC/links_rs;
+    res[ZDDLL]= 0.0;
+    return(LF_OK);
+  }
+  if (z> HUBERC)
+  { res[ZDLL] = sw*HUBERC/links_rs;
+    res[ZDDLL]= 0.0;
+    return(LF_OK);
+  }
+  res[ZDLL] =  sw*z/links_rs;
+  res[ZDDLL] = w/(links_rs*links_rs);
+  return(LF_OK);
+}
+
+int cauchy_fam(y,p,th,link,res,cens,w)
+double y, p, th, *res, w;
+int link, cens;
+{ double z;
+  if (link!=LIDENT)
+  { LERR(("Invalid link in famcauc"));
+    return(LF_LNK);
+  }
+  z = w*(y-th)/links_rs;
+  res[ZLIK] = -log(1+z*z);
+  res[ZDLL] = 2*w*z/(links_rs*(1+z*z));
+  res[ZDDLL] = 2*w*w*(1-z*z)/(links_rs*links_rs*(1+z*z)*(1+z*z));
+  return(LF_OK);
+}
+
+extern double lf_tol;
+int robust_init(lfd,des,sp)
+lfdata *lfd;
+design *des;
+smpar *sp;
+{ int i;
+  for (i=0; i<des->n; i++)
+  des->res[i] = resp(lfd,(int)des->ind[i]) - base(lfd,(int)des->ind[i]);
+  des->cf[0] = median(des->res,des->n);
+  for (i=1; i<des->p; i++) des->cf[i] = 0.0;
+  lf_tol = 1.0e-6;
+  return(LF_OK);
+}
+
+void setfrobust(fam)
+family *fam;
+{ fam->deflink = LIDENT;
+  fam->canlink = LIDENT;
+  fam->vallink = robust_vallink;
+  fam->family  = robust_fam;
+  fam->initial = robust_init;
+  fam->robust = 0;
+}
+
+void setfcauchy(fam)
+family *fam;
+{ fam->deflink = LIDENT;
+  fam->canlink = LIDENT;
+  fam->vallink = robust_vallink;
+  fam->family  = cauchy_fam;
+  fam->initial = robust_init;
+  fam->robust = 0;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int weibull_vallink(link)
+int link;
+{ return((link==LIDENT) | (link==LLOG) | (link==LLOGIT));
+}
+
+int weibull_fam(y,mean,th,link,res,cens,w)
+double y, mean, th, *res, w;
+int link, cens;
+{ double yy;
+  yy = pow(y,w);
+  if (link==LINIT)
+  { res[ZDLL] = MAX(yy,0.0);
+    return(LF_OK);
+  }
+  if (cens)
+  { res[ZLIK] = -yy/mean;
+    res[ZDLL] = res[ZDDLL] = yy/mean;
+    return(LF_OK);
+  }
+  res[ZLIK] = 1-yy/mean-th;
+  if (yy>0) res[ZLIK] += log(w*yy);
+  res[ZDLL] = -1+yy/mean;
+  res[ZDDLL]= yy/mean;
+  return(LF_OK);
+}
+
+void setfweibull(fam)
+family *fam;
+{ fam->deflink = LLOG;
+  fam->canlink = LLOG;
+  fam->vallink = weibull_vallink;
+  fam->family  = weibull_fam;
+  fam->robust = 0;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+  Functions implementing the adaptive bandwidth selection.
+  Will make the final call to nbhd() to set smoothing weights
+  for selected bandwidth, But will **not** make the
+  final call to locfit().
+*/
+
+#include "locf.h"
+
+static double hmin;
+
+#define NACRI 5
+static char *atype[NACRI] = { "none", "cp", "ici", "mindex", "ok" };
+static int   avals[NACRI] = { ANONE, ACP, AKAT, AMDI, AOK };
+int lfacri(char *z)
+{ return(pmatch(z, atype, avals, NACRI, ANONE));
+}
+
+double adcri(lk,t0,t2,pen)
+double lk, t0, t2, pen;
+{ double y;
+/* return(-2*lk/(t0*exp(pen*log(1-t2/t0)))); */
+  /* return((-2*lk+pen*t2)/t0); */
+  y = (MAX(-2*lk,t0-t2)+pen*t2)/t0;
+  return(y);
+}
+
+double mmse(lfd,sp,dv,des)
+lfdata *lfd;
+smpar *sp;
+deriv *dv;
+design *des;
+{ int i, ii, j, p, p1;
+  double sv, sb, *l, dp;
+
+  l = des->wd;
+  wdiag(lfd, sp, des,l,dv,0,1,0);
+  sv = sb = 0;
+  p = npar(sp);
+  for (i=0; i<des->n; i++)
+  { sv += l[i]*l[i];
+    ii = des->ind[i];
+    dp = dist(des,ii);
+    for (j=0; j<deg(sp); j++) dp *= dist(des,ii);
+    sb += fabs(l[i])*dp;
+  }
+  p1 = factorial(deg(sp)+1);
+printf("%8.5f sv %8.5f  sb %8.5f  %8.5f\n",des->h,sv,sb,sv+sb*sb*pen(sp)*pen(sp)/(p1*p1));
+  return(sv+sb*sb*pen(sp)*pen(sp)/(p1*p1));
+}
+
+static double mcp, clo, cup;
+
+/*
+  Initial bandwidth will be (by default)
+  k-nearest neighbors for k small, just large enough to
+  get defined estimate (unless user provided nonzero nn or fix-h components)
+*/
+
+int ainitband(lfd,sp,dv,des)
+lfdata *lfd;
+smpar *sp;
+deriv *dv;
+design *des;
+{ int lf_status, p, z, cri, noit, redo;
+  double ho, t[6];
+
+  if (lf_debug >= 2) mut_printf("ainitband:\n");
+  p = des->p;
+  cri = acri(sp);
+  noit = (cri!=AOK);
+  z = (int)(lfd->n*nn(sp));
+  if ((noit) && (z<p+2)) z = p+2;
+  redo = 0; ho = -1;
+  do
+  { 
+    nbhd(lfd,des,z,redo,sp);
+    if (z<des->n) z = des->n;
+    if (des->h>ho) lf_status = locfit(lfd,des,sp,noit,0,0);
+    z++;
+    redo = 1;
+  } while ((z<=lfd->n) && ((des->h==0)||(lf_status!=LF_OK)));
+  hmin = des->h;
+
+  switch(cri)
+  { case ACP:
+      local_df(lfd,sp,des,t);
+      mcp = adcri(des->llk,t[0],t[2],pen(sp));
+      return(lf_status);
+    case AKAT:
+      local_df(lfd,sp,des,t);
+      clo = des->cf[0]-pen(sp)*t[5];
+      cup = des->cf[0]+pen(sp)*t[5];
+      return(lf_status);
+    case AMDI:
+      mcp = mmse(lfd,sp,dv,des);
+      return(lf_status);
+    case AOK: return(lf_status);
+  }
+  LERR(("aband1: unknown criterion"));
+  return(LF_ERR);
+}
+
+/*
+  aband2 increases the initial bandwidth until lack of fit results,
+  or the fit is close to a global fit. Increase h by 1+0.3/d at
+  each iteration.
+*/
+
+double aband2(lfd,sp,dv,des,h0)
+lfdata *lfd;
+smpar *sp;
+deriv *dv;
+design *des;
+double h0;
+{ double t[6], h1, nu1, cp, ncp, tlo, tup;
+  int d, inc, n, p, done;
+
+  if (lf_debug >= 2) mut_printf("aband2:\n");
+  d = lfd->d; n = lfd->n; p = npar(sp);
+  h1 = des->h = h0;
+  done = 0; nu1 = 0.0;
+  inc = 0; ncp = 0.0;
+  while ((!done) & (nu1<(n-p)*0.95))
+  { fixh(sp) = (1+0.3/d)*des->h;
+    nbhd(lfd,des,0,1,sp);
+    if (locfit(lfd,des,sp,1,0,0) > 0) WARN(("aband2: failed fit"));
+    local_df(lfd,sp,des,t);
+    nu1 = t[0]-t[2]; /* tr(A) */
+    switch(acri(sp))
+    { case AKAT:
+        tlo = des->cf[0]-pen(sp)*t[5];
+        tup = des->cf[0]+pen(sp)*t[5];
+/* mut_printf("h %8.5f  tlo %8.5f  tup %8.5f\n",des->h,tlo,tup); */
+        done = ((tlo>cup) | (tup<clo));
+        if (!done)
+        { clo = MAX(clo,tlo);
+          cup = MIN(cup,tup);
+          h1 = des->h;
+        }
+        break;
+      case ACP:
+        cp = adcri(des->llk,t[0],t[2],pen(sp));
+/* mut_printf("h %8.5f  lk %8.5f  t0 %8.5f  t2 %8.5f  cp %8.5f\n",des->h,des->llk,t[0],t[2],cp); */
+        if (cp<mcp) { mcp = cp; h1 = des->h; }
+        if (cp>=ncp) inc++; else inc = 0;
+        ncp = cp;
+        done = (inc>=10) | ((inc>=3) & ((t[0]-t[2])>=10) & (cp>1.5*mcp));
+        break;
+      case AMDI:
+        cp = mmse(lfd,sp,dv,des);
+        if (cp<mcp) { mcp = cp; h1 = des->h; }
+        if (cp>ncp) inc++; else inc = 0;
+        ncp = cp;
+        done = (inc>=3);
+        break;
+    }
+  }
+  return(h1);
+}
+
+/*
+  aband3 does a finer search around best h so far. Try
+  h*(1-0.2/d), h/(1-0.1/d), h*(1+0.1/d), h*(1+0.2/d)
+*/
+double aband3(lfd,sp,dv,des,h0)
+lfdata *lfd;
+smpar *sp;
+deriv *dv;
+design *des;
+double h0;
+{ double t[6], h1, cp, tlo, tup;
+  int i, i0, d, n;
+
+  if (lf_debug >= 2) mut_printf("aband3:\n");
+  d = lfd->d; n = lfd->n;
+  h1 = h0;
+  i0 = (acri(sp)==AKAT) ? 1 : -2;
+  if (h0==hmin) i0 = 1;
+
+  for (i=i0; i<=2; i++)
+  { if (i==0) i++;
+    fixh(sp) = h0*(1+0.1*i/d);
+    nbhd(lfd,des,0,1,sp);
+    if (locfit(lfd,des,sp,1,0,0) > 0) WARN(("aband3: failed fit"));
+    local_df(lfd,sp,des,t);
+    switch (acri(sp))
+    { case AKAT:
+        tlo = des->cf[0]-pen(sp)*t[5];
+        tup = des->cf[0]+pen(sp)*t[5];
+        if ((tlo>cup) | (tup<clo)) /* done */
+          i = 2;
+        else
+        { h1 = des->h;
+          clo = MAX(clo,tlo);
+          cup = MIN(cup,tup);
+        }
+        break;
+      case ACP:
+        cp = adcri(des->llk,t[0],t[2],pen(sp));
+        if (cp<mcp) { mcp = cp; h1 = des->h; }
+        else
+        { if (i>0) i = 2; }
+        break;
+      case AMDI:
+        cp = mmse(lfd,sp,dv,des);
+        if (cp<mcp) { mcp = cp; h1 = des->h; }
+        else
+        { if (i>0) i = 2; }
+    }
+  }
+  return(h1);
+}
+
+int alocfit(lfd,sp,dv,des,cv)
+lfdata *lfd;
+smpar *sp;
+deriv *dv;
+design *des;
+int cv;
+{ int lf_status;
+  double h0;
+
+  lf_status = ainitband(lfd,sp,dv,des);
+  if (lf_error) return(lf_status);
+  if (acri(sp) == AOK) return(lf_status);
+
+  h0 = fixh(sp);
+  fixh(sp) = aband2(lfd,sp,dv,des,des->h);
+  fixh(sp) = aband3(lfd,sp,dv,des,fixh(sp));
+  nbhd(lfd,des,0,1,sp);
+  lf_status = locfit(lfd,des,sp,0,0,cv);
+  fixh(sp) = h0;
+
+  return(lf_status);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *   Evaluate the locfit fitting functions.
+ *     calcp(sp,d)
+ *       calculates the number of fitting functions.
+ *     makecfn(sp,des,dv,d)
+ *       makes the coef.number vector.
+ *     fitfun(lfd, sp, x,t,f,dv)
+ *       lfd is the local fit structure.
+ *       sp  smoothing parameter structure.
+ *       x is the data point.
+ *       t is the fitting point.
+ *       f is a vector to return the results.
+ *       dv derivative structure.
+ *     designmatrix(lfd, sp, des)
+ *       is a wrapper for fitfun to build the design matrix.
+ *
+ */
+
+#include "locf.h"
+
+int calcp(sp,d)
+smpar *sp;
+int d;
+{ int i, k;
+
+  if (ubas(sp)) return(npar(sp));
+
+  switch (kt(sp))
+  { case KSPH:
+    case KCE:
+      k = 1;
+      for (i=1; i<=deg(sp); i++) k = k*(d+i)/i;
+      return(k);
+    case KPROD: return(d*deg(sp)+1);
+    case KLM: return(d);
+    case KZEON: return(1);
+  }
+  LERR(("calcp: invalid kt %d",kt(sp)));
+  return(0);
+}
+
+int coefnumber(dv,kt,d,deg)
+int kt, d, deg;
+deriv *dv;
+{ int d0, d1, t;
+
+  if (d==1)
+  { if (dv->nd<=deg) return(dv->nd);
+    return(-1);
+  }
+
+  if (dv->nd==0) return(0);
+  if (deg==0) return(-1);
+  if (dv->nd==1) return(1+dv->deriv[0]);
+  if (deg==1) return(-1);
+  if (kt==KPROD) return(-1);
+
+  if (dv->nd==2)
+  { d0 = dv->deriv[0]; d1 = dv->deriv[1];
+    if (d0<d1) { t = d0; d0 = d1; d1 = t; }
+    return((d+1)*(d0+1)-d0*(d0+3)/2+d1);
+  }
+  if (deg==2) return(-1);
+
+  LERR(("coefnumber not programmed for nd>=3"));
+  return(-1);
+}
+
+void makecfn(sp,des,dv,d)
+smpar *sp;
+design *des;
+deriv *dv;
+int d;
+{ int i, nd;
+  
+  nd = dv->nd;
+
+  des->cfn[0] = coefnumber(dv,kt(sp),d,deg(sp));
+  des->ncoef = 1;
+  if (nd >= deg(sp)) return;
+  if (kt(sp)==KZEON) return;
+
+  if (d>1)
+  { if (nd>=2) return;
+    if ((nd>=1) && (kt(sp)==KPROD)) return;
+  }
+
+  dv->nd = nd+1;
+  for (i=0; i<d; i++)
+  { dv->deriv[nd] = i;
+    des->cfn[i+1] = coefnumber(dv,kt(sp),d,deg(sp));
+  }
+  dv->nd = nd;
+
+  des->ncoef = 1+d;
+}
+
+void fitfunangl(dx,ff,sca,cd,deg)
+double dx, *ff, sca;
+int deg, cd;
+{
+  if (deg>=3) WARN(("Can't handle angular model with deg>=3"));
+
+  switch(cd)
+  { case 0:
+      ff[0] = 1;
+      ff[1] = sin(dx/sca)*sca;
+      ff[2] = (1-cos(dx/sca))*sca*sca;
+      return;
+    case 1:
+      ff[0] = 0;
+      ff[1] = cos(dx/sca);
+      ff[2] = sin(dx/sca)*sca;
+      return;
+    case 2:
+      ff[0] = 0;
+      ff[1] = -sin(dx/sca)/sca;
+      ff[2] = cos(dx/sca);
+      return;
+    default: WARN(("Can't handle angular model with >2 derivs"));
+  }
+}
+
+void fitfun(lfd,sp,x,t,f,dv)
+lfdata *lfd;
+smpar *sp;
+double *x, *t, *f;
+deriv *dv;
+{ int d, deg, nd, m, i, j, k, ct_deriv[MXDIM];
+  double ff[MXDIM][1+MXDEG], dx[MXDIM], *xx[MXDIM];
+
+  if (ubas(sp))
+  { for (i=0; i<lfd->d; i++) xx[i] = &x[i];
+    i = 0;
+    sp->vbasis(xx,t,1,lfd->d,1,npar(sp),f);
+    return;
+  }
+
+  d = lfd->d;
+  deg = deg(sp);
+  m = 0;
+  nd = (dv==NULL) ? 0 : dv->nd;
+
+  if (kt(sp)==KZEON)
+  { f[0] = 1.0;
+    return;
+  }
+
+  if (kt(sp)==KLM)
+  { for (i=0; i<d; i++) f[m++] = x[i];
+    return;
+  }
+
+  f[m++] = (nd==0);
+  if (deg==0) return;
+
+  for (i=0; i<d; i++)
+  { ct_deriv[i] = 0;
+    dx[i] = (t==NULL) ? x[i] : x[i]-t[i];
+  }
+  for (i=0; i<nd; i++) ct_deriv[dv->deriv[i]]++;
+
+  for (i=0; i<d; i++)
+  { switch(lfd->sty[i])
+    {
+      case STANGL:
+        fitfunangl(dx[i],ff[i],lfd->sca[i],ct_deriv[i],deg(sp));
+        break;
+      default:
+        for (j=0; j<ct_deriv[i]; j++) ff[i][j] = 0.0;
+        ff[i][ct_deriv[i]] = 1.0;
+        for (j=ct_deriv[i]+1; j<=deg; j++)
+          ff[i][j] = ff[i][j-1]*dx[i]/(j-ct_deriv[i]);
+    }
+  }
+
+/*
+ *  Product kernels. Note that if ct_deriv[i] != nd, that implies
+ *  there is differentiation wrt another variable, and all components
+ *  involving x[i] are 0.
+ */
+  if ((d==1) || (kt(sp)==KPROD))
+  { for (j=1; j<=deg; j++)
+      for (i=0; i<d; i++)
+        f[m++] = (ct_deriv[i]==nd) ? ff[i][j] : 0.0;
+    return;
+  }
+
+/*
+ *  Spherical kernels with the full polynomial basis.
+ *  Presently implemented up to deg=3.
+ */
+  for (i=0; i<d; i++)
+    f[m++] = (ct_deriv[i]==nd) ? ff[i][1] : 0.0;
+  if (deg==1) return;
+
+  for (i=0; i<d; i++)
+  {
+    /* xi^2/2 terms. */
+    f[m++] = (ct_deriv[i]==nd) ? ff[i][2] : 0.0;
+
+    /* xi xj terms */
+    for (j=i+1; j<d; j++)
+      f[m++] = (ct_deriv[i]+ct_deriv[j]==nd) ? ff[i][1]*ff[j][1] : 0.0;
+  }
+  if (deg==2) return;
+
+  for (i=0; i<d; i++)
+  { 
+    /* xi^3/6 terms */
+    f[m++] = (ct_deriv[i]==nd) ? ff[i][3] : 0.0;
+
+    /* xi^2/2 xk terms */
+    for (k=i+1; k<d; k++)
+      f[m++] = (ct_deriv[i]+ct_deriv[k]==nd) ? ff[i][2]*ff[k][1] : 0.0;
+
+    /* xi xj xk terms */
+    for (j=i+1; j<d; j++)
+    { f[m++] = (ct_deriv[i]+ct_deriv[j]==nd) ? ff[i][1]*ff[j][2] : 0.0;
+      for (k=j+1; k<d; k++)
+        f[m++] = (ct_deriv[i]+ct_deriv[j]+ct_deriv[k]==nd) ?
+                    ff[i][1]*ff[j][1]*ff[k][1] : 0.0;
+    }
+  }
+  if (deg==3) return;
+
+  LERR(("fitfun: can't handle deg=%d for spherical kernels",deg));
+}
+
+/*
+ *  Build the design matrix. Assumes des->ind contains the indices of
+ *  the required data points; des->n the number of points; des->xev
+ *  the fitting point.
+ */
+void designmatrix(lfd,sp,des)
+lfdata *lfd;
+smpar *sp;
+design *des;
+{ int i, ii, j, p;
+  double *X, u[MXDIM];
+
+  X = d_x(des);
+  p = des->p;
+
+  if (ubas(sp))
+  {
+    sp->vbasis(lfd->x,des->xev,lfd->n,lfd->d,des->n,p,X);
+    return;
+  }
+
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    for (j=0; j<lfd->d; j++) u[j] = datum(lfd,j,ii);
+    fitfun(lfd,sp,u,des->xev,&X[ii*p],NULL);
+  }
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *
+ *  Functions for determining bandwidth; smoothing neighborhood
+ *  and smoothing weights.
+ */
+
+#include "locf.h"
+
+double rho(x,sc,d,kt,sty) /* ||x|| for appropriate distance metric */
+double *x, *sc;
+int d, kt, *sty;
+{ double rhoi[MXDIM], s;
+  int i;
+  for (i=0; i<d; i++)
+  { if (sty!=NULL)
+    { switch(sty[i])
+      { case STANGL:  rhoi[i] = 2*sin(x[i]/(2*sc[i])); break;
+        case STCPAR: rhoi[i] = 0; break;
+        default: rhoi[i] = x[i]/sc[i];
+    } }
+    else rhoi[i] = x[i]/sc[i];
+  }
+
+  if (d==1) return(fabs(rhoi[0]));
+
+  s = 0;
+  if (kt==KPROD)
+  { for (i=0; i<d; i++)
+    { rhoi[i] = fabs(rhoi[i]);
+      if (rhoi[i]>s) s = rhoi[i];
+    }
+    return(s);
+  }
+
+  if (kt==KSPH)
+  { for (i=0; i<d; i++)
+      s += rhoi[i]*rhoi[i];
+    return(sqrt(s));
+  }
+
+  LERR(("rho: invalid kt"));
+  return(0.0);
+}
+
+double kordstat(x,k,n,ind)
+double *x;
+int k, n, *ind;
+{ int i, i0, i1, l, r;
+  double piv;
+  if (k<1) return(0.0);
+  i0 = 0; i1 = n-1;
+  while (1)
+  { piv = x[ind[(i0+i1)/2]];
+    l = i0; r = i1;
+    while (l<=r)
+    { while ((l<=i1) && (x[ind[l]]<=piv)) l++;
+      while ((r>=i0) && (x[ind[r]]>piv)) r--;
+      if (l<=r) ISWAP(ind[l],ind[r]);
+    } /* now, x[ind[i0..r]] <= piv < x[ind[l..i1]] */
+    if (r<k-1) i0 = l;  /* go right */
+    else /* put pivots in middle */
+    { for (i=i0; i<=r; )
+        if (x[ind[i]]==piv) { ISWAP(ind[i],ind[r]); r--; }
+        else i++;
+      if (r<k-1) return(piv);
+      i1 = r;
+    }
+  }
+}
+
+/* check if i'th data point is in limits */
+int inlim(lfd,i)
+lfdata *lfd;
+int i;
+{ int d, j, k;
+  double *xlim;
+
+  xlim = lfd->xl;
+  d = lfd->d;
+  k = 1;
+  for (j=0; j<d; j++)
+  { if (xlim[j]<xlim[j+d])
+      k &= ((datum(lfd,j,i)>=xlim[j]) & (datum(lfd,j,i)<=xlim[j+d]));
+  }
+  return(k);
+}
+
+double compbandwid(di,ind,x,n,d,nn,fxh)
+double *di, *x, fxh;
+int n, d, nn, *ind;
+{ int i;
+  double nnh;
+
+  if (nn==0) return(fxh);
+
+  if (nn<n)
+    nnh = kordstat(di,nn,n,ind);
+  else
+  { nnh = 0;
+    for (i=0; i<n; i++) nnh = MAX(nnh,di[i]);
+    nnh = nnh*exp(log(1.0*nn/n)/d);
+  }
+  return(MAX(fxh,nnh));
+}
+
+/*
+  fast version of nbhd for ordered 1-d data
+*/
+void nbhd1(lfd,sp,des,k)
+lfdata *lfd;
+smpar *sp;
+design *des;
+int k;
+{ double x, h, *xd, sc;
+  int i, l, r, m, n, z;
+
+  n = lfd->n;
+  x = des->xev[0];
+  xd = dvari(lfd,0);
+  sc = lfd->sca[0];
+
+  /* find closest data point to x */
+  if (x<=xd[0]) z = 0;
+  else
+  if (x>=xd[n-1]) z = n-1;
+  else
+  { l = 0; r = n-1;
+    while (r-l>1)
+    { z = (r+l)/2;
+      if (xd[z]>x) r = z;
+              else l = z;
+    }
+    /* now, xd[0..l] <= x < x[r..n-1] */
+    if ((x-xd[l])>(xd[r]-x)) z = r; else z = l;
+  }
+  /* closest point to x is xd[z] */
+
+  if (nn(sp)<0)  /* user bandwidth */
+    h = sp->vb(des->xev);
+  else
+  { if (k>0) /* set h to nearest neighbor bandwidth */
+    { l = r = z;
+      if (l==0) r = k-1;
+      if (r==n-1) l = n-k;
+      while (r-l<k-1)
+      { if ((x-xd[l-1])<(xd[r+1]-x)) l--; else r++;
+        if (l==0) r = k-1;
+        if (r==n-1) l = n-k;
+      }
+      h = x-xd[l];
+      if (h<xd[r]-x) h = xd[r]-x;
+    }
+    else h = 0;
+    h /= sc;
+    if (h<fixh(sp)) h = fixh(sp);
+  }
+
+  m = 0;
+  if (xd[z]>x) z--; /* so xd[z]<=x */
+  /* look left */
+  for (i=z; i>=0; i--) if (inlim(lfd,i))
+  { dist(des,i) = (x-xd[i])/sc;
+    wght(des,i) = weight(lfd, sp, &xd[i], &x, h, 1, dist(des,i));
+    if (wght(des,i)>0)
+    { des->ind[m] = i;
+      m++; 
+    } else i = 0;
+  }
+  /* look right */
+  for (i=z+1; i<n; i++) if (inlim(lfd,i))
+  { dist(des,i) = (xd[i]-x)/sc;
+    wght(des,i) = weight(lfd, sp, &xd[i], &x, h, 1, dist(des,i));
+    if (wght(des,i)>0)
+    { des->ind[m] = i;
+      m++; 
+    } else i = n;
+  }
+
+  des->n = m;
+  des->h = h;
+}
+
+void nbhd_zeon(lfd,des)
+lfdata *lfd;
+design *des;
+{ int i, j, m, eq;
+
+  m = 0;
+  for (i=0; i<lfd->n; i++)
+  { eq = 1;
+    for (j=0; j<lfd->d; j++) eq = eq && (des->xev[j] == datum(lfd,j,i));
+    if (eq)
+    { wght(des,i) = 1;
+      des->ind[m] = i;
+      m++;
+    }
+  }
+  des->n = m;
+  des->h = 1.0;
+}
+
+void nbhd(lfd,des,nn,redo,sp)
+lfdata *lfd;
+design *des;
+int redo, nn;
+smpar *sp;
+{ int d, i, j, m, n;
+  double h, u[MXDIM];
+
+  if (lf_debug>1) mut_printf("nbhd: nn %d  fixh %8.5f\n",nn,fixh(sp));
+  
+  d = lfd->d; n = lfd->n;
+
+  if (ker(sp)==WPARM)
+  { for (i=0; i<n; i++)
+    { wght(des,i) = 1.0;
+      des->ind[i] = i;
+    }
+    des->n = n;
+    return;
+  }
+
+  if (kt(sp)==KZEON)
+  { nbhd_zeon(lfd,des);
+    return;
+  }
+
+  if (kt(sp)==KCE)
+  { des->h = 0.0;
+    return;
+  }
+
+  /* ordered 1-dim; use fast searches */
+  if ((nn<=n) & (lfd->ord) & (ker(sp)!=WMINM) & (lfd->sty[0]!=STANGL))
+  { nbhd1(lfd,sp,des,nn);
+    return;
+  }
+
+  if (!redo)
+  { for (i=0; i<n; i++)
+    { for (j=0; j<d; j++) u[j] = datum(lfd,j,i)-des->xev[j];
+      dist(des,i) = rho(u,lfd->sca,d,kt(sp),lfd->sty);
+      des->ind[i] = i;
+    }
+  }
+  else
+    for (i=0; i<n; i++) des->ind[i] = i;
+
+  if (ker(sp)==WMINM)
+  { des->h = minmax(lfd,des,sp);
+    return;
+  }
+
+  if (nn<0)
+    h = sp->vb(des->xev);
+  else
+    h = compbandwid(des->di,des->ind,des->xev,n,lfd->d,nn,fixh(sp));
+  m = 0;
+  for (i=0; i<n; i++) if (inlim(lfd,i))
+  { for (j=0; j<d; j++) u[j] = datum(lfd,j,i);
+    wght(des,i) = weight(lfd, sp, u, des->xev, h, 1, dist(des,i));
+    if (wght(des,i)>0)
+    { des->ind[m] = i;
+      m++;
+    }
+  }
+  des->n = m;
+  des->h = h;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *   This file includes functions to solve for the scale estimate in
+ *   local robust regression and likelihood. The main entry point is
+ *   lf_robust(lfd,sp,des,mxit),
+ *   called from the locfit() function.
+ *
+ *   The update_rs(x) accepts a residual scale x as the argument (actually,
+ *   it works on the log-scale). The function computes the local fit
+ *   assuming this residual scale, and re-estimates the scale from this
+ *   new fit. The final solution satisfies the fixed point equation
+ *   update_rs(x)=x. The function lf_robust() automatically calls
+ *   update_rs() through the fixed point iterations.
+ *
+ *   The estimation of the scale from the fit is based on the sqrt of
+ *   the median deviance of observations with non-zero weights (in the
+ *   gaussian case, this is the median absolute residual).
+ *
+ *   TODO:
+ *     Should use smoothing weights in the median.
+ */
+
+#include "locf.h"
+
+extern int lf_status;
+double robscale;
+
+static lfdata *rob_lfd;
+static smpar *rob_sp;
+static design *rob_des;
+static int rob_mxit;
+
+double median(x,n)
+double *x;
+int n;
+{ int i, j, lt, eq, gt;
+  double lo, hi, s;
+  lo = hi = x[0];
+  for (i=0; i<n; i++)
+  { lo = MIN(lo,x[i]);
+    hi = MAX(hi,x[i]);
+  }
+  if (lo==hi) return(lo);
+  lo -= (hi-lo);
+  hi += (hi-lo);
+  for (i=0; i<n; i++)
+  { if ((x[i]>lo) & (x[i]<hi))
+    { s = x[i]; lt = eq = gt = 0;
+      for (j=0; j<n; j++)
+      { lt += (x[j]<s);
+        eq += (x[j]==s);
+        gt += (x[j]>s);
+      }
+      if ((2*(lt+eq)>n) && (2*(gt+eq)>n)) return(s);
+      if (2*(lt+eq)<=n) lo = s;
+      if (2*(gt+eq)<=n) hi = s;
+    }
+  }
+  return((hi+lo)/2);
+}
+
+double nrobustscale(lfd,sp,des,rs)
+lfdata *lfd;
+smpar *sp;
+design *des;
+double rs;
+{ int i, ii, p;
+  double link[LLEN], sc, sd, sw, e;
+  p = des->p; sc = sd = sw = 0.0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    fitv(des,ii) = base(lfd,ii)+innerprod(des->cf,d_xi(des,ii),p);
+    e = resp(lfd,ii)-fitv(des,ii);
+    stdlinks(link,lfd,sp,ii,fitv(des,ii),rs);
+    sc += wght(des,ii)*e*link[ZDLL];
+    sd += wght(des,ii)*e*e*link[ZDDLL];
+    sw += wght(des,ii);
+  }
+
+  /* newton-raphson iteration for log(s)
+     -psi(ei/s) - log(s); s = e^{-th}
+  */
+  rs *= exp((sc-sw)/(sd+sc));
+  return(rs);
+}
+
+double robustscale(lfd,sp,des)
+lfdata *lfd;
+smpar *sp;
+design *des;
+{ int i, ii, p, fam, lin, or;
+  double rs, link[LLEN];
+  p = des->p;
+  fam = fam(sp);
+  lin = link(sp);
+  or = fami(sp)->robust;
+  fami(sp)->robust = 0;
+
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    fitv(des,ii) = base(lfd,ii) + innerprod(des->cf,d_xi(des,ii),p);
+    links(fitv(des,ii),resp(lfd,ii),fami(sp),lin,link,cens(lfd,ii),prwt(lfd,ii),1.0);
+    des->res[i] = -2*link[ZLIK];
+  }
+  fami(sp)->robust = or;
+  rs = sqrt(median(des->res,des->n));
+
+  if (rs==0.0) rs = 1.0;
+  return(rs);
+}
+
+double update_rs(x)
+double x;
+{ double nx;
+  if (lf_status != LF_OK) return(x);
+  robscale = exp(x);
+  lfiter(rob_lfd,rob_sp,rob_des,rob_mxit);
+  if (lf_status != LF_OK) return(x);
+
+  nx = log(robustscale(rob_lfd,rob_sp,rob_des));
+  if (nx<x-0.2) nx = x-0.2;
+  return(nx);
+}
+
+void lf_robust(lfd,sp,des,mxit)
+lfdata *lfd;
+design *des;
+smpar *sp;
+int mxit;
+{ double x;
+  rob_lfd = lfd;
+  rob_des = des;
+  rob_sp = sp;
+  rob_mxit = mxit;
+  lf_status = LF_OK;
+
+  x = log(robustscale(lfd,sp,des));
+
+  solve_fp(update_rs, x, 1.0e-6, mxit);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Post-fitting functions to compute the local variance and
+ *   influence functions. Also the local degrees of freedom
+ *   calculations for adaptive smoothing.
+ */
+
+#include "locf.h"
+
+extern double robscale;
+
+/*
+  vmat() computes (after the local fit..) the matrix 
+  M2  = X^T W^2 V X.
+  M12 = (X^T W V X)^{-1} M2
+  Also, for convenience, tr[0] = sum(wi) tr[1] = sum(wi^2).
+*/
+void vmat(lfd, sp, des, M12, M2)
+lfdata *lfd;
+smpar *sp;
+design *des;
+double *M12, *M2;
+{ int i, ii, p, nk, ok;
+  double link[LLEN], h, ww, tr0, tr1;
+  p = des->p;
+  setzero(M2,p*p);
+
+  nk = -1;
+
+  /* for density estimation, use integral rather than
+     sum form, if W^2 is programmed...
+  */
+  if ((fam(sp)<=THAZ) && (link(sp)==LLOG))
+  { switch(ker(sp))
+    { case WGAUS: nk = WGAUS; h = des->h/SQRT2; break;
+      case WRECT: nk = WRECT; h = des->h; break;
+      case WEPAN: nk = WBISQ; h = des->h; break;
+      case WBISQ: nk = WQUQU; h = des->h; break;
+      case WTCUB: nk = W6CUB; h = des->h; break;
+      case WEXPL: nk = WEXPL; h = des->h/2; break;
+    }
+  }
+
+  tr0 = tr1 = 0.0;
+  if (nk != -1)
+  { ok = ker(sp); ker(sp) = nk;
+/* compute M2 using integration. Use M12 as work matrix. */
+    (des->itype)(des->xev, M2, M12, des->cf, h);
+    ker(sp) = ok;
+    if (fam(sp)==TDEN) multmatscal(M2,des->smwt,p*p);
+    tr0 = des->ss[0];
+    tr1 = M2[0]; /* n int W e^<a,A> */
+  }
+  else
+  { for (i=0; i<des->n; i++)
+    { ii = des->ind[i];
+      stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+      ww = SQR(wght(des,ii))*link[ZDDLL];
+      tr0 += wght(des,ii);
+      tr1 += SQR(wght(des,ii));
+      addouter(M2,d_xi(des,ii),d_xi(des,ii),p,ww);
+    }
+  }
+  des->tr0 = tr0;
+  des->tr1 = tr1;
+
+  memcpy(M12,M2,p*p*sizeof(double));
+  for (i=0; i<p; i++)
+    jacob_solve(&des->xtwx,&M12[i*p]);
+}
+
+void lf_vcov(lfd,sp,des)
+lfdata *lfd;
+smpar *sp;
+design *des;
+{ int i, j, k, p;
+  double *M12, *M2;
+  M12 = des->V; M2 = des->P; p = des->p;
+  vmat(lfd,sp,des,M12,M2); /* M2 = X^T W^2 V X  tr0=sum(W) tr1=sum(W*W) */
+  des->tr2 = m_trace(M12,p);   /* tr (XTWVX)^{-1}(XTW^2VX) */
+
+/*
+ * Covariance matrix is M1^{-1} * M2 * M1^{-1}
+ * We compute this using the cholesky decomposition of
+ * M2; premultiplying by M1^{-1} and squaring. This
+ * is more stable than direct computation in near-singular cases.
+ */
+  chol_dec(M2,p,p);
+  for (i=0; i<p; i++)
+    for (j=0; j<i; j++)
+    { M2[j*p+i] = M2[i*p+j];
+      M2[i*p+j] = 0.0;
+    }
+  for (i=0; i<p; i++) jacob_solve(&des->xtwx,&M2[i*p]);
+  for (i=0; i<p; i++)
+  { for (j=0; j<p; j++)
+    { M12[i*p+j] = 0;
+      for (k=0; k<p; k++)
+        M12[i*p+j] += M2[k*p+i]*M2[k*p+j]; /* ith column of covariance */
+    }
+  }
+  if ((fam(sp)==TDEN) && (link(sp)==LIDENT))
+    multmatscal(M12,1/SQR(des->smwt),p*p);
+
+/* this computes the influence function as des->f1[0]. */
+  unitvec(des->f1,0,des->p);
+  jacob_solve(&des->xtwx,des->f1);
+}
+
+/* local_df computes:
+ *   tr[0] = trace(W)
+ *   tr[1] = trace(W*W)
+ *   tr[2] = trace( M1^{-1} M2 )
+ *   tr[3] = trace( M1^{-1} M3 )
+ *   tr[4] = trace( (M1^{-1} M2)^2 )
+ *   tr[5] = var(theta-hat).
+ */
+void local_df(lfd,sp,des,tr)
+lfdata *lfd;
+smpar *sp;
+design *des;
+double *tr;
+{ int i, ii, j, p;
+  double *m2, *V, ww, link[LLEN];
+
+  tr[0] = tr[1] = tr[2] = tr[3] = tr[4] = tr[5] = 0.0;
+  m2 = des->V; V = des->P; p = des->p;
+
+  vmat(lfd,sp,des,m2,V);  /* M = X^T W^2 V X  tr0=sum(W) tr1=sum(W*W) */
+  tr[0] = des->tr0;
+  tr[1] = des->tr1;
+  tr[2] = m_trace(m2,p);   /* tr (XTWVX)^{-1}(XTW^2VX) */
+
+  unitvec(des->f1,0,p);
+  jacob_solve(&des->xtwx,des->f1);
+  for (i=0; i<p; i++)
+    for (j=0; j<p; j++)
+    { tr[4] += m2[i*p+j]*m2[j*p+i];  /* tr(M^2) */
+      tr[5] += des->f1[i]*V[i*p+j]*des->f1[j]; /* var(thetahat) */
+  }
+  tr[5] = sqrt(tr[5]);
+
+  setzero(m2,p*p);
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+    ww = wght(des,ii)*wght(des,ii)*wght(des,ii)*link[ZDDLL];
+    addouter(m2,d_xi(des,ii),d_xi(des,ii),p,ww);
+  }
+  for (i=0; i<p; i++)
+  { jacob_solve(&des->xtwx,&m2[i*p]);
+    tr[3] += m2[i*(p+1)];
+  }
+
+  return;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  Routines for computing weight diagrams.
+ *     wdiag(lf,des,lx,deg,ty,exp)
+ *  Must locfit() first, unless ker==WPARM and has par. comp.
+ *  
+ */
+
+#include "locf.h"
+
+static double *wd;
+extern double robscale;
+void nnresproj(lfd,sp,des,u,m,p)
+lfdata *lfd;
+smpar *sp;
+design *des;
+double *u;
+int m, p;
+{ int i, ii, j;
+  double link[LLEN];
+  setzero(des->f1,p);
+  for (j=0; j<m; j++)
+  { ii = des->ind[j];
+    stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+    for (i=0; i<p; i++) des->f1[i] += link[ZDDLL]*d_xij(des,j,ii)*u[j];
+  }
+  jacob_solve(&des->xtwx,des->f1);
+  for (i=0; i<m; i++)
+  { ii = des->ind[i];
+    u[i] -= innerprod(des->f1,d_xi(des,ii),p)*wght(des,ii);
+  }
+}
+
+void wdexpand(l,n,ind,m)
+double *l;
+int *ind, n, m;
+{ int i, j, t;
+  double z;
+  for (j=m; j<n; j++) { l[j] = 0.0; ind[j] = -1; }
+  j = m-1;
+  while (j>=0)
+  { if (ind[j]==j) j--;
+    else
+    { i = ind[j];
+      z = l[j]; l[j] = l[i]; l[i] = z;
+      t = ind[j]; ind[j] = ind[i]; ind[i] = t;
+      if (ind[j]==-1) j--;
+    }
+  }
+
+/*  for (i=n-1; i>=0; i--)
+  { l[i] = ((j>=0) && (ind[j]==i)) ? l[j--] : 0.0; } */
+}
+
+int wdiagp(lfd,sp,des,lx,pc,dv,deg,ty,exp)
+lfdata *lfd;
+smpar *sp;
+design *des;
+paramcomp *pc;
+deriv *dv;
+double *lx;
+int deg, ty, exp;
+{ int i, j, p, nd;
+  double *l1;
+
+  p = des->p;
+
+  fitfun(lfd,sp,des->xev,pc->xbar,des->f1,dv);
+  if (exp)
+  { jacob_solve(&pc->xtwx,des->f1);
+    for (i=0; i<lfd->n; i++)
+      lx[i] = innerprod(des->f1,d_xi(des,des->ind[i]),p);
+    return(lfd->n);
+  }
+  jacob_hsolve(&pc->xtwx,des->f1);
+  for (i=0; i<p; i++) lx[i] = des->f1[i];
+
+  nd = dv->nd;
+  dv->nd = nd+1;
+  if (deg>=1)
+    for (i=0; i<lfd->d; i++)
+    { dv->deriv[nd] = i;
+      l1 = &lx[(i+1)*p];
+      fitfun(lfd,sp,des->xev,pc->xbar,l1,dv);
+      jacob_hsolve(&pc->xtwx,l1);
+    }
+
+  dv->nd = nd+2;
+  if (deg>=2)
+    for (i=0; i<lfd->d; i++)
+    { dv->deriv[nd] = i;
+      for (j=0; j<lfd->d; j++)
+      { dv->deriv[nd+1] = j;
+        l1 = &lx[(i*lfd->d+j+lfd->d+1)*p];
+        fitfun(lfd,sp,des->xev,pc->xbar,l1,dv);
+        jacob_hsolve(&pc->xtwx,l1);
+    } }
+  dv->nd = nd;
+  return(p);
+}
+
+int wdiag(lfd,sp,des,lx,dv,deg,ty,exp)
+lfdata *lfd;
+smpar *sp;
+design *des;
+deriv *dv;
+double *lx;
+int deg, ty, exp;
+/* deg=0: l(x) only.
+   deg=1: l(x), l'(x)
+   deg=2: l(x), l'(x), l''(x)
+   ty = 1: e1 (X^T WVX)^{-1} X^T W        -- hat matrix
+   ty = 2: e1 (X^T WVX)^{-1} X^T WV^{1/2} -- scb's
+*/
+{ double w, *X, *lxd, *lxdd, wdd, wdw, *ulx, link[LLEN], h;
+  double dfx[MXDIM], hs[MXDIM];
+  int i, ii, j, k, l, m, d, p, nd;
+
+  h = des->h;
+  nd = dv->nd;
+  wd = des->wd;
+  d = lfd->d; p = des->p; X = d_x(des);
+  ulx = des->res;
+  m = des->n;
+  for (i=0; i<d; i++) hs[i] = h*lfd->sca[i];
+  if (deg>0)
+  { lxd = &lx[m];
+    setzero(lxd,m*d);
+    if (deg>1)
+    { lxdd = &lxd[d*m];
+      setzero(lxdd,m*d*d);
+  } }
+
+  if (nd>0) fitfun(lfd,sp,des->xev,des->xev,des->f1,dv); /* c(0) */
+    else unitvec(des->f1,0,p);
+  jacob_solve(&des->xtwx,des->f1);   /* c(0) (X^TWX)^{-1} */
+  for (i=0; i<m; i++)
+  { ii = des->ind[i];
+    lx[i] = innerprod(des->f1,&X[ii*p],p); /* c(0)(XTWX)^{-1}X^T */
+    if (deg>0)
+    { wd[i] = Wd(dist(des,ii)/h,ker(sp));
+      for (j=0; j<d; j++)
+      { dfx[j] = datum(lfd,j,ii)-des->xev[j];
+        lxd[j*m+i] = lx[i]*wght(des,ii)*weightd(dfx[j],lfd->sca[j],
+          d,ker(sp),kt(sp),h,lfd->sty[j],dist(des,ii));
+             /* c(0) (XTWX)^{-1}XTW' */
+      }
+      if (deg>1)
+      { wdd = Wdd(dist(des,ii)/h,ker(sp));
+        for (j=0; j<d; j++)
+          for (k=0; k<d; k++)
+          { w = (dist(des,ii)==0) ? 0 : h/dist(des,ii);
+            w = wdd * (des->xev[k]-datum(lfd,k,ii)) * (des->xev[j]-datum(lfd,j,ii))
+                  * w*w / (hs[k]*hs[k]*hs[j]*hs[j]);
+            if (j==k) w += wd[i]/(hs[j]*hs[j]);
+            lxdd[(j*d+k)*m+i] = lx[i]*w;
+              /* c(0)(XTWX)^{-1}XTW'' */
+          }
+      }
+    }
+    lx[i] *= wght(des,ii);
+  }
+
+  dv->nd = nd+1;
+  if (deg==2)
+  { for (i=0; i<d; i++)
+    { dv->deriv[nd] = i;
+      fitfun(lfd,sp,des->xev,des->xev,des->f1,dv);
+      for (k=0; k<m; k++)
+      { ii = des->ind[i];
+        stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+        for (j=0; j<p; j++)
+          des->f1[j] -= link[ZDDLL]*lxd[i*m+k]*X[ii*p+j];
+        /* c'(x)-c(x)(XTWX)^{-1}XTW'X */
+      }
+      jacob_solve(&des->xtwx,des->f1); /* (...)(XTWX)^{-1} */
+      for (j=0; j<m; j++)
+      { ii = des->ind[j];
+        ulx[j] = innerprod(des->f1,&X[ii*p],p); /* (...)XT */
+      }
+      for (j=0; j<d; j++)
+        for (k=0; k<m; k++)
+        { ii = des->ind[k];
+          dfx[j] = datum(lfd,j,ii)-des->xev[j];
+          wdw = wght(des,ii)*weightd(dfx[j],lfd->sca[j],d,ker(sp),
+            kt(sp),h,lfd->sty[j],dist(des,ii));
+          lxdd[(i*d+j)*m+k] += ulx[k]*wdw;
+          lxdd[(j*d+i)*m+k] += ulx[k]*wdw;
+        } /* + 2(c'-c(XTWX)^{-1}XTW'X)(XTWX)^{-1}XTW' */
+    }
+    for (j=0; j<d*d; j++) nnresproj(lfd,sp,des,&lxdd[j*m],m,p);
+        /* * (I-X(XTWX)^{-1} XTW */
+  }
+  if (deg>0)
+  { for (j=0; j<d; j++) nnresproj(lfd,sp,des,&lxd[j*m],m,p);
+      /* c(0)(XTWX)^{-1}XTW'(I-X(XTWX)^{-1}XTW) */
+    for (i=0; i<d; i++)
+    { dv->deriv[nd]=i;
+      fitfun(lfd,sp,des->xev,des->xev,des->f1,dv);
+      jacob_solve(&des->xtwx,des->f1);
+      for (k=0; k<m; k++)
+      { ii = des->ind[k];
+        for (l=0; l<p; l++)
+          lxd[i*m+k] += des->f1[l]*X[ii*p+l]*wght(des,ii);
+      } /* add c'(0)(XTWX)^{-1}XTW */
+    }
+  }
+
+  dv->nd = nd+2;
+  if (deg==2)
+  { for (i=0; i<d; i++)
+    { dv->deriv[nd]=i;
+      for (j=0; j<d; j++)
+      { dv->deriv[nd+1]=j;
+        fitfun(lfd,sp,des->xev,des->xev,des->f1,dv);
+        jacob_solve(&des->xtwx,des->f1);
+        for (k=0; k<m; k++)
+        { ii = des->ind[k];
+          for (l=0; l<p; l++)
+            lxdd[(i*d+j)*m+k] += des->f1[l]*X[ii*p+l]*wght(des,ii);
+        } /* + c''(x)(XTWX)^{-1}XTW */
+      }
+    }
+  }
+  dv->nd = nd;
+
+  k = 1+d*(deg>0)+d*d*(deg==2);
+
+  if (exp) wdexpand(lx,lfd->n,des->ind,m);
+ 
+  if (ty==1) return(m);
+  for (i=0; i<m; i++)
+  { ii = des->ind[i];
+    stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale);
+    link[ZDDLL] = sqrt(fabs(link[ZDDLL]));
+    for (j=0; j<k; j++) lx[j*m+i] *= link[ZDDLL];
+  }
+  return(m);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  String  matching functions. For a given argument string, find
+ *  the best match from an array of possibilities. Is there a library
+ *  function somewhere to do something like this?
+ *
+ *  return values of -1 indicate failure/unknown string.
+ */
+
+#include "locf.h"
+
+int ct_match(z1, z2)
+char *z1, *z2;
+{ int ct = 0;
+  while (z1[ct]==z2[ct])
+  { if (z1[ct]=='\0') return(ct+1);
+    ct++;
+  }
+  return(ct);
+}
+
+int pmatch(z, strings, vals, n, def)
+char *z, **strings;
+int *vals, n, def;
+{ int i, ct, best, best_ct;
+  best = -1;
+  best_ct = 0;
+
+  for (i=0; i<n; i++)
+  { ct = ct_match(z,strings[i]);
+    if (ct==strlen(z)+1) return(vals[i]);
+    if (ct>best_ct) { best = i; best_ct = ct; }
+  }
+  if (best==-1) return(def);
+  return(vals[best]);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "locf.h"
+
+int lf_maxit = 20;
+int lf_debug = 0;
+int lf_error = 0;
+
+double s0, s1;
+static lfdata *lf_lfd;
+static design *lf_des;
+static smpar   *lf_sp;
+int lf_status;
+int ident=0;
+double lf_tol;
+extern double robscale;
+
+void lfdata_init(lfd)
+lfdata *lfd;
+{ int i;
+  for (i=0; i<MXDIM; i++)
+  { lfd->sty[i] = 0;
+    lfd->sca[i] = 1.0;
+    lfd->xl[i] = lfd->xl[i+MXDIM] = 0.0;
+  }
+  lfd->y = lfd->w = lfd->c = lfd->b = NULL;
+  lfd->d = lfd->n = 0;
+}
+
+void smpar_init(sp,lfd)
+smpar *sp;
+lfdata *lfd;
+{ nn(sp)  = 0.7;
+  fixh(sp)= 0.0;
+  pen(sp) = 0.0;
+  acri(sp)= ANONE;
+  deg(sp) = deg0(sp) = 2;
+  ubas(sp) = 0;
+  kt(sp) = KSPH;
+  ker(sp) = WTCUB;
+  fam(sp) = 64+TGAUS;
+  link(sp)= LDEFAU;
+  npar(sp) = calcp(sp,lfd->d);
+}
+
+void deriv_init(dv)
+deriv *dv;
+{ dv->nd = 0;
+}
+
+int des_reqd(n,p)
+int n, p;
+{
+  return(n*(p+5)+2*p*p+4*p + jac_reqd(p));
+}
+int des_reqi(n,p)
+int n, p;
+{ return(n+p);
+}
+ 
+void des_init(des,n,p)
+design *des;
+int n, p;
+{ double *z;
+  int k;
+
+  if (n<=0) WARN(("des_init: n <= 0"));
+  if (p<=0) WARN(("des_init: p <= 0"));
+
+  if (des->des_init_id != DES_INIT_ID)
+  { des->lwk = des->lind = 0;
+    des->des_init_id = DES_INIT_ID;
+  }
+
+  k = des_reqd(n,p);
+  if (k>des->lwk)
+  { des->wk = (double *)calloc(k,sizeof(double));
+    if ( des->wk == NULL ) {
+      printf("Problem allocating memory for des->wk\n");fflush(stdout);
+    }
+    des->lwk = k;
+  }
+  z = des->wk;
+
+  des->X = z; z += n*p;
+  des->w = z; z += n;
+  des->res=z; z += n;
+  des->di =z; z += n;
+  des->th =z; z += n;
+  des->wd =z; z += n;
+  des->V  =z; z += p*p;
+  des->P  =z; z += p*p;
+  des->f1 =z; z += p;
+  des->ss =z; z += p;
+  des->oc =z; z += p;
+  des->cf =z; z += p;
+ 
+  z = jac_alloc(&des->xtwx,p,z);
+ 
+  k = des_reqi(n,p);
+  if (k>des->lind)
+  {
+    des->ind = (int *)calloc(k,sizeof(int));
+    if ( des->ind == NULL ) {
+      printf("Problem allocating memory for des->ind\n");fflush(stdout);
+    }
+    des->lind = k;
+  }
+  des->fix = &des->ind[n];
+  for (k=0; k<p; k++) des->fix[k] = 0;
+
+  des->n = n; des->p = p;
+  des->smwt = n;
+  des->xtwx.p = p;                                                              
+}
+
+void deschk(des,n,p)
+design *des;
+int n, p;
+{ WARN(("deschk deprecated - use des_init()"));
+  des_init(des,n,p);
+}
+
+int likereg(coef, lk0, f1, Z)
+double *coef, *lk0, *f1, *Z;
+{ int i, ii, j, p;
+  double lk, ww, link[LLEN], *X;
+
+  if (lf_debug>2) mut_printf("  likereg: %8.5f\n",coef[0]);
+  lf_status = LF_OK;
+  lk = 0.0; p = lf_des->p;
+  setzero(Z,p*p);
+  setzero(f1,p);
+  for (i=0; i<lf_des->n; i++)
+  {
+    ii = lf_des->ind[i];
+    X = d_xi(lf_des,ii);
+    fitv(lf_des,ii) = base(lf_lfd,ii)+innerprod(coef,X,p);
+    lf_status = stdlinks(link,lf_lfd,lf_sp,ii,fitv(lf_des,ii),robscale);
+    if (lf_status == LF_BADP)
+    { *lk0 = -1.0e300;
+      return(NR_REDUCE);
+    }
+    if (lf_error) lf_status = LF_ERR;
+    if (lf_status != LF_OK) return(NR_BREAK);
+
+    ww = wght(lf_des,ii);
+    lk += ww*link[ZLIK];
+    for (j=0; j<p; j++)
+      f1[j] += X[j]*ww*link[ZDLL];
+    addouter(Z, X, X, p, ww*link[ZDDLL]);
+  }
+  for (i=0; i<p; i++) if (lf_des->fix[i])
+  { for (j=0; j<p; j++) Z[i*p+j] = Z[j*p+i] = 0.0;
+    Z[i*p+i] = 1.0;
+    f1[i] = 0.0;
+  }
+
+  if (lf_debug>4) prresp(coef,Z,p);
+  if (lf_debug>3) mut_printf("  likelihood: %8.5f\n",lk);
+  *lk0 = lf_des->llk = lk;
+
+  lf_status = fami(lf_sp)->pcheck(lf_sp,lf_des,lf_lfd);
+  switch(lf_status)
+  { case LF_DONE: return(NR_BREAK);
+    case LF_OOB:  return(NR_REDUCE);
+    case LF_PF:   return(NR_REDUCE);
+    case LF_NSLN: return(NR_BREAK);
+  }
+
+  return(NR_OK);
+}
+
+int reginit(lfd,des,sp)
+lfdata *lfd;
+design *des;
+smpar *sp;
+{ int i, ii;
+  double sb, link[LLEN];
+  s0 = s1 = sb = 0;
+  for (i=0; i<des->n; i++)
+  { ii = des->ind[i];
+    links(base(lfd,ii),resp(lfd,ii),fami(sp),LINIT,link,cens(lfd,ii),prwt(lfd,ii),1.0);
+    s1 += wght(des,ii)*link[ZDLL];
+    s0 += wght(des,ii)*prwt(lfd,ii);
+    sb += wght(des,ii)*prwt(lfd,ii)*base(lfd,ii);
+  }
+  if (s0==0) return(LF_NOPT); /* no observations with W>0 */
+  setzero(des->cf,des->p);
+  lf_tol = 1.0e-6*s0;
+  switch(link(sp))
+  { case LIDENT:
+      des->cf[0] = (s1-sb)/s0;
+      return(LF_OK);
+    case LLOG:
+      if (s1<=0.0)
+      { des->cf[0] = -1000;
+        return(LF_INFA);
+      }
+      des->cf[0] = log(s1/s0) - sb/s0;
+      return(LF_OK);
+    case LLOGIT:
+      if (s1<=0.0)
+      { des->cf[0] = -1000;
+        return(LF_INFA);
+      }
+      if (s1>=s0)
+      { des->cf[0] = 1000;
+        return(LF_INFA);
+      }
+      des->cf[0] = logit(s1/s0)-sb/s0;
+      return(LF_OK);
+    case LINVER:
+      if (s1<=0.0)
+      { des->cf[0] = 1e100;
+        return(LF_INFA);
+      }
+      des->cf[0] = s0/s1-sb/s0;
+      return(LF_OK);
+    case LSQRT:
+      des->cf[0] = sqrt(s1/s0)-sb/s0;
+      return(LF_OK);
+    case LASIN:
+      des->cf[0] = asin(sqrt(s1/s0))-sb/s0;
+      return(LF_OK);
+    default:
+      LERR(("reginit: invalid link %d",link(sp)));
+      return(LF_ERR);
+  }
+}
+
+int lfinit(lfd,sp,des)
+lfdata *lfd;
+smpar *sp;
+design *des;
+{ int initstat;
+  des->xtwx.sm = (deg0(sp)<deg(sp)) ? JAC_CHOL : JAC_EIGD;
+
+  designmatrix(lfd,sp,des);
+  setfamily(sp);
+  initstat = fami(sp)->initial(lfd,des,sp);
+
+  return(initstat);
+}
+
+void lfiter(lfd,sp,des,maxit)
+lfdata *lfd;
+smpar *sp;
+design *des;
+int maxit;
+{ int err;
+  if (lf_debug>1) mut_printf(" lfiter: %8.5f\n",des->cf[0]);
+
+  lf_des = des;
+  lf_lfd = lfd;
+  lf_sp  = sp;
+
+  max_nr(fami(sp)->like, des->cf, des->oc, des->res, des->f1,
+    &des->xtwx, des->p, maxit, lf_tol, &err);
+  switch(err)
+  { case NR_OK: return;
+    case NR_NCON:
+      WARN(("max_nr not converged"));
+      return;
+    case NR_NDIV:
+      WARN(("max_nr reduction problem"));
+      return;
+  }
+  WARN(("max_nr return status %d",err));
+}
+
+int use_robust_scale(int tg)
+{ if ((tg&64)==0) return(0); /* not quasi - no scale */
+  if (((tg&128)==0) & (((tg&63)!=TROBT) & ((tg&63)!=TCAUC))) return(0);
+  return(1);
+}
+
+/*
+ * noit not really needed any more, since
+ * gauss->pcheck returns LF_DONE, and likereg NR_BREAK
+ * in gaussian case.
+ * nb: 0/1: does local neighborhood and weights need computing?
+ * cv: 0/1: is variance/covariance matrix needed?
+ */
+int locfit(lfd,des,sp,noit,nb,cv)
+lfdata *lfd;
+design *des;
+smpar *sp;
+int noit, nb, cv;
+{ int i;
+
+  if (des->xev==NULL)
+  { LERR(("locfit: NULL evaluation point?"));
+    return(246);
+  }
+
+  if (lf_debug>0)
+  { mut_printf("locfit: ");
+    for (i=0; i<lfd->d; i++) mut_printf(" %10.6f",des->xev[i]);
+    mut_printf("\n");
+  }
+
+/* the 1e-12 avoids problems that can occur with roundoff */
+  if (nb) nbhd(lfd,des,(int)(lfd->n*nn(sp)+1e-12),0,sp);
+
+  lf_status = lfinit(lfd,sp,des);
+
+  if (lf_status == LF_OK)
+  { if (use_robust_scale(fam(sp)))
+      lf_robust(lfd,sp,des,lf_maxit);
+    else
+    { if ((fam(sp)&63)==TQUANT)
+        lfquantile(lfd,sp,des,lf_maxit);
+      else
+      { robscale = 1.0;
+        lfiter(lfd,sp,des,lf_maxit);
+      }
+    }
+  }
+
+  if (lf_status == LF_DONE) lf_status = LF_OK;
+  if (lf_status == LF_OOB) lf_status = LF_OK;
+
+  if ((fam(sp)&63)==TDEN) /* convert from rate to density */
+  { switch(link(sp))
+    { case LLOG:
+        des->cf[0] -= log(des->smwt);
+        break;
+      case LIDENT:
+        multmatscal(des->cf,1.0/des->smwt,des->p);
+        break;
+      default: LERR(("Density adjustment; invalid link"));
+    }
+  }
+
+  /* variance calculations, if requested */
+  if (cv)
+  { switch(lf_status)
+    { case LF_PF:  /* for these cases, variance calc. would likely fail. */
+      case LF_NOPT:
+      case LF_NSLN:
+      case LF_INFA:
+      case LF_DEMP:
+      case LF_XOOR:
+      case LF_DNOP:
+      case LF_BADP:
+        des->llk = des->tr0 = des->tr1 = des->tr2 = 0.0;
+        setzero(des->V,des->p*des->p);
+        setzero(des->f1,des->p);
+        break;
+      default: lf_vcov(lfd,sp,des);
+    }
+  }
+
+  return(lf_status);
+}
+
+void lf_status_msg(status)
+int status;
+{ switch(status)
+{ case LF_OK: return;
+  case LF_NCON: WARN(("locfit did not converge")); return;
+  case LF_OOB: WARN(("parameters out of bounds")); return;
+  case LF_PF: WARN(("perfect fit")); return;
+  case LF_NOPT: WARN(("no points with non-zero weight")); return;
+  case LF_NSLN: WARN(("no solution")); return;
+  case LF_INFA: WARN(("initial value problem")); return;
+  case LF_DEMP: WARN(("density estimate, empty integration region")); return;
+  case LF_XOOR: WARN(("procv: fit point outside xlim region")); return;
+  case LF_DNOP: WARN(("density estimation -- insufficient points in smoothing window")); return;
+  case LF_BADP: WARN(("bad parameters")); return;
+  default: WARN(("procv: unknown return code %d",status)); return;
+} }
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Compute minimax weights for local regression.
+ */
+
+#include "locf.h"
+#define NR_EMPTY 834
+
+int mmsm_ct;
+
+static int debug=0;
+#define CONVTOL 1.0e-8
+#define SINGTOL 1.0e-10
+#define NR_SINGULAR 100
+
+static lfdata *mm_lfd;
+static design *mm_des;
+static double mm_gam, mmf, lb;
+static int st;
+
+double ipower(x,n) /* use for n not too large!! */
+double x;
+int n;
+{ if (n==0) return(1.0);
+  if (n<0) return(1/ipower(x,-n));
+  return(x*ipower(x,n-1));
+}
+
+double setmmwt(des,a,gam)
+design *des;
+double *a, gam;
+{ double ip, w0, w1, sw, wt;
+  int i;
+  sw = 0.0;
+  for (i=0; i<mm_lfd->n; i++)
+  { ip = innerprod(a,d_xi(des,i),des->p);
+    wt = prwt(mm_lfd,i);
+    w0 = ip - gam*des->wd[i];
+    w1 = ip + gam*des->wd[i];
+    wght(des,i) = 0.0;
+    if (w0>0) { wght(des,i) = w0; sw += wt*w0*w0; }
+    if (w1<0) { wght(des,i) = w1; sw += wt*w1*w1; }
+  }
+  return(sw/2-a[0]);
+}
+
+/* compute sum_{w!=0} AA^T; e1-sum wA  */
+int mmsums(des,coef,f,z,J)
+design *des;
+double *coef, *f, *z;
+jacobian *J;
+{ int ct, i, j, p, sing;
+  double *A;
+
+mmsm_ct++;
+  A = J->Z;
+  *f = setmmwt(des,coef,mm_gam);
+
+  p = des->p;
+  setzero(A,p*p);
+  setzero(z,p);
+  z[0] = 1.0;
+  ct = 0;
+
+  for (i=0; i<mm_lfd->n; i++)
+    if (wght(des,i)!=0.0)
+    { addouter(A,d_xi(des,i),d_xi(des,i),p,prwt(mm_lfd,i));
+      for (j=0; j<p; j++) z[j] -= prwt(mm_lfd,i)*wght(des,i)*d_xij(des,i,j);
+      ct++;
+    }
+  if (ct==0) return(NR_EMPTY);
+
+  J->st = JAC_RAW;
+  J->p = p;
+  jacob_dec(J,JAC_EIGD);
+
+  sing = 0;
+  for (i=0; i<p; i++) sing |= (J->Z[i*p+i]<SINGTOL);
+  if ((debug) & (sing)) mut_printf("SINGULAR!!!!\n");
+
+  return((sing) ? NR_SINGULAR : NR_OK);
+}
+
+int descenddir(des,coef,dlt,f,af)
+design *des;
+double *coef, *dlt, *f;
+int af;
+{ int i, p;
+  double f0, *oc;
+
+  if (debug) mut_printf("descenddir: %8.5f %8.5f\n",dlt[0],dlt[1]);
+
+  f0 = *f;
+  oc = des->oc;
+  p = des->p;
+  memcpy(oc,coef,p*sizeof(double));
+
+  for (i=0; i<p; i++) coef[i] = oc[i]+lb*dlt[i];
+  st = mmsums(des,coef,f,des->f1,&des->xtwx);
+
+  if (*f>f0) /* halve till we drop */
+  { while (*f>f0)
+    { lb = lb/2.0;
+      for (i=0; i<p; i++) coef[i] = oc[i]+lb*dlt[i];
+      st = mmsums(des,coef,f,des->f1,&des->xtwx);
+    }
+    return(st);
+  }
+
+  if (!af) return(st);
+
+  /* double */
+  while (*f<f0)
+  { f0 = *f;
+    lb *= 2.0;
+    for (i=0; i<p; i++) coef[i] = oc[i]+lb*dlt[i];
+    st = mmsums(des,coef,f,des->f1,&des->xtwx);
+  }
+
+  lb /= 2.0;
+  for (i=0; i<p; i++) coef[i] = oc[i]+lb*dlt[i];
+  st = mmsums(des,coef,f,des->f1,&des->xtwx);
+
+  return(st);
+}
+
+int mm_initial(des)
+design *des;
+{ double *dlt;
+
+  dlt = des->ss;
+
+  setzero(des->cf,des->p);
+  st = mmsums(des,des->cf,&mmf,des->f1,&des->xtwx);
+
+  setzero(dlt,des->p);
+  dlt[0] = 1;
+  lb = 1.0;
+  st = descenddir(des,des->cf,dlt,&mmf,1);
+  return(st);
+}
+
+void getsingdir(des,dlt)
+design *des;
+double *dlt;
+{ double f, sw, c0;
+  int i, j, p, sd;
+
+  sd = -1; p = des->p;
+  setzero(dlt,p);
+  for (i=0; i<p; i++) if (des->xtwx.Z[i*p+i]<SINGTOL) sd = i;
+  if (sd==-1)
+  { mut_printf("getsingdir: nonsing?\n");
+    return;
+  }
+  if (des->xtwx.dg[sd]>0)
+    for (i=0; i<p; i++) dlt[i] = des->xtwx.Q[p*i+sd]*des->xtwx.dg[i];
+  else
+  { dlt[sd] = 1.0;
+  }
+
+  c0 = innerprod(dlt,des->f1,p);
+  if (c0<0) for (i=0; i<p; i++) dlt[i] = -dlt[i];
+}
+
+void mmax(coef, old_coef, delta, J, p, maxit, tol, err)
+double *coef, *old_coef, *delta, tol;
+int p, maxit, *err;
+jacobian *J;
+{ double old_f, lambda;
+  int i, j;
+
+  *err = NR_OK;
+ 
+  for (j=0; j<maxit; j++)
+  { memcpy(old_coef,coef,p*sizeof(double));
+    old_f = mmf;
+
+    if (st == NR_SINGULAR)
+    {
+      getsingdir(mm_des,delta);
+      st = descenddir(mm_des,coef,delta,&mmf,1);
+    }
+    if (st == NR_EMPTY)
+    { 
+      setzero(delta,p);
+      delta[0] = 1.0;
+      st = descenddir(mm_des,coef,delta,&mmf,1);
+    }
+    if (st == NR_OK)
+    { 
+      lb = 1.0;
+      jacob_solve(J,mm_des->f1);
+      memcpy(delta,mm_des->f1,p*sizeof(double));
+      st = descenddir(mm_des,coef,delta,&mmf,0);
+    }
+
+    if ((j>0) & (fabs(mmf-old_f)<tol)) return;
+  }
+  WARN(("findab not converged"));
+  *err = NR_NCON;
+  return;
+}
+
+double findab(gam)
+double gam;
+{ double sl;
+  int i, p, nr_stat;
+
+  if (debug) mut_printf("  findab: gam %8.5f\n",gam);
+  mm_gam = gam;
+  p = mm_des->p;
+  lb = 1.0;
+  st = mm_initial(mm_des);
+
+    mmax(mm_des->cf, mm_des->oc, mm_des->ss,
+       &mm_des->xtwx, p, lf_maxit, CONVTOL, &nr_stat);
+
+  sl = 0.0;
+  for (i=0; i<mm_lfd->n; i++) sl += fabs(wght(mm_des,i))*mm_des->wd[i];
+
+  if (debug) mut_printf("  sl %8.5f  gam %8.5f    %8.5f %d\n", sl,gam,sl-gam,nr_stat);
+  return(sl-gam);
+}
+
+double weightmm(coef,di,ff,gam)
+double *coef, di, *ff, gam;
+{ double y1, y2, ip;
+  ip = innerprod(ff,coef,mm_des->p);
+  y1 = ip-gam*di; if (y1>0) return(y1/ip);
+  y2 = ip+gam*di; if (y2<0) return(y2/ip);
+  return(0.0);
+}
+
+double minmax(lfd,des,sp)
+lfdata *lfd;
+design *des;
+smpar *sp;
+{ double h, u[MXDIM], gam;
+  int i, j, m, d1, p1, err_flag;
+
+  if (debug) mut_printf("minmax: x %8.5f\n",des->xev[0]);
+  mm_lfd = lfd;
+  mm_des = des;
+
+mmsm_ct = 0;
+  d1 = deg(sp)+1;
+  p1 = factorial(d1);
+  for (i=0; i<lfd->n; i++)
+  { for (j=0; j<lfd->d; j++) u[j] = datum(lfd,j,i);
+    des->wd[i] = sp->nn/p1*ipower(dist(des,i),d1);
+    des->ind[i] = i;
+    fitfun(lfd, sp, u,des->xev,d_xi(des,i),NULL);
+  }
+
+/* find gamma (i.e. solve eqn 13.17 from book), using the secant method.
+ * As a side effect, this finds the other minimax coefficients.
+ * Note that 13.17 is rewritten as
+ *   g2 = sum |l_i(x)| (||xi-x||^(p+1) M/(s*(p+1)!))
+ * where g2 = gamma * s * (p+1)! / M. The gam variable below is g2.
+ * The smoothing parameter is sp->nn == M/s.
+ */
+  gam = solve_secant(findab, 0.0, 0.0,1.0, 0.0000001, BDF_EXPRIGHT, &err_flag);
+
+/*
+ * Set the smoothing weights, in preparation for the actual fit.
+ */
+  h = 0.0; m = 0;
+  for (i=0; i<lfd->n; i++)
+  { wght(des,i) = weightmm(des->cf, des->wd[i],d_xi(des,i),gam);
+    if (wght(des,i)>0)
+    { if (dist(des,i)>h) h = dist(des,i);
+      des->ind[m] = i;
+      m++;
+    }
+  }
+  des->n = m;
+  return(h);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *
+ *  Defines the weight functions and related quantities used
+ *  in LOCFIT.
+ */
+
+#include "locf.h"
+
+/*
+ * convert kernel and kernel type strings to numeric codes.
+ */
+#define NWFUNS 13
+static char *wfuns[NWFUNS] = {
+  "rectangular", "epanechnikov", "bisquare",    "tricube",
+  "triweight",   "gaussian",     "triangular",  "ququ",
+  "6cub",        "minimax",      "exponential", "maclean", "parametric" };
+static int wvals[NWFUNS] = { WRECT, WEPAN, WBISQ, WTCUB,
+  WTRWT, WGAUS, WTRIA, WQUQU, W6CUB, WMINM, WEXPL, WMACL, WPARM };
+int lfkernel(char *z)
+{ return(pmatch(z, wfuns, wvals, NWFUNS, WTCUB));
+}
+
+#define NKTYPE 5
+static char *ktype[NKTYPE] = { "spherical", "product", "center", "lm", "zeon" };
+static int   kvals[NKTYPE] = { KSPH, KPROD, KCE, KLM, KZEON };
+int lfketype(char *z)
+{ return(pmatch(z, ktype, kvals, NKTYPE, KSPH));
+}
+
+/* The weight functions themselves.  Used everywhere. */
+double W(u,ker)
+double u;
+int ker;
+{ u = fabs(u);
+  switch(ker)
+  { case WRECT: return((u>1) ? 0.0 : 1.0);
+    case WEPAN: return((u>1) ? 0.0 : 1-u*u);
+    case WBISQ: if (u>1) return(0.0);
+                u = 1-u*u; return(u*u);
+    case WTCUB: if (u>1) return(0.0);
+                u = 1-u*u*u; return(u*u*u);
+    case WTRWT: if (u>1) return(0.0);
+                u = 1-u*u; return(u*u*u);
+    case WQUQU: if (u>1) return(0.0);
+                u = 1-u*u; return(u*u*u*u);
+    case WTRIA: if (u>1) return(0.0);
+                return(1-u);
+    case W6CUB: if (u>1) return(0.0);
+                u = 1-u*u*u; u = u*u*u; return(u*u);
+    case WGAUS: return(exp(-SQR(GFACT*u)/2.0));
+    case WEXPL: return(exp(-EFACT*u));
+    case WMACL: return(1/((u+1.0e-100)*(u+1.0e-100)));
+    case WMINM: LERR(("WMINM in W"));
+                return(0.0);
+    case WPARM: return(1.0);
+  }
+  LERR(("W(): Unknown kernel %d\n",ker));
+  return(1.0);
+}
+
+int iscompact(ker)
+int ker;
+{ if ((ker==WEXPL) | (ker==WGAUS) | (ker==WMACL) | (ker==WPARM)) return(0);
+  return(1);
+}
+
+double weightprod(lfd,u,h,ker)
+lfdata *lfd;
+double *u, h;
+int ker;
+{ int i;
+  double sc, w;
+  w = 1.0;
+  for (i=0; i<lfd->d; i++)
+  { sc = lfd->sca[i];
+    switch(lfd->sty[i])
+    { case STLEFT:
+        if (u[i]>0) return(0.0);
+        w *= W(-u[i]/(h*sc),ker);
+        break;
+      case STRIGH:
+        if (u[i]<0) return(0.0);
+        w *= W(u[i]/(h*sc),ker);
+        break;
+      case STANGL:
+        w *= W(2*fabs(sin(u[i]/(2*sc)))/h,ker);
+        break;
+      case STCPAR:
+        break;
+      default:
+        w *= W(fabs(u[i])/(h*sc),ker);
+    }
+    if (w==0.0) return(w);
+  }
+  return(w);
+}
+
+double weightsph(lfd,u,h,ker, hasdi,di)
+lfdata *lfd;
+double *u, h, di;
+int ker, hasdi;
+{ int i;
+
+  if (!hasdi) di = rho(u,lfd->sca,lfd->d,KSPH,lfd->sty);
+
+  for (i=0; i<lfd->d; i++)
+  { if ((lfd->sty[i]==STLEFT) && (u[i]>0.0)) return(0.0);
+    if ((lfd->sty[i]==STRIGH) && (u[i]<0.0)) return(0.0);
+  }
+  if (h==0) return((di==0.0) ? 1.0 : 0.0);
+
+  return(W(di/h,ker));
+}
+
+double weight(lfd,sp,x,t,h, hasdi,di)
+lfdata *lfd;
+smpar *sp;
+double *x, *t, h, di;
+int hasdi;
+{ double u[MXDIM];
+  int i;
+  for (i=0; i<lfd->d; i++) u[i] = (t==NULL) ? x[i] : x[i]-t[i];
+  switch(kt(sp))
+  { case KPROD: return(weightprod(lfd,u,h,ker(sp)));
+    case KSPH:  return(weightsph(lfd,u,h,ker(sp), hasdi,di));
+  }
+  LERR(("weight: unknown kernel type %d",kt(sp)));
+  return(1.0);
+}
+
+double sgn(x)
+double x;
+{ if (x>0) return(1.0);
+  if (x<0) return(-1.0);
+  return(0.0);
+}
+
+double WdW(u,ker) /* W'(u)/W(u) */
+double u;
+int ker;
+{ double eps=1.0e-10;
+  if (ker==WGAUS) return(-GFACT*GFACT*u);
+  if (ker==WPARM) return(0.0);
+  if (fabs(u)>=1) return(0.0);
+  switch(ker)
+  { case WRECT: return(0.0);
+    case WTRIA: return(-sgn(u)/(1-fabs(u)+eps));
+    case WEPAN: return(-2*u/(1-u*u+eps));
+    case WBISQ: return(-4*u/(1-u*u+eps));
+    case WTRWT: return(-6*u/(1-u*u+eps));
+    case WTCUB: return(-9*sgn(u)*u*u/(1-u*u*fabs(u)+eps));
+    case WEXPL: return((u>0) ? -EFACT : EFACT);
+  }
+  LERR(("WdW: invalid kernel"));
+  return(0.0);
+}
+
+/* deriv. weights .. spherical, product etc
+   u, sc, sty needed only in relevant direction
+   Acutally, returns (d/dx W(||x||/h) ) / W(.)
+*/
+double weightd(u,sc,d,ker,kt,h,sty,di)
+double u, sc, h, di;
+int d, ker, kt, sty;
+{ if (sty==STANGL)
+  { if (kt==KPROD)
+      return(-WdW(2*sin(u/(2*sc)),ker)*cos(u/(2*sc))/(h*sc));
+    if (di==0.0) return(0.0);
+    return(-WdW(di/h,ker)*sin(u/sc)/(h*sc*di));
+  }
+  if (sty==STCPAR) return(0.0);
+  if (kt==KPROD)
+    return(-WdW(u/(h*sc),ker)/(h*sc));
+  if (di==0.0) return(0.0);
+  return(-WdW(di/h,ker)*u/(h*di*sc*sc));
+}
+
+double weightdd(u,sc,d,ker,kt,h,sty,di,i0,i1)
+double *u, *sc, h, di;
+int d, ker, kt, i0, i1, *sty;
+{ double w;
+  w = 1;
+  if (kt==KPROD)
+  {
+    w = WdW(u[i0]/(h*sc[i0]),ker)*WdW(u[i1]/(h*sc[i1]),ker)/(h*h*sc[i0]*sc[i1]);
+  }
+  return(0.0);
+}
+
+/* Derivatives W'(u)/u.
+   Used in simult. conf. band computations,
+   and kernel density bandwidth selectors. */
+double Wd(u,ker)
+double u;
+int ker;
+{ double v;
+  if (ker==WGAUS) return(-SQR(GFACT)*exp(-SQR(GFACT*u)/2));
+  if (ker==WPARM) return(0.0);
+  if (fabs(u)>1) return(0.0);
+  switch(ker)
+  { case WEPAN: return(-2.0);
+    case WBISQ: return(-4*(1-u*u));
+    case WTCUB: v = 1-u*u*u;
+                return(-9*v*v*u);
+    case WTRWT: v = 1-u*u;
+                return(-6*v*v);
+    default: LERR(("Invalid kernel %d in Wd",ker));
+  }
+  return(0.0);
+}
+
+/* Second derivatives W''(u)-W'(u)/u.
+   used in simult. conf. band computations in >1 dimension. */
+double Wdd(u,ker)
+double u;
+int ker;
+{ double v;
+  if (ker==WGAUS) return(SQR(u*GFACT*GFACT)*exp(-SQR(u*GFACT)/2));
+  if (ker==WPARM) return(0.0);
+  if (u>1) return(0.0);
+  switch(ker)
+  { case WBISQ: return(12*u*u);
+    case WTCUB: v = 1-u*u*u;
+                return(-9*u*v*v+54*u*u*u*u*v);
+    case WTRWT: return(24*u*u*(1-u*u));
+    default: LERR(("Invalid kernel %d in Wdd",ker));
+  }
+  return(0.0);
+}
+
+/* int u1^j1..ud^jd W(u) du.
+   Used for local log-linear density estimation.
+   Assume all j_i are even.
+   Also in some bandwidth selection.
+*/
+double wint(d,j,nj,ker)
+int d, *j, nj, ker;
+{ double I, z;
+  int k, dj;
+  dj = d;
+  for (k=0; k<nj; k++) dj += j[k];
+  switch(ker) /* int_0^1 u^(dj-1) W(u)du  */
+  { case WRECT: I = 1.0/dj; break;
+    case WEPAN: I = 2.0/(dj*(dj+2)); break;
+    case WBISQ: I = 8.0/(dj*(dj+2)*(dj+4)); break;
+    case WTCUB: I = 162.0/(dj*(dj+3)*(dj+6)*(dj+9)); break;
+    case WTRWT: I = 48.0/(dj*(dj+2)*(dj+4)*(dj+6)); break;
+    case WTRIA: I = 1.0/(dj*(dj+1)); break;
+    case WQUQU: I = 384.0/(dj*(dj+2)*(dj+4)*(dj+6)*(dj+8)); break;
+    case W6CUB: I = 524880.0/(dj*(dj+3)*(dj+6)*(dj+9)*(dj+12)*(dj+15)*(dj+18)); break;
+    case WGAUS: switch(d)
+                { case 1: I = S2PI/GFACT; break;
+                  case 2: I = 2*PI/(GFACT*GFACT); break;
+                  default: I = exp(d*log(S2PI/GFACT)); /* for nj=0 */
+                }
+                for (k=0; k<nj; k++) /* deliberate drop */
+                  switch(j[k])
+                  { case 4: I *= 3.0/(GFACT*GFACT);
+                    case 2: I /= GFACT*GFACT;
+                  }
+                return(I);
+    case WEXPL: I = factorial(dj-1)/ipower(EFACT,dj); break;
+    default: LERR(("Unknown kernel %d in exacint",ker));
+  }
+  if ((d==1) && (nj==0)) return(2*I); /* common case quick */
+  z = (d-nj)*LOGPI/2-mut_lgammai(dj);
+  for (k=0; k<nj; k++) z += mut_lgammai(j[k]+1);
+  return(2*I*exp(z));
+}
+
+/* taylor series expansion of weight function around x.
+   0 and 1 are common arguments, so are worth programming
+   as special cases.
+   Used in density estimation.
+*/
+int wtaylor(f,x,ker)
+double *f, x;
+int ker;
+{ double v;
+  switch(ker)
+  { case WRECT:
+      f[0] = 1.0;
+      return(1);
+    case WEPAN:
+      f[0] = 1-x*x; f[1] = -2*x; f[2] = -1;
+      return(3);
+    case WBISQ:
+      v = 1-x*x;
+      f[0] = v*v;   f[1] = -4*x*v; f[2] = 4-6*v;
+      f[3] = 4*x;   f[4] = 1;
+      return(5);
+    case WTCUB:
+      if (x==1.0)
+      { f[0] = f[1] = f[2] = 0; f[3] = -27; f[4] = -81; f[5] = -108;
+        f[6] = -81; f[7] = -36; f[8] = -9; f[9] = -1; return(10); }
+      if (x==0.0)
+      { f[1] = f[2] = f[4] = f[5] = f[7] = f[8] = 0;
+        f[0] = 1; f[3] = -3; f[6] = 3; f[9] = -1; return(10); }
+      v = 1-x*x*x;
+      f[0] = v*v*v; f[1] = -9*v*v*x*x; f[2] = x*v*(27-36*v);
+      f[3] = -27+v*(108-84*v);         f[4] = -3*x*x*(27-42*v);
+      f[5] = x*(-108+126*v);           f[6] = -81+84*v;
+      f[7] = -36*x*x; f[8] = -9*x;     f[9] = -1;
+      return(10);
+    case WTRWT:
+      v = 1-x*x;
+      f[0] = v*v*v; f[1] = -6*x*v*v; f[2] = v*(12-15*v);
+      f[3] = x*(20*v-8); f[4] = 15*v-12; f[5] = -6; f[6] = -1;
+      return(7);
+    case WTRIA:
+      f[0] = 1-x; f[1] = -1;
+      return(2);
+    case WQUQU:
+      v = 1-x*x;
+      f[0] = v*v*v*v; f[1] = -8*x*v*v*v; f[2] = v*v*(24-28*v);
+      f[3] = v*x*(56*v-32); f[4] = (70*v-80)*v+16; f[5] = x*(32-56*v);
+      f[6] = 24-28*v; f[7] = 8*x; f[8] = 1;
+      return(9);
+    case W6CUB:
+      v = 1-x*x*x;
+      f[0] = v*v*v*v*v*v;
+      f[1] = -18*x*x*v*v*v*v*v;
+      f[2] = x*v*v*v*v*(135-153*v);
+      f[3] = v*v*v*(-540+v*(1350-816*v));
+      f[4] = x*x*v*v*(1215-v*(4050-v*3060));
+      f[5] = x*v*(-1458+v*(9234+v*(-16254+v*8568)));
+      f[6] = 729-v*(10206-v*(35154-v*(44226-v*18564)));
+      f[7] = x*x*(4374-v*(30132-v*(56862-v*31824)));
+      f[8] = x*(12393-v*(61479-v*(92664-v*43758)));
+      f[9] = 21870-v*(89100-v*(115830-v*48620));
+      f[10]= x*x*(26730-v*(69498-v*43758));
+      f[11]= x*(23814-v*(55458-v*31824));
+      f[12]= 15849-v*(34398-v*18564);
+      f[13]= x*x*(7938-8568*v);
+      f[14]= x*(2970-3060*v);
+      f[15]= 810-816*v;
+      f[16]= 153*x*x;
+      f[17]= 18*x;
+      f[18]= 1;
+      return(19);
+  }
+  LERR(("Invalid kernel %d in wtaylor",ker));
+  return(0);
+}
+
+/* convolution int W(x)W(x+v)dx.
+   used in kde bandwidth selection.
+*/
+double Wconv(v,ker)
+double v;
+int ker;
+{ double v2;
+  switch(ker)
+  { case WGAUS: return(SQRPI/GFACT*exp(-SQR(GFACT*v)/4));
+    case WRECT:
+      v = fabs(v);
+      if (v>2) return(0.0);
+      return(2-v);
+    case WEPAN:
+      v = fabs(v);
+      if (v>2) return(0.0);
+      return((2-v)*(16+v*(8-v*(16-v*(2+v))))/30);
+    case WBISQ:
+      v = fabs(v);
+      if (v>2) return(0.0);
+      v2 = 2-v;
+      return(v2*v2*v2*v2*v2*(16+v*(40+v*(36+v*(10+v))))/630);
+  }
+  LERR(("Wconv not implemented for kernel %d",ker));
+  return(0.0);
+}
+
+/* derivative of Wconv.
+   1/v d/dv int W(x)W(x+v)dx
+   used in kde bandwidth selection.
+*/
+double Wconv1(v,ker)
+double v;
+int ker;
+{ double v2;
+  v = fabs(v);
+  switch(ker)
+  { case WGAUS: return(-0.5*SQRPI*GFACT*exp(-SQR(GFACT*v)/4));
+    case WRECT:
+      if (v>2) return(0.0);
+      return(1.0);
+    case WEPAN:
+      if (v>2) return(0.0);
+      return((-16+v*(12-v*v))/6);
+    case WBISQ:
+      if (v>2) return(0.0);
+      v2 = 2-v;
+      return(-v2*v2*v2*v2*(32+v*(64+v*(24+v*3)))/210);
+  }
+  LERR(("Wconv1 not implemented for kernel %d",ker));
+  return(0.0);
+}
+
+/* 4th derivative of Wconv.
+   used in kde bandwidth selection (BCV, SJPI, GKK)
+*/
+double Wconv4(v,ker)
+double v;
+int ker;
+{ double gv;
+  switch(ker)
+  { case WGAUS:
+      gv = GFACT*v;
+      return(exp(-SQR(gv)/4)*GFACT*GFACT*GFACT*(12-gv*gv*(12-gv*gv))*SQRPI/16);
+  }
+  LERR(("Wconv4 not implemented for kernel %d",ker));
+  return(0.0);
+}
+
+/* 5th derivative of Wconv.
+   used in kde bandwidth selection (BCV method only)
+*/
+double Wconv5(v,ker) /* (d/dv)^5 int W(x)W(x+v)dx */
+double v;
+int ker;
+{ double gv;
+  switch(ker)
+  { case WGAUS:
+      gv = GFACT*v;
+      return(-exp(-SQR(gv)/4)*GFACT*GFACT*GFACT*GFACT*gv*(60-gv*gv*(20-gv*gv))*SQRPI/32);
+  }
+  LERR(("Wconv5 not implemented for kernel %d",ker));
+  return(0.0);
+}
+
+/* 6th derivative of Wconv.
+   used in kde bandwidth selection (SJPI)
+*/
+double Wconv6(v,ker)
+double v;
+int ker;
+{ double gv, z;
+  switch(ker)
+  { case WGAUS:
+      gv = GFACT*v;
+      gv = gv*gv;
+      z = exp(-gv/4)*(-120+gv*(180-gv*(30-gv)))*0.02769459142;
+      gv = GFACT*GFACT;
+      return(z*gv*gv*GFACT);
+  }
+  LERR(("Wconv6 not implemented for kernel %d",ker));
+  return(0.0);
+}
+
+/* int W(v)^2 dv / (int v^2 W(v) dv)^2
+   used in some bandwidth selectors
+*/
+double Wikk(ker,deg)
+int ker, deg;
+{ switch(deg)
+  { case 0:
+    case 1: /* int W(v)^2 dv / (int v^2 W(v) dv)^2 */
+      switch(ker)
+      { case WRECT: return(4.5);
+        case WEPAN: return(15.0);
+        case WBISQ: return(35.0);
+        case WGAUS: return(0.2820947918*GFACT*GFACT*GFACT*GFACT*GFACT);
+        case WTCUB: return(34.152111046847892);   /* 59049 / 1729 */
+        case WTRWT: return(66.083916083916080);   /* 9450/143 */
+      }
+    case 2:
+    case 3: /* 4!^2/8*int(W1^2)/int(v^4W1)^2
+               W1=W*(n4-v^2n2)/(n0n4-n2n2) */
+      switch(ker)
+      { case WRECT: return(11025.0);
+        case WEPAN: return(39690.0);
+        case WBISQ: return(110346.9231);
+        case WGAUS: return(14527.43412);
+        case WTCUB: return(126500.5904);
+        case WTRWT: return(254371.7647);
+      }
+  }
+  LERR(("Wikk not implemented for kernel %d, deg %d",ker,deg));
+  return(0.0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/libmut.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,3207 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+
+#include "mex.h"
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include <math.h>
+#include "mut.h"
+
+/* stirlerr(n) = log(n!) - log( sqrt(2*pi*n)*(n/e)^n ) */
+
+#define S0 0.083333333333333333333       /* 1/12 */
+#define S1 0.00277777777777777777778     /* 1/360 */
+#define S2 0.00079365079365079365079365  /* 1/1260 */
+#define S3 0.000595238095238095238095238 /* 1/1680 */
+#define S4 0.0008417508417508417508417508 /* 1/1188 */
+
+/*
+  error for 0, 0.5, 1.0, 1.5, ..., 14.5, 15.0.
+*/
+static double sferr_halves[31] = {
+0.0, /* n=0 - wrong, place holder only */
+0.1534264097200273452913848,  /* 0.5 */
+0.0810614667953272582196702,  /* 1.0 */
+0.0548141210519176538961390,  /* 1.5 */
+0.0413406959554092940938221,  /* 2.0 */
+0.03316287351993628748511048, /* 2.5 */
+0.02767792568499833914878929, /* 3.0 */
+0.02374616365629749597132920, /* 3.5 */
+0.02079067210376509311152277, /* 4.0 */
+0.01848845053267318523077934, /* 4.5 */
+0.01664469118982119216319487, /* 5.0 */
+0.01513497322191737887351255, /* 5.5 */
+0.01387612882307074799874573, /* 6.0 */
+0.01281046524292022692424986, /* 6.5 */
+0.01189670994589177009505572, /* 7.0 */
+0.01110455975820691732662991, /* 7.5 */
+0.010411265261972096497478567, /* 8.0 */
+0.009799416126158803298389475, /* 8.5 */
+0.009255462182712732917728637, /* 9.0 */
+0.008768700134139385462952823, /* 9.5 */
+0.008330563433362871256469318, /* 10.0 */
+0.007934114564314020547248100, /* 10.5 */
+0.007573675487951840794972024, /* 11.0 */
+0.007244554301320383179543912, /* 11.5 */
+0.006942840107209529865664152, /* 12.0 */
+0.006665247032707682442354394, /* 12.5 */
+0.006408994188004207068439631, /* 13.0 */
+0.006171712263039457647532867, /* 13.5 */
+0.005951370112758847735624416, /* 14.0 */
+0.005746216513010115682023589, /* 14.5 */
+0.005554733551962801371038690  /* 15.0 */
+};
+
+double stirlerr(n)
+double n;
+{ double nn;
+
+  if (n<15.0)
+  { nn = 2.0*n;
+    if (nn==(int)nn) return(sferr_halves[(int)nn]);
+    return(mut_lgamma(n+1.0) - (n+0.5)*log((double)n)+n - HF_LG_PIx2);
+  }
+
+  nn = (double)n;
+  nn = nn*nn;
+  if (n>500) return((S0-S1/nn)/n);
+  if (n>80) return((S0-(S1-S2/nn)/nn)/n);
+  if (n>35) return((S0-(S1-(S2-S3/nn)/nn)/nn)/n);
+  return((S0-(S1-(S2-(S3-S4/nn)/nn)/nn)/nn)/n);
+}
+
+double bd0(x,np)
+double x, np;
+{ double ej, s, s1, v;
+  int j;
+  if (fabs(x-np)<0.1*(x+np))
+  {
+    s = (x-np)*(x-np)/(x+np);
+    v = (x-np)/(x+np);
+    ej = 2*x*v; v = v*v;
+    for (j=1; ;++j)
+    { ej *= v;
+      s1 = s+ej/((j<<1)+1);
+      if (s1==s) return(s1);
+      s = s1;
+    }
+  }
+  return(x*log(x/np)+np-x);
+}
+
+/*
+  Raw binomial probability calculation.
+  (1) This has both p and q arguments, when one may be represented
+      more accurately than the other (in particular, in df()).
+  (2) This should NOT check that inputs x and n are integers. This
+      should be done in the calling function, where necessary.
+  (3) Does not check for 0<=p<=1 and 0<=q<=1 or NaN's. Do this in
+      the calling function.
+*/
+double dbinom_raw(x,n,p,q,give_log)
+double x, n, p, q;
+int give_log;
+{ double f, lc;
+
+  if (p==0.0) return((x==0) ? D_1 : D_0);
+  if (q==0.0) return((x==n) ? D_1 : D_0);
+
+  if (x==0)
+  { lc = (p<0.1) ? -bd0(n,n*q) - n*p : n*log(q);
+    return( DEXP(lc) );
+  }
+
+  if (x==n)
+  { lc = (q<0.1) ? -bd0(n,n*p) - n*q : n*log(p);
+    return( DEXP(lc) );
+  }
+
+  if ((x<0) | (x>n)) return( D_0 );
+
+  lc = stirlerr(n) - stirlerr(x) - stirlerr(n-x)
+         - bd0(x,n*p) - bd0(n-x,n*q);
+  f = (PIx2*x*(n-x))/n;
+
+  return( FEXP(f,lc) );
+}
+
+double dbinom(x,n,p,give_log)
+int x, n;
+double p;
+int give_log;
+{ 
+  if ((p<0) | (p>1) | (n<0)) return(INVALID_PARAMS);
+  if (x<0) return( D_0 );
+  
+  return( dbinom_raw((double)x,(double)n,p,1-p,give_log) );
+}
+
+/*
+  Poisson probability  lb^x exp(-lb) / x!.
+  I don't check that x is an integer, since other functions
+  that call dpois_raw() (i.e. dgamma) may use a fractional
+  x argument.
+*/
+double dpois_raw(x,lambda,give_log)
+int give_log;
+double x, lambda;
+{
+  if (lambda==0) return( (x==0) ? D_1 : D_0 );
+  if (x==0) return( DEXP(-lambda) );
+  if (x<0) return( D_0 );
+
+  return(FEXP( PIx2*x, -stirlerr(x)-bd0(x,lambda) ));
+}
+
+double dpois(x,lambda,give_log)
+int x, give_log;
+double lambda;
+{
+  if (lambda<0) return(INVALID_PARAMS);
+  if (x<0) return( D_0 );
+
+  return( dpois_raw((double)x,lambda,give_log) );
+}
+
+double dbeta(x,a,b,give_log)
+double x, a, b;
+int give_log;
+{ double f, p;
+
+  if ((a<=0) | (b<=0)) return(INVALID_PARAMS);
+  if ((x<=0) | (x>=1)) return(D_0);
+
+  if (a<1)
+  { if (b<1)                                    /* a<1, b<1 */
+    { f = a*b/((a+b)*x*(1-x));
+      p = dbinom_raw(a,a+b,x,1-x,give_log);
+    }
+    else                                        /* a<1, b>=1 */
+    { f = a/x;
+      p = dbinom_raw(a,a+b-1,x,1-x,give_log);
+    }
+  }
+  else
+  { if (b<1)                                    /* a>=1, b<1 */
+    { f = b/(1-x);
+      p = dbinom_raw(a-1,a+b-1,x,1-x,give_log);
+    }
+    else                                        /* a>=1, b>=1 */
+    { f = a+b-1;
+      p = dbinom_raw(a-1,(a-1)+(b-1),x,1-x,give_log);
+    }
+  }
+
+  return( (give_log) ? p + log(f) : p*f );
+}
+
+/*
+ *   To evaluate the F density, write it as a Binomial probability
+ *   with p = x*m/(n+x*m). For m>=2, use the simplest conversion.
+ *   For m<2, (m-2)/2<0 so the conversion will not work, and we must use
+ *   a second conversion. Note the division by p; this seems unavoidable
+ *   for m < 2, since the F density has a singularity as x (or p) -> 0.
+ */
+double df(x,m,n,give_log)
+double x, m, n;
+int give_log;
+{ double p, q, f, dens;
+
+  if ((m<=0) | (n<=0)) return(INVALID_PARAMS);
+  if (x <= 0.0) return(D_0);
+
+  f = 1.0/(n+x*m);
+  q = n*f;
+  p = x*m*f;
+
+  if (m>=2)
+  { f = m*q/2;
+    dens = dbinom_raw((m-2)/2.0, (m+n-2)/2.0, p, q, give_log);
+  }
+  else
+  { f = m*m*q / (2*p*(m+n));
+    dens = dbinom_raw(m/2.0, (m+n)/2.0, p, q, give_log);
+  }
+
+  return((give_log) ? log(f)+dens : f*dens);
+}
+
+/*
+ * Gamma density,
+ *                  lb^r x^{r-1} exp(-lb*x)
+ *      p(x;r,lb) = -----------------------
+ *                          (r-1)!
+ *
+ * If USE_SCALE is defined below, the lb argument will be interpreted
+ * as a scale parameter (i.e. replace lb by 1/lb above). Otherwise,
+ * it is interpreted as a rate parameter, as above.
+ */
+
+/* #define USE_SCALE */
+
+double dgamma(x,r,lambda,give_log)
+int give_log;
+double x, r, lambda;
+{ double pr;
+
+  if ((r<=0) | (lambda<0)) return(INVALID_PARAMS);
+  if (x<=0.0) return( D_0 );
+
+#ifdef USE_SCALE
+  lambda = 1.0/lambda;
+#endif
+
+  if (r<1)
+  { pr = dpois_raw(r,lambda*x,give_log);
+    return( (give_log) ?  pr + log(r/x) : pr*r/x );
+  }
+
+  pr = dpois_raw(r-1.0,lambda*x,give_log);
+  return( (give_log) ? pr + log(lambda) : lambda*pr);
+}
+
+double dchisq(x, df, give_log)
+double x, df;
+int give_log;
+{
+ return(dgamma(x, df/2.0,
+  0.5
+  ,give_log));
+/*
+#ifdef USE_SCALE
+  2.0
+#else
+  0.5
+#endif
+  ,give_log));
+*/
+}
+
+/*
+ * Given a sequence of r successes and b failures, we sample n (\le b+r)
+ * items without replacement. The hypergeometric probability is the
+ * probability of x successes:
+ *
+ *                dbinom(x,r,p) * dbinom(n-x,b,p)
+ *   p(x;r,b,n) = ---------------------------------
+ *                          dbinom(n,r+b,p)
+ *
+ * for any p. For numerical stability, we take p=n/(r+b); with this choice,
+ * the denominator is not exponentially small.
+ */
+double dhyper(x,r,b,n,give_log)
+int x, r, b, n, give_log;
+{ double p, q, p1, p2, p3;
+
+  if ((r<0) | (b<0) | (n<0) | (n>r+b))
+    return( INVALID_PARAMS );
+
+  if (x<0) return(D_0);
+
+  if (n==0) return((x==0) ? D_1 : D_0);
+
+  p = ((double)n)/((double)(r+b));
+  q = ((double)(r+b-n))/((double)(r+b));
+
+  p1 = dbinom_raw((double)x,(double)r,p,q,give_log);
+  p2 = dbinom_raw((double)(n-x),(double)b,p,q,give_log);
+  p3 = dbinom_raw((double)n,(double)(r+b),p,q,give_log);
+
+  return( (give_log) ? p1 + p2 - p3 : p1*p2/p3 );
+}
+
+/*
+  probability of x failures before the nth success.
+*/
+double dnbinom(x,n,p,give_log)
+double n, p;
+int x, give_log;
+{ double prob, f;
+
+  if ((p<0) | (p>1) | (n<=0)) return(INVALID_PARAMS);
+
+  if (x<0) return( D_0 );
+
+  prob = dbinom_raw(n,x+n,p,1-p,give_log);
+  f = n/(n+x);
+
+  return((give_log) ? log(f) + prob : f*prob);
+}
+
+double dt(x, df, give_log)
+double x, df;
+int give_log;
+{ double t, u, f;
+
+  if (df<=0.0) return(INVALID_PARAMS);
+
+  /*
+     exp(t) = Gamma((df+1)/2) /{ sqrt(df/2) * Gamma(df/2) }
+            = sqrt(df/2) / ((df+1)/2) * Gamma((df+3)/2) / Gamma((df+2)/2).
+     This form leads to a computation that should be stable for all
+     values of df, including df -> 0 and df -> infinity.
+  */
+  t = -bd0(df/2.0,(df+1)/2.0) + stirlerr((df+1)/2.0) - stirlerr(df/2.0);
+
+  if (x*x>df)
+    u = log( 1+ x*x/df ) * df/2;
+  else
+    u = -bd0(df/2.0,(df+x*x)/2.0) + x*x/2.0;
+
+  f = PIx2*(1+x*x/df);
+
+  return( FEXP(f,t-u) );
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * Provides mut_erf() and mut_erfc() functions. Also mut_pnorm().
+ * Had too many problems with erf()'s built into math libraries
+ * (when they existed). Hence the need to write my own...
+ *
+ * Algorithm from Walter Kr\"{a}mer, Frithjof Blomquist.
+ * "Algorithms with Guaranteed Error Bounds for the Error Function
+ * and Complementary Error Function"
+ * Preprint 2000/2, Bergische Universt\"{a}t GH Wuppertal
+ * http://www.math.uni-wuppertal.de/wrswt/preprints/prep_00_2.pdf
+ *
+ * Coded by Catherine Loader, September 2006.
+ */
+
+#include "mut.h"
+
+double erf1(double x)  /* erf; 0 < x < 0.65) */
+{ double p[5] = {1.12837916709551256e0,  /* 2/sqrt(pi) */
+                 1.35894887627277916e-1,
+                 4.03259488531795274e-2,
+                 1.20339380863079457e-3,
+                 6.49254556481904354e-5};
+  double q[5] = {1.00000000000000000e0,
+                 4.53767041780002545e-1,
+                 8.69936222615385890e-2,
+                 8.49717371168693357e-3,
+                 3.64915280629351082e-4};
+  double x2, p4, q4;
+  x2 = x*x;
+  p4 = p[0] + p[1]*x2 + p[2]*x2*x2 + p[3]*x2*x2*x2 + p[4]*x2*x2*x2*x2;
+  q4 = q[0] + q[1]*x2 + q[2]*x2*x2 + q[3]*x2*x2*x2 + q[4]*x2*x2*x2*x2;
+  return(x*p4/q4);
+}
+
+double erf2(double x) /* erfc; 0.65 <= x < 2.2 */
+{ double p[6] = {9.99999992049799098e-1,
+                 1.33154163936765307e0,
+                 8.78115804155881782e-1,
+                 3.31899559578213215e-1,
+                 7.14193832506776067e-2,
+                 7.06940843763253131e-3};
+  double q[7] = {1.00000000000000000e0,
+                 2.45992070144245533e0,
+                 2.65383972869775752e0,
+                 1.61876655543871376e0,
+                 5.94651311286481502e-1,
+                 1.26579413030177940e-1,
+                 1.25304936549413393e-2};
+  double x2, p5, q6;
+  x2 = x*x;
+  p5 = p[0] + p[1]*x + p[2]*x2 + p[3]*x2*x + p[4]*x2*x2 + p[5]*x2*x2*x;
+  q6 = q[0] + q[1]*x + q[2]*x2 + q[3]*x2*x + q[4]*x2*x2 + q[5]*x2*x2*x + q[6]*x2*x2*x2;
+  return( exp(-x2)*p5/q6 );
+}
+
+double erf3(double x) /* erfc; 2.2 < x <= 6 */
+{ double p[6] = {9.99921140009714409e-1,
+                 1.62356584489366647e0,
+                 1.26739901455873222e0,
+                 5.81528574177741135e-1,
+                 1.57289620742838702e-1,
+                 2.25716982919217555e-2};
+  double q[7] = {1.00000000000000000e0,
+                 2.75143870676376208e0,
+                 3.37367334657284535e0,
+                 2.38574194785344389e0,
+                 1.05074004614827206e0,
+                 2.78788439273628983e-1,
+                 4.00072964526861362e-2};
+  double x2, p5, q6;
+  x2 = x*x;
+  p5 = p[0] + p[1]*x + p[2]*x2 + p[3]*x2*x + p[4]*x2*x2 + p[5]*x2*x2*x;
+  q6 = q[0] + q[1]*x + q[2]*x2 + q[3]*x2*x + q[4]*x2*x2 + q[5]*x2*x2*x + q[6]*x2*x2*x2;
+  return( exp(-x2)*p5/q6 );
+}
+
+double erf4(double x)  /* erfc; x > 6.0 */
+{ double p[5] = {5.64189583547756078e-1,
+                 8.80253746105525775e0,
+                 3.84683103716117320e1,
+                 4.77209965874436377e1,
+                 8.08040729052301677e0};
+  double q[5] = {1.00000000000000000e0,
+                 1.61020914205869003e1,
+                 7.54843505665954743e1,
+                 1.12123870801026015e2,
+                 3.73997570145040850e1};
+  double x2, p4, q4;
+  if (x>26.5432) return(0.0);
+  x2 = 1.0/(x*x);
+  p4 = p[0] + p[1]*x2 + p[2]*x2*x2 + p[3]*x2*x2*x2 + p[4]*x2*x2*x2*x2;
+  q4 = q[0] + q[1]*x2 + q[2]*x2*x2 + q[3]*x2*x2*x2 + q[4]*x2*x2*x2*x2;
+  return(exp(-x*x)*p4/(x*q4));
+}
+
+double mut_erfc(double x)
+{ if (x<0.0) return(2.0-mut_erfc(-x));
+  if (x==0.0) return(1.0);
+  if (x<0.65) return(1.0-erf1(x));
+  if (x<2.2) return(erf2(x));
+  if (x<6.0) return(erf3(x));
+  return(erf4(x));
+}
+
+double mut_erf(double x)
+{ 
+  if (x<0.0) return(-mut_erf(-x));
+  if (x==0.0) return(0.0);
+  if (x<0.65) return(erf1(x));
+  if (x<2.2) return(1.0-erf2(x));
+  if (x<6.0) return(1.0-erf3(x));
+  return(1.0-erf4(x));
+}
+
+double mut_pnorm(double x)
+{ if (x<0.0) return(mut_erfc(-x/SQRT2)/2);
+  return((1.0+mut_erf(x/SQRT2))/2);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+
+static double lookup_gamma[21] = {
+  0.0, /* place filler */
+  0.572364942924699971,  /* log(G(0.5)) = log(sqrt(pi)) */
+  0.000000000000000000,  /* log(G(1)) = log(0!) */
+ -0.120782237635245301,  /* log(G(3/2)) = log(sqrt(pi)/2)) */
+  0.000000000000000000,  /* log(G(2)) = log(1!) */
+  0.284682870472919181,  /* log(G(5/2)) = log(3sqrt(pi)/4) */
+  0.693147180559945286,  /* log(G(3)) = log(2!) */
+  1.200973602347074287,  /* etc */
+  1.791759469228054957,
+  2.453736570842442344,
+  3.178053830347945752,
+  3.957813967618716511,
+  4.787491742782045812,
+  5.662562059857141783,
+  6.579251212010101213,
+  7.534364236758732680,
+  8.525161361065414667,
+  9.549267257300996903,
+ 10.604602902745250859,
+ 11.689333420797268559,
+ 12.801827480081469091 };
+
+/*
+ * coefs are B(2n)/(2n(2n-1))  2n(2n-1) =
+ *  2n  B(2n) 2n(2n-1) coef
+ *   2  1/6     2      1/12
+ *   4 -1/30   12     -1/360
+ *   6  1/42   30      1/1260
+ *   8 -1/30   56     -1/1680
+ *  10  5/66   90      1/1188
+ *  12 -691/2730 132   691/360360
+ */
+
+double mut_lgamma(double x)
+{ double f, z, x2, se;
+  int ix;
+
+/* lookup table for common values.
+ */
+  ix = (int)(2*x);
+  if (((ix>=1) & (ix<=20)) && (ix==2*x)) return(lookup_gamma[ix]);
+
+  f = 1.0;
+  while (x <= 15)
+  { f *= x;
+    x += 1.0;
+  }
+
+  x2 = 1.0/(x*x);
+  z = (x-0.5)*log(x) - x + HF_LG_PIx2;
+  se = (13860 - x2*(462 - x2*(132 - x2*(99 - 140*x2))))/(166320*x);
+
+  return(z + se - log(f));
+}
+
+double mut_lgammai(int i)  /* log(Gamma(i/2)) for integer i */
+{ if (i>20) return(mut_lgamma(i/2.0));
+  return(lookup_gamma[i]);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * A is a n*p matrix, find the cholesky decomposition
+ * of the first p rows. In most applications, will want n=p.
+ *
+ * chol_dec(A,n,p)       computes the decomoposition R'R=A.
+ *                       (note that R is stored in the input A).
+ * chol_solve(A,v,n,p)   computes (R'R)^{-1}v
+ * chol_hsolve(A,v,n,p)  computes (R')^{-1}v
+ * chol_isolve(A,v,n,p)  computes (R)^{-1}v
+ * chol_qf(A,v,n,p)      computes ||(R')^{-1}v||^2.
+ * chol_mult(A,v,n,p)    computes (R'R)v
+ *
+ * The solve functions assume that A is already decomposed.
+ * chol_solve(A,v,n,p) is equivalent to applying chol_hsolve()
+ * and chol_isolve() in sequence.
+ */
+
+#include <math.h>
+#include "mut.h"
+
+void chol_dec(A,n,p)
+double *A;
+int n, p;
+{ int i, j, k;
+
+  for (j=0; j<p; j++)
+  { k = n*j+j;
+    for (i=0; i<j; i++) A[k] -= A[n*j+i]*A[n*j+i];
+    if (A[k]<=0)
+    { for (i=j; i<p; i++) A[n*i+j] = 0.0; }
+    else
+    { A[k] = sqrt(A[k]);
+      for (i=j+1; i<p; i++)
+      { for (k=0; k<j; k++)
+          A[n*i+j] -= A[n*i+k]*A[n*j+k];
+        A[n*i+j] /= A[n*j+j];
+      }
+    }
+  }
+  for (j=0; j<p; j++)
+    for (i=j+1; i<p; i++) A[n*j+i] = 0.0;
+}
+
+int chol_solve(A,v,n,p)
+double *A, *v;
+int n, p;
+{ int i, j;
+
+  for (i=0; i<p; i++)
+  { for (j=0; j<i; j++) v[i] -= A[i*n+j]*v[j];
+    v[i] /= A[i*n+i];
+  }
+  for (i=p-1; i>=0; i--)
+  { for (j=i+1; j<p; j++) v[i] -= A[j*n+i]*v[j];
+    v[i] /= A[i*n+i];
+  }
+  return(p);
+}
+
+int chol_hsolve(A,v,n,p)
+double *A, *v;
+int n, p;
+{ int i, j;
+
+  for (i=0; i<p; i++)
+  { for (j=0; j<i; j++) v[i] -= A[i*n+j]*v[j];
+    v[i] /= A[i*n+i];
+  }
+  return(p);
+}
+
+int chol_isolve(A,v,n,p)
+double *A, *v;
+int n, p;
+{ int i, j;
+
+  for (i=p-1; i>=0; i--)
+  { for (j=i+1; j<p; j++) v[i] -= A[j*n+i]*v[j];
+    v[i] /= A[i*n+i];
+  }
+  return(p);
+}
+
+double chol_qf(A,v,n,p)
+double *A, *v;
+int n, p;
+{ int i, j;
+  double sum;
+ 
+  sum = 0.0;
+  for (i=0; i<p; i++)
+  { for (j=0; j<i; j++) v[i] -= A[i*n+j]*v[j];
+    v[i] /= A[i*n+i];
+    sum += v[i]*v[i];
+  }
+  return(sum);
+}
+
+int chol_mult(A,v,n,p)
+double *A, *v;
+int n, p;
+{ int i, j;
+  double sum;
+  for (i=0; i<p; i++)
+  { sum = 0;
+    for (j=i; j<p; j++) sum += A[j*n+i]*v[j];
+    v[i] = sum;
+  }
+  for (i=p-1; i>=0; i--)
+  { sum = 0;
+    for (j=0; j<=i; j++) sum += A[i*n+j]*v[j];
+    v[i] = sum;
+  }
+  return(1);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include <stdio.h>
+#include <math.h>
+#include "mut.h"
+#define E_MAXIT 20
+#define E_TOL 1.0e-10
+#define SQR(x) ((x)*(x))
+
+double e_tol(D,p)
+double *D;
+int p;
+{ double mx;
+  int i;
+  if (E_TOL <= 0.0) return(0.0);
+  mx = D[0];
+  for (i=1; i<p; i++) if (D[i*(p+1)]>mx) mx = D[i*(p+1)];
+  return(E_TOL*mx);
+}
+
+void eig_dec(X,P,d)
+double *X, *P;
+int d;
+{ int i, j, k, iter, ms;
+  double c, s, r, u, v;
+
+  for (i=0; i<d; i++)
+    for (j=0; j<d; j++) P[i*d+j] = (i==j);
+
+  for (iter=0; iter<E_MAXIT; iter++)
+  { ms = 0;
+    for (i=0; i<d; i++)
+      for (j=i+1; j<d; j++)
+        if (SQR(X[i*d+j]) > 1.0e-15*fabs(X[i*d+i]*X[j*d+j]))
+        { c = (X[j*d+j]-X[i*d+i])/2;
+          s = -X[i*d+j];
+          r = sqrt(c*c+s*s);
+          c /= r;
+          s = sqrt((1-c)/2)*(2*(s>0)-1);
+          c = sqrt((1+c)/2);
+          for (k=0; k<d; k++)
+          { u = X[i*d+k]; v = X[j*d+k];
+            X[i*d+k] = u*c+v*s;
+            X[j*d+k] = v*c-u*s;
+          }
+          for (k=0; k<d; k++)
+          { u = X[k*d+i]; v = X[k*d+j];
+            X[k*d+i] = u*c+v*s;
+            X[k*d+j] = v*c-u*s;
+          }
+          X[i*d+j] = X[j*d+i] = 0.0;
+          for (k=0; k<d; k++)
+          { u = P[k*d+i]; v = P[k*d+j];
+            P[k*d+i] = u*c+v*s;
+            P[k*d+j] = v*c-u*s;
+          }
+          ms = 1;
+        }
+    if (ms==0) return;
+  }
+  mut_printf("eig_dec not converged\n");
+}
+
+int eig_solve(J,x)
+jacobian *J;
+double *x;
+{ int d, i, j, rank;
+  double *D, *P, *Q, *w;
+  double tol;
+
+  D = J->Z;
+  P = Q = J->Q;
+  d = J->p;
+  w = J->wk;
+
+  tol = e_tol(D,d);
+
+  rank = 0;
+  for (i=0; i<d; i++)
+  { w[i] = 0.0;
+    for (j=0; j<d; j++) w[i] += P[j*d+i]*x[j];
+  }
+  for (i=0; i<d; i++)
+    if (D[i*d+i]>tol)
+    { w[i] /= D[i*(d+1)];
+      rank++;
+    }
+  for (i=0; i<d; i++)
+  { x[i] = 0.0;
+    for (j=0; j<d; j++) x[i] += Q[i*d+j]*w[j];
+  }
+  return(rank);
+}
+
+int eig_hsolve(J,v)
+jacobian *J;
+double *v;
+{ int i, j, p, rank;
+  double *D, *Q, *w;
+  double tol;
+
+  D = J->Z;
+  Q = J->Q;
+  p = J->p;
+  w = J->wk;
+
+  tol = e_tol(D,p);
+  rank = 0;
+
+  for (i=0; i<p; i++)
+  { w[i] = 0.0;
+    for (j=0; j<p; j++) w[i] += Q[j*p+i]*v[j];
+  }
+  for (i=0; i<p; i++)
+  { if (D[i*p+i]>tol)
+    { v[i] = w[i]/sqrt(D[i*(p+1)]);
+      rank++;
+    }
+    else v[i] = 0.0;
+  }
+  return(rank);
+}
+
+int eig_isolve(J,v)
+jacobian *J;
+double *v;
+{ int i, j, p, rank;
+  double *D, *Q, *w;
+  double tol;
+
+  D = J->Z;
+  Q = J->Q;
+  p = J->p;
+  w = J->wk;
+
+  tol = e_tol(D,p);
+  rank = 0;
+
+  for (i=0; i<p; i++)
+  { if (D[i*p+i]>tol)
+    { v[i] = w[i]/sqrt(D[i*(p+1)]);
+      rank++;
+    }
+    else v[i] = 0.0;
+  }
+
+  for (i=0; i<p; i++)
+  { w[i] = 0.0;
+    for (j=0; j<p; j++) w[i] += Q[i*p+j]*v[j];
+  }
+
+  return(rank);
+}
+
+double eig_qf(J,v)
+jacobian *J;
+double *v;
+{ int i, j, p;
+  double sum, tol;
+
+  p = J->p;
+  sum = 0.0;
+  tol = e_tol(J->Z,p);
+
+  for (i=0; i<p; i++)
+    if (J->Z[i*p+i]>tol)
+    { J->wk[i] = 0.0;
+      for (j=0; j<p; j++) J->wk[i] += J->Q[j*p+i]*v[j];
+      sum += J->wk[i]*J->wk[i]/J->Z[i*p+i];
+    }
+  return(sum);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  Integrate a function f over a circle or disc.
+ */
+
+#include "mut.h"
+
+void setM(M,r,s,c,b)
+double *M, r, s, c;
+int b;
+{ M[0] =-r*s; M[1] = r*c;
+  M[2] = b*c; M[3] = b*s;
+  M[4] =-r*c; M[5] = -s;
+  M[6] = -s;  M[7] = 0.0;
+  M[8] =-r*s; M[9] = c;
+  M[10]=   c; M[11]= 0.0;
+}
+
+void integ_circ(f,r,orig,res,mint,b)
+int (*f)(), mint, b;
+double r, *orig, *res;
+{ double y, x[2], theta, tres[MXRESULT], M[12], c, s;
+  int i, j, nr;
+  
+  y = 0;
+  for (i=0; i<mint; i++)
+  { theta = 2*PI*(double)i/(double)mint;
+    c = cos(theta); s = sin(theta);
+    x[0] = orig[0]+r*c;
+    x[1] = orig[1]+r*s;
+
+    if (b!=0)
+    { M[0] =-r*s; M[1] = r*c;
+      M[2] = b*c; M[3] = b*s;
+      M[4] =-r*c; M[5] = -s;
+      M[6] = -s;  M[7] = 0.0;
+      M[8] =-r*s; M[9] = c;
+      M[10]=   c; M[11]= 0.0;
+    }
+
+    nr = f(x,2,tres,M);
+    if (i==0) setzero(res,nr);
+    for (j=0; j<nr; j++) res[j] += tres[j];
+  }
+  y = 2 * PI * ((b==0)?r:1.0) / mint;
+  for (j=0; j<nr; j++) res[j] *= y;
+}
+
+void integ_disc(f,fb,fl,res,resb,mg)
+int (*f)(), (*fb)(), *mg;
+double *fl, *res, *resb;
+{ double x[2], y, r, tres[MXRESULT], *orig, rmin, rmax, theta, c, s, M[12];
+  int ct, ctb, i, j, k, nr, nrb, w;
+
+  orig = &fl[2];
+  rmax = fl[1];
+  rmin = fl[0];
+  y = 0.0;
+  ct = ctb = 0;
+
+  for (j=0; j<mg[1]; j++)
+  { theta = 2*PI*(double)j/(double)mg[1];
+    c = cos(theta); s = sin(theta);
+    for (i= (rmin>0) ? 0 : 1; i<=mg[0]; i++)
+    { r = rmin + (rmax-rmin)*i/mg[0];
+      w = (2+2*(i&1)-(i==0)-(i==mg[0]));
+      x[0] = orig[0] + r*c;
+      x[1] = orig[1] + r*s;
+      nr = f(x,2,tres,NULL);
+      if (ct==0) setzero(res,nr);
+      for (k=0; k<nr; k++) res[k] += w*r*tres[k];
+      ct++;
+      if (((i==0) | (i==mg[0])) && (fb!=NULL))
+      { setM(M,r,s,c,1-2*(i==0));
+        nrb = fb(x,2,tres,M);
+        if (ctb==0) setzero(resb,nrb);
+        ctb++;
+        for (k=0; k<nrb; k++) resb[k] += tres[k];
+      }
+    }
+  }
+
+
+/*  for (i= (rmin>0) ? 0 : 1; i<=mg[0]; i++)
+  {
+    r = rmin + (rmax-rmin)*i/mg[0];
+    w = (2+2*(i&1)-(i==0)-(i==mg[0]));
+
+    for (j=0; j<mg[1]; j++)
+    { theta = 2*PI*(double)j/(double)mg[1];
+      c = cos(theta); s = sin(theta);
+      x[0] = orig[0] + r*c;
+      x[1] = orig[1] + r*s;
+      nr = f(x,2,tres,NULL);
+      if (ct==0) setzero(res,nr);
+      ct++;
+      for (k=0; k<nr; k++) res[k] += w*r*tres[k];
+
+      if (((i==0) | (i==mg[0])) && (fb!=NULL))
+      { setM(M,r,s,c,1-2*(i==0));
+        nrb = fb(x,2,tres,M);
+        if (ctb==0) setzero(resb,nrb);
+        ctb++;
+        for (k=0; k<nrb; k++) resb[k] += tres[k];
+      }
+    }
+  } */
+  for (j=0; j<nr; j++) res[j] *= 2*PI*(rmax-rmin)/(3*mg[0]*mg[1]);
+  for (j=0; j<nrb; j++) resb[j] *= 2*PI/mg[1];
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  Multivariate integration of a vector-valued function
+ *  using Monte-Carlo method.
+ *
+ *  uses drand48() random number generator. Does not seed.
+ */
+
+#include <stdlib.h>
+#include "mut.h"
+extern void setzero();
+
+static double M[(1+MXIDIM)*MXIDIM*MXIDIM];
+
+void monte(f,ll,ur,d,res,n)
+int (*f)(), d, n;
+double *ll, *ur, *res;
+{
+  int i, j, nr;
+#ifdef WINDOWS
+  mut_printf("Sorry, Monte-Carlo Integration not enabled.\n");
+  for (i=0; i<n; i++) res[i] = 0.0;
+#else
+  double z, x[MXIDIM], tres[MXRESULT];
+
+srand48(234L);
+
+  for (i=0; i<n; i++)
+  { for (j=0; j<d; j++) x[j] = ll[j] + (ur[j]-ll[j])*drand48();
+    nr = f(x,d,tres,NULL);
+    if (i==0) setzero(res,nr);
+    for (j=0; j<nr; j++) res[j] += tres[j];
+  }
+
+  z = 1;
+  for (i=0; i<d; i++) z *= (ur[i]-ll[i]);
+  for (i=0; i<nr; i++) res[i] *= z/n;
+#endif
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  Multivariate integration of a vector-valued function
+ *  using Simpson's rule.
+ */
+
+#include <math.h>
+#include "mut.h"
+extern void setzero();
+
+static double M[(1+MXIDIM)*MXIDIM*MXIDIM];
+
+/* third order corners */
+void simp3(fd,x,d,resd,delta,wt,i0,i1,mg,ct,res2,index)
+int (*fd)(), d, wt, i0, i1, *mg, ct, *index;
+double *x, *resd, *delta, *res2;
+{ int k, l, m, nrd;
+  double zb;
+
+  for (k=i1+1; k<d; k++) if ((index[k]==0) | (index[k]==mg[k]))
+  {
+    setzero(M,d*d);
+    m = 0; zb = 1.0;
+    for (l=0; l<d; l++)
+      if ((l!=i0) & (l!=i1) & (l!=k))
+      { M[m*d+l] = 1.0;
+        m++;
+        zb *= delta[l];
+      }
+    M[(d-3)*d+i0] = (index[i0]==0) ? -1 : 1;
+    M[(d-2)*d+i1] = (index[i1]==0) ? -1 : 1;
+    M[(d-1)*d+k] = (index[k]==0) ? -1 : 1;
+    nrd = fd(x,d,res2,M);
+    if ((ct==0) & (i0==0) & (i1==1) & (k==2)) setzero(resd,nrd);
+    for (l=0; l<nrd; l++)
+      resd[l] += wt*zb*res2[l];
+  }
+}
+
+/* second order corners */
+void simp2(fc,fd,x,d,resc,resd,delta,wt,i0,mg,ct,res2,index)
+int (*fc)(), (*fd)(), d, wt, i0, *mg, ct, *index;
+double *x, *resc, *resd, *delta, *res2;
+{ int j, k, l, nrc;
+  double zb;
+  for (j=i0+1; j<d; j++) if ((index[j]==0) | (index[j]==mg[j]))
+  { setzero(M,d*d);
+    l = 0; zb = 1;
+    for (k=0; k<d; k++) if ((k!=i0) & (k!=j))
+    { M[l*d+k] = 1.0;
+      l++;
+      zb *= delta[k];
+    }
+    M[(d-2)*d+i0] = (index[i0]==0) ? -1 : 1;
+    M[(d-1)*d+j] = (index[j]==0) ? -1 : 1;
+    nrc = fc(x,d,res2,M);
+    if ((ct==0) & (i0==0) & (j==1)) setzero(resc,nrc);
+    for (k=0; k<nrc; k++) resc[k] += wt*zb*res2[k];
+       
+    if (fd!=NULL)
+      simp3(fd,x,d,resd,delta,wt,i0,j,mg,ct,res2,index);
+  }
+}
+
+/* first order boundary */
+void simp1(fb,fc,fd,x,d,resb,resc,resd,delta,wt,mg,ct,res2,index)
+int (*fb)(), (*fc)(), (*fd)(), d, wt, *mg, ct, *index;
+double *x, *resb, *resc, *resd, *delta, *res2;
+{ int i, j, k, nrb;
+  double zb;
+  for (i=0; i<d; i++) if ((index[i]==0) | (index[i]==mg[i]))
+  { setzero(M,(1+d)*d*d);
+    k = 0;
+    for (j=0; j<d; j++) if (j!=i)
+    { M[k*d+j] = 1;
+      k++;
+    }
+    M[(d-1)*d+i] = (index[i]==0) ? -1 : 1;
+    nrb = fb(x,d,res2,M);
+    zb = 1;
+    for (j=0; j<d; j++) if (i!=j) zb *= delta[j];
+        if ((ct==0) && (i==0))
+          for (j=0; j<nrb; j++) resb[j] = 0.0;
+    for (j=0; j<nrb; j++) resb[j] += wt*zb*res2[j];
+
+    if (fc!=NULL)
+      simp2(fc,fd,x,d,resc,resd,delta,wt,i,mg,ct,res2,index);
+  }
+}
+
+void simpson4(f,fb,fc,fd,ll,ur,d,res,resb,resc,resd,mg,res2)
+int (*f)(), (*fb)(), (*fc)(), (*fd)(), d, *mg;
+double *ll, *ur, *res, *resb, *resc, *resd, *res2;
+{ int ct, i, j, nr, wt, index[MXIDIM];
+  double x[MXIDIM], delta[MXIDIM], z;
+
+  for (i=0; i<d; i++)
+  { index[i] = 0;
+    x[i] = ll[i];
+    if (mg[i]&1) mg[i]++;
+    delta[i] = (ur[i]-ll[i])/(3*mg[i]);
+  }
+  ct = 0;
+
+  while(1)
+  { wt = 1;
+    for (i=0; i<d; i++)
+      wt *= (4-2*(index[i]%2==0)-(index[i]==0)-(index[i]==mg[i]));
+    nr = f(x,d,res2,NULL);
+    if (ct==0) setzero(res,nr);
+    for (i=0; i<nr; i++) res[i] += wt*res2[i];
+
+    if (fb!=NULL)
+      simp1(fb,fc,fd,x,d,resb,resc,resd,delta,wt,mg,ct,res2,index);
+
+    /* compute next grid point */
+    for (i=0; i<d; i++)
+    { index[i]++;
+      if (index[i]>mg[i])
+      { index[i] = 0;
+        x[i] = ll[i];
+        if (i==d-1) /* done */
+        { z = 1.0;
+          for (j=0; j<d; j++) z *= delta[j];
+          for (j=0; j<nr; j++) res[j] *= z;
+          return;
+        }
+      }
+      else
+      { x[i] = ll[i] + 3*delta[i]*index[i];
+        i = d;
+      }
+    }
+    ct++;
+  }
+}
+
+void simpsonm(f,ll,ur,d,res,mg,res2)
+int (*f)(), d, *mg;
+double *ll, *ur, *res, *res2;
+{ simpson4(f,NULL,NULL,NULL,ll,ur,d,res,NULL,NULL,NULL,mg,res2);
+}
+
+double simpson(f,l0,l1,m)
+double (*f)(), l0, l1;
+int m;
+{ double x, sum;
+  int i;
+  sum = 0;
+  for (i=0; i<=m; i++)
+  { x = ((m-i)*l0 + i*l1)/m;
+    sum += (2+2*(i&1)-(i==0)-(i==m)) * f(x);
+  }
+  return( (l1-l0) * sum / (3*m) );
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+
+static double *res, *resb, *orig, rmin, rmax;
+static int ct0;
+
+void sphM(M,r,u)
+double *M, r, *u;
+{ double h, u1[3], u2[3];
+
+  /* set the orthogonal unit vectors. */
+  h = sqrt(u[0]*u[0]+u[1]*u[1]);
+  if (h<=0)
+  { u1[0] = u2[1] = 1.0;
+    u1[1] = u1[2] = u2[0] = u2[2] = 0.0;
+  }
+  else
+  { u1[0] = u[1]/h; u1[1] = -u[0]/h; u1[2] = 0.0;
+    u2[0] = u[2]*u[0]/h; u2[1] = u[2]*u[1]/h; u2[2] = -h;
+  }
+
+  /* parameterize the sphere as r(cos(t)cos(v)u + sin(t)u1 + cos(t)sin(v)u2).
+   * first layer of M is (dx/dt, dx/dv, dx/dr) at t=v=0.
+   */
+  M[0] = r*u1[0]; M[1] = r*u1[1]; M[2] = r*u1[2];
+  M[3] = r*u2[0]; M[4] = r*u2[1]; M[5] = r*u2[2];
+  M[6] = u[0]; M[7] = u[1]; M[8] = u[2];
+
+  /* next layers are second derivative matrix of components of x(r,t,v).
+   * d^2x/dt^2 = d^2x/dv^2 = -ru;    d^2x/dtdv = 0;
+   * d^2x/drdt = u1; d^2x/drdv = u2; d^2x/dr^2 = 0.
+   */
+
+  M[9] = M[13] = -r*u[0];
+  M[11]= M[15] = u1[0];
+  M[14]= M[16] = u2[0];
+  M[10]= M[12] = M[17] = 0.0;
+
+  M[18]= M[22] = -r*u[1];
+  M[20]= M[24] = u1[1];
+  M[23]= M[25] = u2[1];
+  M[19]= M[21] = M[26] = 0.0;
+
+  M[27]= M[31] = -r*u[1];
+  M[29]= M[33] = u1[1];
+  M[32]= M[34] = u2[1];
+  M[28]= M[30] = M[35] = 0.0;
+
+}
+
+double ip3(a,b)
+double *a, *b;
+{ return(a[0]*b[0] + a[1]*b[1] + a[2]*b[2]);
+}
+
+void rn3(a)
+double *a;
+{ double s;
+  s = sqrt(ip3(a,a));
+  a[0] /= s; a[1] /= s; a[2] /= s;
+}
+
+double sptarea(a,b,c)
+double *a, *b, *c;
+{ double ea, eb, ec, yab, yac, ybc, sab, sac, sbc;
+  double ab[3], ac[3], bc[3], x1[3], x2[3];
+
+  ab[0] = a[0]-b[0]; ab[1] = a[1]-b[1]; ab[2] = a[2]-b[2];
+  ac[0] = a[0]-c[0]; ac[1] = a[1]-c[1]; ac[2] = a[2]-c[2];
+  bc[0] = b[0]-c[0]; bc[1] = b[1]-c[1]; bc[2] = b[2]-c[2];
+ 
+  yab = ip3(ab,a); yac = ip3(ac,a); ybc = ip3(bc,b);
+
+  x1[0] = ab[0] - yab*a[0]; x2[0] = ac[0] - yac*a[0];
+  x1[1] = ab[1] - yab*a[1]; x2[1] = ac[1] - yac*a[1];
+  x1[2] = ab[2] - yab*a[2]; x2[2] = ac[2] - yac*a[2];
+  sab = ip3(x1,x1); sac = ip3(x2,x2);
+  ea = acos(ip3(x1,x2)/sqrt(sab*sac));
+
+  x1[0] = ab[0] + yab*b[0]; x2[0] = bc[0] - ybc*b[0];
+  x1[1] = ab[1] + yab*b[1]; x2[1] = bc[1] - ybc*b[1];
+  x1[2] = ab[2] + yab*b[2]; x2[2] = bc[2] - ybc*b[2];
+  sbc = ip3(x2,x2);
+  eb = acos(ip3(x1,x2)/sqrt(sab*sbc));
+
+  x1[0] = ac[0] + yac*c[0]; x2[0] = bc[0] + ybc*c[0];
+  x1[1] = ac[1] + yac*c[1]; x2[1] = bc[1] + ybc*c[1];
+  x1[2] = ac[2] + yac*c[2]; x2[2] = bc[2] + ybc*c[2];
+  ec = acos(ip3(x1,x2)/sqrt(sac*sbc));
+
+/*
+ * Euler's formula is a+b+c-PI, except I've cheated...
+ * a=ea, c=ec, b=PI-eb, which is more stable.
+ */
+  return(ea+ec-eb);
+}
+
+void li(x,f,fb,mint,ar)
+double *x, ar;
+int (*f)(), (*fb)(), mint;
+{ int i, j, nr, nrb, ct1, w;
+  double u[3], r, M[36];
+  double sres[MXRESULT], tres[MXRESULT];
+
+/* divide mint by 2, and force to even (Simpson's rule...)
+ * to make comparable with rectangular interpretation of mint
+ */
+  mint <<= 1;
+  if (mint&1) mint++;
+
+  ct1 = 0;
+  for (i= (rmin==0) ? 1 : 0; i<=mint; i++)
+  {
+    r = rmin + (rmax-rmin)*i/mint;
+    w = 2+2*(i&1)-(i==0)-(i==mint);
+    u[0] = orig[0]+x[0]*r;
+    u[1] = orig[1]+x[1]*r;
+    u[2] = orig[2]+x[2]*r;
+    nr = f(u,3,tres,NULL);
+    if (ct1==0) setzero(sres,nr);
+    for (j=0; j<nr; j++)
+      sres[j] += w*r*r*tres[j];
+    ct1++;
+
+    if ((fb!=NULL) && (i==mint)) /* boundary */
+    { sphM(M,rmax,x);
+      nrb = fb(u,3,tres,M);
+      if (ct0==0) for (j=0; j<nrb; j++) resb[j] = 0.0;
+      for (j=0; j<nrb; j++)
+        resb[j] += tres[j]*ar;
+    }
+  }
+
+  if (ct0==0) for (j=0; j<nr; j++) res[j] = 0.0;
+  ct0++;
+
+  for (j=0; j<nr; j++)
+    res[j] += sres[j] * ar * (rmax-rmin)/(3*mint);
+}
+
+void sphint(f,fb,a,b,c,lev,mint,cent)
+double *a, *b, *c;
+int (*f)(), (*fb)(), lev, mint, cent;
+{ double x[3], ab[3], ac[3], bc[3], ar;
+  int i;
+
+  if (lev>1)
+  { ab[0] = a[0]+b[0]; ab[1] = a[1]+b[1]; ab[2] = a[2]+b[2]; rn3(ab);
+    ac[0] = a[0]+c[0]; ac[1] = a[1]+c[1]; ac[2] = a[2]+c[2]; rn3(ac);
+    bc[0] = b[0]+c[0]; bc[1] = b[1]+c[1]; bc[2] = b[2]+c[2]; rn3(bc);
+    lev >>= 1;
+    if (cent==0)
+    { sphint(f,fb,a,ab,ac,lev,mint,1);
+      sphint(f,fb,ab,bc,ac,lev,mint,0);
+    }
+    else
+    { sphint(f,fb,a,ab,ac,lev,mint,1);
+      sphint(f,fb,b,ab,bc,lev,mint,1);
+      sphint(f,fb,c,ac,bc,lev,mint,1);
+      sphint(f,fb,ab,bc,ac,lev,mint,1);
+    }
+    return;
+  }
+
+  x[0] = a[0]+b[0]+c[0];
+  x[1] = a[1]+b[1]+c[1];
+  x[2] = a[2]+b[2]+c[2];
+  rn3(x);
+  ar = sptarea(a,b,c);
+
+  for (i=0; i<8; i++)
+  { if (i>0)
+    { x[0] = -x[0];
+      if (i%2 == 0) x[1] = -x[1];
+      if (i==4) x[2] = -x[2];
+    }
+    switch(cent)
+    { case 2: /* the reflection and its 120', 240' rotations */
+        ab[0] = x[0]; ab[1] = x[2]; ab[2] = x[1]; li(ab,f,fb,mint,ar);
+        ab[0] = x[2]; ab[1] = x[1]; ab[2] = x[0]; li(ab,f,fb,mint,ar);
+        ab[0] = x[1]; ab[1] = x[0]; ab[2] = x[2]; li(ab,f,fb,mint,ar);
+      case 1: /* and the 120' and 240' rotations */
+        ab[0] = x[1]; ab[1] = x[2]; ab[2] = x[0]; li(ab,f,fb,mint,ar);
+        ac[0] = x[2]; ac[1] = x[0]; ac[2] = x[1]; li(ac,f,fb,mint,ar);
+      case 0: /* and the triangle itself. */
+        li( x,f,fb,mint,ar);
+    }
+  }
+}
+
+void integ_sphere(f,fb,fl,Res,Resb,mg)
+double *fl, *Res, *Resb;
+int (*f)(), (*fb)(), *mg;
+{ double a[3], b[3], c[3];
+
+  a[0] = 1; a[1] = a[2] = 0;
+  b[1] = 1; b[0] = b[2] = 0;
+  c[2] = 1; c[0] = c[1] = 0;
+  
+  res = Res;
+  resb=Resb;
+  orig = &fl[2];
+  rmin = fl[0];
+  rmax = fl[1];
+
+  ct0 = 0;
+  sphint(f,fb,a,b,c,mg[1],mg[0],0);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * solving symmetric equations using the jacobian structure. Currently, three
+ * methods can be used: cholesky decomposition, eigenvalues, eigenvalues on
+ * the correlation matrix.
+ *
+ * jacob_dec(J,meth)    decompose the matrix, meth=JAC_CHOL, JAC_EIG, JAC_EIGD
+ * jacob_solve(J,v)     J^{-1}v
+ * jacob_hsolve(J,v)    (R')^{-1/2}v
+ * jacob_isolve(J,v)    (R)^{-1/2}v
+ * jacob_qf(J,v)         v' J^{-1} v
+ * jacob_mult(J,v)      (R'R) v   (pres. CHOL only)
+ * where for each decomposition, R'R=J, although the different decomp's will
+ * produce different R's.
+ *
+ * To set up the J matrix:
+ * first, allocate storage: jac_alloc(J,p,wk)
+ *   where p=dimension of matrix, wk is a numeric vector of length
+ *   jac_reqd(p) (or NULL, to allocate automatically).
+ * now, copy the numeric values to J->Z (numeric vector with length p*p).
+ *   (or, just set J->Z to point to the data vector. But remember this
+ *   will be overwritten by the decomposition).
+ * finally, set:
+ *    J->st=JAC_RAW;
+ *    J->p = p;
+ *
+ * now, call jac_dec(J,meth) (optional) and the solve functions as required.
+ *
+ */
+
+#include "math.h"
+#include "mut.h"
+
+#define DEF_METH JAC_EIGD
+
+int jac_reqd(int p) { return(2*p*(p+1)); }
+
+double *jac_alloc(J,p,wk)
+jacobian *J;
+int p;
+double *wk;
+{ if (wk==NULL)
+    wk = (double *)calloc(2*p*(p+1),sizeof(double));
+     if ( wk == NULL ) {
+      printf("Problem allocating memory for wk\n");fflush(stdout);
+    }
+  J->Z = wk; wk += p*p;
+  J->Q = wk; wk += p*p;
+  J->wk= wk; wk += p;
+  J->dg= wk; wk += p;
+  return(wk);
+}
+
+void jacob_dec(J, meth)
+jacobian *J;
+int meth;
+{ int i, j, p;
+
+  if (J->st != JAC_RAW) return;
+
+  J->sm = J->st = meth;
+  switch(meth)
+  { case JAC_EIG:
+      eig_dec(J->Z,J->Q,J->p);
+      return;
+    case JAC_EIGD:
+      p = J->p;
+      for (i=0; i<p; i++)
+        J->dg[i] = (J->Z[i*(p+1)]<=0) ? 0.0 : 1/sqrt(J->Z[i*(p+1)]);
+      for (i=0; i<p; i++)
+        for (j=0; j<p; j++)
+          J->Z[i*p+j] *= J->dg[i]*J->dg[j];
+      eig_dec(J->Z,J->Q,J->p);
+      J->st = JAC_EIGD;
+      return;
+    case JAC_CHOL:
+      chol_dec(J->Z,J->p,J->p);
+      return;
+    default: mut_printf("jacob_dec: unknown method %d",meth);
+  }
+}
+
+int jacob_solve(J,v) /* (X^T W X)^{-1} v */
+jacobian *J;
+double *v;
+{ int i, rank;
+
+  if (J->st == JAC_RAW) jacob_dec(J,DEF_METH);
+
+  switch(J->st)
+  { case JAC_EIG:
+      return(eig_solve(J,v));
+    case JAC_EIGD:
+      for (i=0; i<J->p; i++) v[i] *= J->dg[i];
+      rank = eig_solve(J,v);
+      for (i=0; i<J->p; i++) v[i] *= J->dg[i];
+      return(rank);
+    case JAC_CHOL:
+      return(chol_solve(J->Z,v,J->p,J->p));
+  }
+  mut_printf("jacob_solve: unknown method %d",J->st);
+  return(0);
+}
+
+int jacob_hsolve(J,v) /*  J^{-1/2} v */
+jacobian *J;
+double *v;
+{ int i;
+
+  if (J->st == JAC_RAW) jacob_dec(J,DEF_METH);
+
+  switch(J->st)
+  { case JAC_EIG:
+      return(eig_hsolve(J,v));
+    case JAC_EIGD: /* eigenvalues on corr matrix */
+      for (i=0; i<J->p; i++) v[i] *= J->dg[i];
+      return(eig_hsolve(J,v));
+    case JAC_CHOL:
+      return(chol_hsolve(J->Z,v,J->p,J->p));
+  }
+  mut_printf("jacob_hsolve: unknown method %d\n",J->st);
+  return(0);
+}
+
+int jacob_isolve(J,v) /*  J^{-1/2} v */
+jacobian *J;
+double *v;
+{ int i, r;
+
+  if (J->st == JAC_RAW) jacob_dec(J,DEF_METH);
+
+  switch(J->st)
+  { case JAC_EIG:
+        return(eig_isolve(J,v));
+    case JAC_EIGD: /* eigenvalues on corr matrix */
+        r = eig_isolve(J,v);
+        for (i=0; i<J->p; i++) v[i] *= J->dg[i];
+	return(r);
+    case JAC_CHOL:
+      return(chol_isolve(J->Z,v,J->p,J->p));
+  }
+  mut_printf("jacob_hsolve: unknown method %d\n",J->st);
+  return(0);
+}
+
+double jacob_qf(J,v)  /* vT J^{-1} v */
+jacobian *J;
+double *v;
+{ int i;
+
+  if (J->st == JAC_RAW) jacob_dec(J,DEF_METH);
+
+  switch (J->st)
+  { case JAC_EIG:
+      return(eig_qf(J,v));
+    case JAC_EIGD:
+      for (i=0; i<J->p; i++) v[i] *= J->dg[i];
+      return(eig_qf(J,v));
+    case JAC_CHOL:
+      return(chol_qf(J->Z,v,J->p,J->p));
+    default:
+      mut_printf("jacob_qf: invalid method\n");
+      return(0.0);
+  }
+}
+
+int jacob_mult(J,v)  /* J v */
+jacobian *J;
+double *v;
+{
+  if (J->st == JAC_RAW) jacob_dec(J,DEF_METH);
+  switch (J->st)
+  { case JAC_CHOL:
+      return(chol_mult(J->Z,v,J->p,J->p));
+    default:
+      mut_printf("jacob_mult: invalid method\n");
+      return(0);
+  }
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  Routines for maximization of a one dimensional function f()
+ *    over an interval [xlo,xhi]. In all cases. the flag argument
+ *    controls the return:
+ *      flag='x', the maximizer xmax is returned.
+ *                otherwise, maximum f(xmax) is returned.
+ *
+ *  max_grid(f,xlo,xhi,n,flag)
+ *    grid maximization of f() over [xlo,xhi] with n intervals.
+ *
+ *  max_golden(f,xlo,xhi,n,tol,err,flag)
+ *    golden section maximization.
+ *    If n>2, an initial grid search is performed with n intervals
+ *      (this helps deal with local maxima).
+ *    convergence criterion is |x-xmax| < tol.
+ *    err is an error flag.
+ *    if flag='x', return value is xmax.
+ *       otherwise, return value is f(xmax).
+ *
+ *  max_quad(f,xlo,xhi,n,tol,err,flag)
+ *    quadratic maximization.
+ *
+ *  max_nr()
+ *    newton-raphson, handles multivariate case.
+ *
+ *  TODO: additional error checking, non-convergence stop.
+ */
+
+#include <math.h>
+#include "mut.h"
+
+#define max_val(a,b) ((flag=='x') ? a : b)
+
+double max_grid(f,xlo,xhi,n,flag)
+double (*f)(), xlo, xhi;
+int n;
+char flag;
+{ int i, mi;
+  double x, y, mx, my;
+  for (i=0; i<=n; i++)
+  { x = xlo + (xhi-xlo)*i/n;
+    y = f(x);
+    if ((i==0) || (y>my))
+    { mx = x;
+      my = y;
+      mi = i;
+    }
+  }
+  if (mi==0) return(max_val(xlo,my));
+  if (mi==n) return(max_val(xhi,my));
+  return(max_val(mx,my));
+}
+
+double max_golden(f,xlo,xhi,n,tol,err,flag)
+double (*f)(), xhi, xlo, tol;
+int n, *err;
+char flag;
+{ double dlt, x0, x1, x2, x3, y0, y1, y2, y3;
+  *err = 0;
+
+  if (n>2)
+  { dlt = (xhi-xlo)/n;
+    x0 = max_grid(f,xlo,xhi,n,'x');
+    if (xlo<x0) xlo = x0-dlt;
+    if (xhi>x0) xhi = x0+dlt;
+  }
+
+  x0 = xlo; y0 = f(xlo);
+  x3 = xhi; y3 = f(xhi);
+  x1 = gold_rat*x0 + (1-gold_rat)*x3; y1 = f(x1);
+  x2 = gold_rat*x3 + (1-gold_rat)*x0; y2 = f(x2);
+
+  while (fabs(x3-x0)>tol)
+  { if ((y1>=y0) && (y1>=y2))
+    { x3 = x2; y3 = y2;
+      x2 = x1; y2 = y1;
+      x1 = gold_rat*x0 + (1-gold_rat)*x3; y1 = f(x1);
+    }
+    else if ((y2>=y3) && (y2>=y1))
+    { x0 = x1; y0 = y1;
+      x1 = x2; y1 = y2;
+      x2 = gold_rat*x3 + (1-gold_rat)*x0; y2 = f(x2);
+    }
+    else
+    { if (y3>y0) { x0 = x2; y0 = y2; }
+            else { x3 = x1; y3 = y1; }
+      x1 = gold_rat*x0 + (1-gold_rat)*x3; y1 = f(x1);
+      x2 = gold_rat*x3 + (1-gold_rat)*x0; y2 = f(x2);
+    }
+  }
+  if (y0>=y1) return(max_val(x0,y0));
+  if (y3>=y2) return(max_val(x3,y3));
+  return((y1>y2) ? max_val(x1,y1) : max_val(x2,y2));
+}
+
+double max_quad(f,xlo,xhi,n,tol,err,flag)
+double (*f)(), xhi, xlo, tol;
+int n, *err;
+char flag;
+{ double x0, x1, x2, xnew, y0, y1, y2, ynew, a, b;
+  *err = 0;
+
+  if (n>2)
+  { x0 = max_grid(f,xlo,xhi,n,'x');
+    if (xlo<x0) xlo = x0-1.0/n;
+    if (xhi>x0) xhi = x0+1.0/n;
+  }
+
+  x0 = xlo; y0 = f(x0);
+  x2 = xhi; y2 = f(x2);
+  x1 = (x0+x2)/2; y1 = f(x1);
+
+  while (x2-x0>tol)
+  {
+    /* first, check (y0,y1,y2) is a peak. If not,
+     * next interval is the halve with larger of (y0,y2).
+     */
+    if ((y0>y1) | (y2>y1))
+    { 
+      if (y0>y2) { x2 = x1; y2 = y1; }
+            else { x0 = x1; y0 = y1; }
+      x1 = (x0+x2)/2;
+      y1 = f(x1);
+    }
+    else /* peak */
+    { a = (y1-y0)*(x2-x1) + (y1-y2)*(x1-x0);
+      b = ((y1-y0)*(x2-x1)*(x2+x1) + (y1-y2)*(x1-x0)*(x1+x0))/2;
+      /* quadratic maximizer is b/a. But first check if a's too
+       * small, since we may be close to constant.
+       */
+      if ((a<=0) | (b<x0*a) | (b>x2*a))
+      { /* split the larger halve */
+        xnew = ((x2-x1) > (x1-x0)) ? (x1+x2)/2 : (x0+x1)/2;
+      }
+      else
+      { xnew = b/a;
+        if (10*xnew < (9*x0+x1)) xnew = (9*x0+x1)/10;
+        if (10*xnew > (9*x2+x1)) xnew = (9*x2+x1)/10;
+        if (fabs(xnew-x1) < 0.001*(x2-x0))
+        {
+          if ((x2-x1) > (x1-x0))
+            xnew = (99*x1+x2)/100;
+          else
+            xnew = (99*x1+x0)/100;
+        }
+      }
+      ynew = f(xnew);
+      if (xnew>x1)
+      { if (ynew >= y1) { x0 = x1; y0 = y1; x1 = xnew; y1 = ynew; }
+                   else { x2 = xnew; y2 = ynew; }
+      }
+      else
+      { if (ynew >= y1) { x2 = x1; y2 = y1; x1 = xnew; y1 = ynew; }
+                   else { x0 = xnew; y0 = ynew; }
+      }
+    }
+  }
+  return(max_val(x1,y1));
+}
+
+double max_nr(F, coef, old_coef, f1, delta, J, p, maxit, tol, err)
+double *coef, *old_coef, *f1, *delta, tol;
+int (*F)(), p, maxit, *err;
+jacobian *J;
+{ double old_f, f, lambda;
+  int i, j, fr;
+  double nc, nd, cut;
+  int rank;
+
+  *err = NR_OK;
+  J->p = p;
+  fr = F(coef, &f, f1, J->Z); J->st = JAC_RAW;
+
+  for (i=0; i<maxit; i++)
+  { memcpy(old_coef,coef,p*sizeof(double));
+    old_f = f;
+    rank = jacob_solve(J,f1);
+    memcpy(delta,f1,p*sizeof(double));
+
+    if (rank==0) /* NR won't move! */
+      delta[0] = -f/f1[0];
+
+    lambda = 1.0;
+
+    nc = innerprod(old_coef,old_coef,p);
+    nd = innerprod(delta, delta, p);
+    cut = sqrt(nc/nd);
+    if (cut>1.0) cut = 1.0;
+    cut *= 0.0001;
+    do
+    { for (j=0; j<p; j++) coef[j] = old_coef[j] + lambda*delta[j];
+      f = old_f - 1.0;
+      fr = F(coef, &f, f1, J->Z); J->st = JAC_RAW;
+      if (fr==NR_BREAK) return(old_f);
+
+      lambda = (fr==NR_REDUCE) ? lambda/2 : lambda/10.0;
+    } while ((lambda>cut) & (f <= old_f - 1.0e-3));
+
+    if (f < old_f - 1.0e-3)
+    { *err = NR_NDIV;
+      return(f);
+    }
+    if (fr==NR_REDUCE) return(f);
+
+    if (fabs(f-old_f) < tol) return(f);
+
+  }
+  *err = NR_NCON;
+  return(f);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include <math.h>
+#include "mut.h"
+
+/* qr decomposition of X (n*p organized by column).
+ * Take w for the ride, if not NULL.
+ */
+void qr(X,n,p,w)
+double *X, *w;
+int n, p;
+{ int i, j, k, mi;
+  double c, s, mx, nx, t;
+
+  for (j=0; j<p; j++)
+  { mi = j;
+    mx = fabs(X[(n+1)*j]);
+    nx = mx*mx;
+
+    /* find the largest remaining element in j'th column, row mi.
+     * flip that row with row j.
+     */
+    for (i=j+1; i<n; i++)
+    { nx += X[j*n+i]*X[j*n+i];
+      if (fabs(X[j*n+i])>mx)
+      { mi = i;
+        mx = fabs(X[j*n+i]);
+      }
+    }
+    for (i=j; i<p; i++)
+    { t = X[i*n+j];
+      X[i*n+j] = X[i*n+mi];
+      X[i*n+mi] = t;
+    }
+    if (w!=NULL) { t = w[j]; w[j] = w[mi]; w[mi] = t; }
+
+    /* want the diag. element -ve, so we do the `good' Householder reflect.
+     */
+    if (X[(n+1)*j]>0)
+    { for (i=j; i<p; i++) X[i*n+j] = -X[i*n+j];
+      if (w!=NULL) w[j] = -w[j];
+    }
+
+    nx = sqrt(nx);
+    c = nx*(nx-X[(n+1)*j]);
+    if (c!=0)
+    { for (i=j+1; i<p; i++)
+      { s = 0;
+        for (k=j; k<n; k++)
+          s += X[i*n+k]*X[j*n+k];
+        s = (s-nx*X[i*n+j])/c;
+        for (k=j; k<n; k++)
+          X[i*n+k] -= s*X[j*n+k];
+        X[i*n+j] += s*nx;
+      }
+      if (w != NULL)
+      { s = 0;
+        for (k=j; k<n; k++)
+          s += w[k]*X[n*j+k];
+        s = (s-nx*w[j])/c;
+        for (k=j; k<n; k++)
+          w[k] -= s*X[n*j+k];
+        w[j] += s*nx;
+      }
+      X[j*n+j] = nx;
+    }
+  }
+}
+
+void qrinvx(R,x,n,p)
+double *R, *x;
+int n, p;
+{ int i, j;
+  for (i=p-1; i>=0; i--)
+  { for (j=i+1; j<p; j++) x[i] -= R[j*n+i]*x[j];
+    x[i] /= R[i*n+i];
+  }
+}
+
+void qrtinvx(R,x,n,p)
+double *R, *x;
+int n, p;
+{ int i, j;
+  for (i=0; i<p; i++)
+  { for (j=0; j<i; j++) x[i] -= R[i*n+j]*x[j];
+    x[i] /= R[i*n+i];
+  }
+}
+
+void qrsolv(R,x,n,p)
+double *R, *x;
+int n, p;
+{ qrtinvx(R,x,n,p);
+  qrinvx(R,x,n,p);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *  solve f(x)=c by various methods, with varying stability etc...
+ *    xlo and xhi should be initial bounds for the solution.
+ *    convergence criterion is |f(x)-c| < tol.
+ *
+ *  double solve_bisect(f,c,xmin,xmax,tol,bd_flag,err)
+ *  double solve_secant(f,c,xmin,xmax,tol,bd_flag,err)
+ *    Bisection and secant methods for solving of f(x)=c.
+ *    xmin and xmax are starting values and bound for solution.
+ *    tol = convergence criterion, |f(x)-c| < tol.
+ *    bd_flag = if (xmin,xmax) doesn't bound a solution, what action to take?
+ *      BDF_NONE returns error.
+ *      BDF_EXPRIGHT increases xmax.
+ *      BDF_EXPLEFT  decreases xmin.
+ *    err = error flag.
+ *    The (xmin,xmax) bound is not formally necessary for the secant method.
+ *    But having such a bound vastly improves stability; the code performs
+ *    a bisection step whenever the iterations run outside the bounds.
+ *
+ *  double solve_nr(f,f1,c,x0,tol,err)
+ *    Newton-Raphson solution of f(x)=c.
+ *    f1 = f'(x).
+ *    x0 = starting value.
+ *    tol = convergence criteria, |f(x)-c| < tol.
+ *    err = error flag.
+ *    No stability checks at present.
+ *
+ *  double solve_fp(f,x0,tol)
+ *    fixed-point iteration to solve f(x)=x.
+ *    x0 = starting value.
+ *    tol = convergence criteria, stops when |f(x)-x| < tol.
+ *    Convergence requires |f'(x)|<1 in neighborhood of true solution;
+ *      f'(x) \approx 0 gives the fastest convergence.
+ *    No stability checks at present.
+ *
+ *  TODO: additional error checking, non-convergence stop.
+ */
+
+#include <math.h>
+#include "mut.h"
+
+typedef struct {
+  double xmin, xmax, x0, x1;
+  double ymin, ymax, y0, y1;
+} solvest;
+
+int step_expand(f,c,sv,bd_flag)
+double (*f)(), c;
+solvest *sv;
+int bd_flag;
+{ double x, y;
+  if (sv->ymin*sv->ymax <= 0.0) return(0);
+  if (bd_flag == BDF_NONE)
+  { mut_printf("invalid bracket\n");
+    return(1); /* error */
+  }
+  if (bd_flag == BDF_EXPRIGHT)
+  { while (sv->ymin*sv->ymax > 0)
+    { x = sv->xmax + 2*(sv->xmax-sv->xmin);
+      y = f(x) - c;
+      sv->xmin = sv->xmax; sv->xmax = x;
+      sv->ymin = sv->ymax; sv->ymax = y;
+    }
+    return(0);
+  }
+  if (bd_flag == BDF_EXPLEFT)
+  { while (sv->ymin*sv->ymax > 0)
+    { x = sv->xmin - 2*(sv->xmax-sv->xmin);
+      y = f(x) - c;
+      sv->xmax = sv->xmin; sv->xmin = x;
+      sv->ymax = sv->ymin; sv->ymin = y;
+    }
+    return(0);
+  }
+  mut_printf("step_expand: unknown bd_flag %d.\n",bd_flag);
+  return(1);
+}
+
+int step_addin(sv,x,y)
+solvest *sv;
+double x, y;
+{ sv->x1 = sv->x0; sv->x0 = x;
+  sv->y1 = sv->y0; sv->y0 = y;
+  if (y*sv->ymin > 0)
+  { sv->xmin = x;
+    sv->ymin = y;
+    return(0);
+  }
+  if (y*sv->ymax > 0)
+  { sv->xmax = x;
+    sv->ymax = y;
+    return(0);
+  }  
+  if (y==0)
+  { sv->xmin = sv->xmax = x;
+    sv->ymin = sv->ymax = 0;
+    return(0);
+  }
+  return(1);
+}
+
+int step_bisect(f,c,sv)
+double (*f)(), c;
+solvest *sv;
+{ double x, y;
+  x = sv->x0 = (sv->xmin + sv->xmax)/2;
+  y = sv->y0 = f(x)-c;
+  return(step_addin(sv,x,y));
+}
+
+double solve_bisect(f,c,xmin,xmax,tol,bd_flag,err)
+double (*f)(), c, xmin, xmax, tol;
+int bd_flag, *err;
+{ solvest sv;
+  int z;
+  *err = 0;
+  sv.xmin = xmin; sv.ymin = f(xmin)-c;
+  sv.xmax = xmax; sv.ymax = f(xmax)-c;
+  *err = step_expand(f,c,&sv,bd_flag);
+  if (*err>0) return(sv.xmin);
+  while(1) /* infinite loop if f is discontinuous */
+  { z = step_bisect(f,c,&sv);
+    if (z)
+    { *err = 1;
+      return(sv.x0);
+    }
+    if (fabs(sv.y0)<tol) return(sv.x0);
+  }
+}
+
+int step_secant(f,c,sv)
+double (*f)(), c;
+solvest *sv;
+{ double x, y;
+  if (sv->y0==sv->y1) return(step_bisect(f,c,sv));
+  x = sv->x0 + (sv->x1-sv->x0)*sv->y0/(sv->y0-sv->y1);
+  if ((x<=sv->xmin) | (x>=sv->xmax)) return(step_bisect(f,c,sv));
+  y = f(x)-c;
+  return(step_addin(sv,x,y));
+}
+
+double solve_secant(f,c,xmin,xmax,tol,bd_flag,err)
+double (*f)(), c, xmin, xmax, tol;
+int bd_flag, *err;
+{ solvest sv;
+  int z;
+  *err = 0;
+  sv.xmin = xmin; sv.ymin = f(xmin)-c;
+  sv.xmax = xmax; sv.ymax = f(xmax)-c;
+  *err = step_expand(f,c,&sv,bd_flag);
+  if (*err>0) return(sv.xmin);
+  sv.x0 = sv.xmin; sv.y0 = sv.ymin;
+  sv.x1 = sv.xmax; sv.y1 = sv.ymax;
+  while(1) /* infinite loop if f is discontinuous */
+  { z = step_secant(f,c,&sv);
+    if (z)
+    { *err = 1;
+      return(sv.x0);
+    }
+    if (fabs(sv.y0)<tol) return(sv.x0);
+  }
+}
+
+double solve_nr(f,f1,c,x0,tol,err)
+double (*f)(), (*f1)(), c, x0, tol;
+int *err;
+{ double y;
+  do
+  { y = f(x0)-c;
+    x0 -= y/f1(x0);
+  } while (fabs(y)>tol);
+  return(x0);
+}
+
+double solve_fp(f,x0,tol,maxit)
+double (*f)(), x0, tol;
+int maxit;
+{ double x1;
+  int i;
+  for (i=0; i<maxit; i++)
+  { x1 = f(x0);
+    if (fabs(x1-x0)<tol) return(x1);
+    x0 = x1;
+  }
+  return(x1); /* although it hasn't converged */
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+
+void svd(x,p,q,d,mxit)  /* svd of square matrix */
+double *x, *p, *q;
+int d, mxit;
+{ int i, j, k, iter, ms, zer;
+  double r, u, v, cp, cm, sp, sm, c1, c2, s1, s2, mx;
+  for (i=0; i<d; i++)
+    for (j=0; j<d; j++) p[i*d+j] = q[i*d+j] = (i==j);
+  for (iter=0; iter<mxit; iter++)
+  { ms = 0;
+    for (i=0; i<d; i++)
+      for (j=i+1; j<d; j++)
+      { s1 = fabs(x[i*d+j]);
+        s2 = fabs(x[j*d+i]);
+        mx = (s1>s2) ? s1 : s2;
+        zer = 1;
+        if (mx*mx>1.0e-15*fabs(x[i*d+i]*x[j*d+j]))
+        { if (fabs(x[i*(d+1)])<fabs(x[j*(d+1)]))
+          { for (k=0; k<d; k++)
+            { u = x[i*d+k]; x[i*d+k] = x[j*d+k]; x[j*d+k] = u;
+              u = p[k*d+i]; p[k*d+i] = p[k*d+j]; p[k*d+j] = u;
+            }
+            for (k=0; k<d; k++)
+            { u = x[k*d+i]; x[k*d+i] = x[k*d+j]; x[k*d+j] = u;
+              u = q[k*d+i]; q[k*d+i] = q[k*d+j]; q[k*d+j] = u;
+            }
+          }
+          cp = x[i*(d+1)]+x[j*(d+1)];
+          sp = x[j*d+i]-x[i*d+j];
+          r = sqrt(cp*cp+sp*sp);
+          if (r>0) { cp /= r; sp /= r; }
+              else { cp = 1.0; zer = 0;}
+          cm = x[i*(d+1)]-x[j*(d+1)];
+          sm = x[i*d+j]+x[j*d+i];
+          r = sqrt(cm*cm+sm*sm);
+          if (r>0) { cm /= r; sm /= r; }
+              else { cm = 1.0; zer = 0;}
+          c1 = cm+cp;
+          s1 = sm+sp;
+          r = sqrt(c1*c1+s1*s1);
+          if (r>0) { c1 /= r; s1 /= r; }
+              else { c1 = 1.0; zer = 0;}
+          if (fabs(s1)>ms) ms = fabs(s1);
+          c2 = cm+cp;
+          s2 = sp-sm;
+          r = sqrt(c2*c2+s2*s2);
+          if (r>0) { c2 /= r; s2 /= r; }
+              else { c2 = 1.0; zer = 0;}
+          for (k=0; k<d; k++)
+          { u = x[i*d+k]; v = x[j*d+k];
+            x[i*d+k] = c1*u+s1*v;
+            x[j*d+k] = c1*v-s1*u;
+            u = p[k*d+i]; v = p[k*d+j];
+            p[k*d+i] = c1*u+s1*v;
+            p[k*d+j] = c1*v-s1*u;
+          }
+          for (k=0; k<d; k++)
+          { u = x[k*d+i]; v = x[k*d+j];
+            x[k*d+i] = c2*u-s2*v;
+            x[k*d+j] = s2*u+c2*v;
+            u = q[k*d+i]; v = q[k*d+j];
+            q[k*d+i] = c2*u-s2*v;
+            q[k*d+j] = s2*u+c2*v;
+          }
+          if (zer) x[i*d+j] = x[j*d+i] = 0.0;
+          ms = 1;
+        }
+      }
+    if (ms==0) iter=mxit+10;
+  }
+  if (iter==mxit) mut_printf("Warning: svd not converged.\n");
+  for (i=0; i<d; i++)
+    if (x[i*d+i]<0)
+    { x[i*d+i] = -x[i*d+i];
+      for (j=0; j<d; j++) p[j*d+i] = -p[j*d+i];
+    }
+}
+
+int svdsolve(x,w,P,D,Q,d,tol) /* original X = PDQ^T; comp. QD^{-1}P^T x */
+double *x, *w, *P, *D, *Q, tol;
+int d;
+{ int i, j, rank;
+  double mx;
+  if (tol>0)
+  { mx = D[0];
+    for (i=1; i<d; i++) if (D[i*(d+1)]>mx) mx = D[i*(d+1)];
+    tol *= mx;
+  }
+  rank = 0;
+  for (i=0; i<d; i++)
+  { w[i] = 0.0;
+    for (j=0; j<d; j++) w[i] += P[j*d+i]*x[j];
+  }
+  for (i=0; i<d; i++)
+    if (D[i*d+i]>tol)
+    { w[i] /= D[i*(d+1)];
+      rank++;
+    }
+  for (i=0; i<d; i++)
+  { x[i] = 0.0;
+    for (j=0; j<d; j++) x[i] += Q[i*d+j]*w[j];
+  }
+  return(rank);
+}
+
+void hsvdsolve(x,w,P,D,Q,d,tol) /* original X = PDQ^T; comp. D^{-1/2}P^T x */
+double *x, *w, *P, *D, *Q, tol;
+int d;
+{ int i, j;
+  double mx;
+  if (tol>0)
+  { mx = D[0];
+    for (i=1; i<d; i++) if (D[i*(d+1)]>mx) mx = D[i*(d+1)];
+    tol *= mx;
+  }
+  for (i=0; i<d; i++)
+  { w[i] = 0.0;
+    for (j=0; j<d; j++) w[i] += P[j*d+i]*x[j];
+  }
+  for (i=0; i<d; i++) if (D[i*d+i]>tol) w[i] /= sqrt(D[i*(d+1)]);
+  for (i=0; i<d; i++) x[i] = w[i];
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Includes some miscellaneous vector functions:
+ *     setzero(v,p)           sets all elements of v to 0.
+ *     unitvec(x,k,p)         sets x to k'th unit vector e_k.
+ *     innerprod(v1,v2,p)     inner product.
+ *     addouter(A,v1,v2,p,c)  A <- A + c * v_1 v2^T
+ *     multmatscal(A,z,n)     A <- A*z
+ *     matrixmultiply(A,B,C,m,n,p)    C(m*p) <- A(m*n) * B(n*p)
+ *     transpose(x,m,n)       inline transpose
+ *     m_trace(x,n)           trace
+ *     vecsum(x,n)            sum elements.
+ */
+
+#include "mut.h"
+
+void setzero(v,p)
+double *v;
+int p;
+{ int i;
+  for (i=0; i<p; i++) v[i] = 0.0;
+}
+
+void unitvec(x,k,p)
+double *x;
+int k, p;
+{ setzero(x,p);
+  x[k] = 1.0;
+}
+
+double innerprod(v1,v2,p)
+double *v1, *v2;
+int p;
+{ int i;
+  double s;
+  s = 0;
+  for (i=0; i<p; i++) s += v1[i]*v2[i];
+  return(s);
+}
+
+void addouter(A,v1,v2,p,c)
+double *A, *v1, *v2, c;
+int p;
+{ int i, j;
+  for (i=0; i<p; i++)
+    for (j=0; j<p; j++)
+      A[i*p+j] += c*v1[i]*v2[j];
+}
+
+void multmatscal(A,z,n)
+double *A, z;
+int n;
+{ int i;
+  for (i=0; i<n; i++) A[i] *= z;
+}
+
+/* matrix multiply A (m*n) times B (n*p).
+ * store in C (m*p).
+ * all matrices stored by column.
+ */
+void matrixmultiply(A,B,C,m,n,p)
+double *A, *B, *C;
+int m, n, p;
+{ int i, j, k, ij;
+  for (i=0; i<m; i++)
+    for (j=0; j<p; j++)
+    { ij = j*m+i;
+      C[ij] = 0.0;
+      for (k=0; k<n; k++)
+        C[ij] += A[k*m+i] * B[j*n+k];
+    }
+}
+
+/*
+ *  transpose() transposes an m*n matrix in place.
+ *  At input, the matrix has n rows, m columns and
+ *    x[0..n-1] is the is the first column.
+ *  At output, the matrix has m rows, n columns and
+ *    x[0..m-1] is the first column.
+ */
+void transpose(x,m,n)
+double *x;
+int m, n;
+{ int t0, t, ti, tj;
+  double z;
+  for (t0=1; t0<m*n-2; t0++)
+    { ti = t0%m; tj = t0/m;
+      do
+      { t = ti*n+tj;
+        ti= t%m;
+        tj= t/m;
+      } while (t<t0);
+      z = x[t];
+      x[t] = x[t0];
+      x[t0] = z;
+    }
+}
+
+/* trace of an n*n square matrix. */
+double m_trace(x,n)
+double *x;
+int n;
+{ int i;
+  double sum;
+  sum = 0;
+  for (i=0; i<n; i++)
+    sum += x[i*(n+1)];
+  return(sum);
+}
+
+double vecsum(v,n)
+double *v;
+int n;
+{ int i;
+  double sum;
+  sum = 0.0;
+  for (i=0; i<n; i++) sum += v[i];
+  return(sum);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+  miscellaneous functions that may not be defined in the math
+  libraries. The implementations are crude.
+  mut_daws(x)   -- dawson's function
+  mut_exp(x)    -- exp(x), but it won't overflow.
+
+  where required, these must be #define'd in header files.
+
+  also includes
+  ptail(x)    -- exp(x*x/2)*int_{-\infty}^x exp(-u^2/2)du for x < -6.
+  logit(x)    -- logistic function.
+  expit(x)    -- inverse of logit.
+  factorial(n)-- factorial
+ */
+
+#include "mut.h"
+
+double mut_exp(x)
+double x;
+{ if (x>700.0) return(1.014232054735004e+304);
+  return(exp(x));
+}
+
+double mut_daws(x)
+double x;
+{ static double val[] = {
+  0,  0.24485619356002, 0.46034428261948, 0.62399959848185, 0.72477845900708,
+      0.76388186132749, 0.75213621001998, 0.70541701910853, 0.63998807456541,
+      0.56917098836654, 0.50187821196415, 0.44274283060424, 0.39316687916687,
+      0.35260646480842, 0.31964847250685, 0.29271122077502, 0.27039629581340,
+      0.25160207761769, 0.23551176224443, 0.22153505358518, 0.20924575719548,
+      0.19833146819662, 0.18855782729305, 0.17974461154688, 0.17175005072385 };
+  double h, f0, f1, f2, y, z, xx;
+  int j, m;
+  if (x<0) return(-mut_daws(-x));
+  if (x>6)
+  { /* Tail series: 1/x + 1/x^3 + 1.3/x^5 + 1.3.5/x^7 + ...  */
+    y = z = 1/x;
+    j = 0;
+    while (((f0=(2*j+1)/(x*x))<1) && (y>1.0e-10*z))
+    { y *= f0;
+      z += y;
+      j++;
+    }
+    return(z);
+  }
+  m = (int) (4*x);
+  h = x-0.25*m;
+  if (h>0.125)
+  { m++;
+    h = h-0.25;
+  }
+  xx = 0.25*m;
+  f0 = val[m];
+  f1 = 1-xx*f0;
+  z = f0+h*f1;
+  y = h;
+  j = 2;
+  while (fabs(y)>z*1.0e-10)
+  { f2 = -(j-1)*f0-xx*f1;
+    y *= h/j;
+    z += y*f2;
+    f0 = f1; f1 = f2;
+    j++;
+  }
+  return(z);
+}
+
+double ptail(x) /* exp(x*x/2)*int_{-\infty}^x exp(-u^2/2)du for x < -6 */
+double x;
+{ double y, z, f0;
+  int j;
+  y = z = -1.0/x;
+  j = 0;
+  while ((fabs(f0= -(2*j+1)/(x*x))<1) && (fabs(y)>1.0e-10*z))
+  { y *= f0;
+    z += y;
+    j++;
+  }
+  return(z);
+}
+
+double logit(x)
+double x;
+{ return(log(x/(1-x)));
+}
+
+double expit(x)
+double x;
+{ double u;
+  if (x<0)
+  { u = exp(x);
+    return(u/(1+u));
+  }
+  return(1/(1+exp(-x)));
+}
+
+int factorial(n)
+int n;
+{ if (n<=1) return(1.0);
+  return(n*factorial(n-1));
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * Constrained maximization of a bivariate function.
+ *   maxbvgrid(f,x,ll,ur,m0,m1)
+ *     maximizes over a grid of m0*m1 points. Returns the maximum,
+ *     and the maximizer through the array x. Usually this is a starter,
+ *     to choose between local maxima, followed by other routines to refine.
+ *
+ *  maxbvstep(f,x,ymax,h,ll,ur,err)
+ *     essentially multivariate bisection. A 3x3 grid of points is
+ *     built around the starting value (x,ymax). This grid is moved
+ *     around (step size h[0] and h[1] in the two dimensions) until
+ *     the maximum is in the middle.  Then, the step size is halved.
+ *     Usually, this will be called in a loop.
+ *     The error flag is set if the maximum can't be centered in a
+ *     reasonable number of steps.
+ *
+ *  maxbv(f,x,h,ll,ur,m0,m1,tol)
+ *     combines the two previous functions. It begins with a grid search
+ *     (if m0>0 and m1>0), followed by refinement. Refines until both h
+ *     components are < tol.
+ */
+#include "mut.h"
+
+#define max(a,b) ((a)>(b) ? (a) : (b))
+#define min(a,b) ((a)<(b) ? (a) : (b))
+
+double maxbvgrid(f,x,ll,ur,m0,m1,con)
+double (*f)(), *x, *ll, *ur;
+int m0, m1, *con;
+{ int i, j, im, jm;
+  double y, ymax;
+
+  im = -1;
+  for (i=0; i<=m0; i++)
+  { x[0] = ((m0-i)*ll[0] + i*ur[0])/m0;
+    for (j=0; j<=m1; j++)
+    { x[1] = ((m1-j)*ll[1] + j*ur[1])/m1;
+      y = f(x);
+      if ((im==-1) || (y>ymax))
+      { im = i; jm = j;
+        ymax = y;
+      }
+    }
+  }
+
+  x[0] = ((m0-im)*ll[0] + im*ur[0])/m0;
+  x[1] = ((m1-jm)*ll[1] + jm*ur[1])/m1;
+  con[0] = (im==m0)-(im==0);
+  con[1] = (jm==m1)-(jm==0);
+  return(ymax);
+}
+
+double maxbvstep(f,x,ymax,h,ll,ur,err,con)
+double (*f)(), *x, ymax, *h, *ll, *ur;
+int *err, *con;
+{ int i, j, ij, imax, steps, cts[2];
+  double newx, X[9][2], y[9];
+
+  imax =4; y[4] = ymax;
+
+  for (i=(con[0]==-1)-1; i<2-(con[0]==1); i++)
+    for (j=(con[1]==-1)-1; j<2-(con[1]==1); j++)
+    { ij = 3*i+j+4;
+      X[ij][0] = x[0]+i*h[0];
+      if (X[ij][0] < ll[0]+0.001*h[0]) X[ij][0] = ll[0];
+      if (X[ij][0] > ur[0]-0.001*h[0]) X[ij][0] = ur[0];
+      X[ij][1] = x[1]+j*h[1];
+      if (X[ij][1] < ll[1]+0.001*h[1]) X[ij][1] = ll[1];
+      if (X[ij][1] > ur[1]-0.001*h[1]) X[ij][1] = ur[1];
+      if (ij != 4)
+      { y[ij] = f(X[ij]);
+        if (y[ij]>ymax) { imax = ij; ymax = y[ij]; }
+      }
+    }
+
+  steps = 0;
+  cts[0] = cts[1] = 0;
+  while ((steps<20) && (imax != 4))
+  { steps++;
+    if ((con[0]>-1) && ((imax/3)==0)) /* shift right */
+    {
+      cts[0]--;
+      for (i=8; i>2; i--)
+      { X[i][0] = X[i-3][0]; y[i] = y[i-3];
+      }
+      imax = imax+3;
+      if (X[imax][0]==ll[0])
+        con[0] = -1;
+      else
+      { newx = X[imax][0]-h[0];
+        if (newx < ll[0]+0.001*h[0]) newx = ll[0];
+        for (i=(con[1]==-1); i<3-(con[1]==1); i++)
+        { X[i][0] = newx;
+          y[i] = f(X[i]);
+          if (y[i]>ymax) { ymax = y[i]; imax = i; }
+        }
+        con[0] = 0;
+      }
+    }
+
+    if ((con[0]<1) && ((imax/3)==2)) /* shift left */
+    {
+      cts[0]++;
+      for (i=0; i<6; i++)
+      { X[i][0] = X[i+3][0]; y[i] = y[i+3];
+      }
+      imax = imax-3;
+      if (X[imax][0]==ur[0])
+        con[0] = 1;
+      else
+      { newx = X[imax][0]+h[0];
+        if (newx > ur[0]-0.001*h[0]) newx = ur[0];
+        for (i=6+(con[1]==-1); i<9-(con[1]==1); i++)
+        { X[i][0] = newx;
+          y[i] = f(X[i]);
+          if (y[i]>ymax) { ymax = y[i]; imax = i; }
+        }
+        con[0] = 0;
+      }
+    }
+
+    if ((con[1]>-1) && ((imax%3)==0)) /* shift up */
+    {
+      cts[1]--;
+      for (i=9; i>0; i--) if (i%3 > 0)
+      { X[i][1] = X[i-1][1]; y[i] = y[i-1];
+      }
+      imax = imax+1;
+      if (X[imax][1]==ll[1])
+        con[1] = -1;
+      else
+      { newx = X[imax][1]-h[1];
+        if (newx < ll[1]+0.001*h[1]) newx = ll[1];
+        for (i=3*(con[0]==-1); i<7-(con[0]==1); i=i+3)
+        { X[i][1] = newx;
+          y[i] = f(X[i]);
+          if (y[i]>ymax) { ymax = y[i]; imax = i; }
+        }
+        con[1] = 0;
+      }
+    }
+
+    if ((con[1]<1) && ((imax%3)==2)) /* shift down */
+    {
+      cts[1]++;
+      for (i=0; i<9; i++) if (i%3 < 2)
+      { X[i][1] = X[i+1][1]; y[i] = y[i+1];
+      }
+      imax = imax-1;
+      if (X[imax][1]==ur[1])
+        con[1] = 1;
+      else
+      { newx = X[imax][1]+h[1];
+        if (newx > ur[1]-0.001*h[1]) newx = ur[1];
+        for (i=2+3*(con[0]==-1); i<9-(con[0]==1); i=i+3)
+        { X[i][1] = newx;
+          y[i] = f(X[i]);
+          if (y[i]>ymax) { ymax = y[i]; imax = i; }
+        }
+        con[1] = 0;
+      }
+    }
+/* if we've taken 3 steps in one direction, try increasing the
+ * corresponding h.
+ */
+    if ((cts[0]==-2) | (cts[0]==2))
+    { h[0] = 2*h[0]; cts[0] = 0; }
+    if ((cts[1]==-2) | (cts[1]==2))
+    { h[1] = 2*h[1]; cts[1] = 0; }
+  }
+
+  if (steps==40)
+    *err = 1;
+  else
+  {
+    h[0] /= 2.0; h[1] /= 2.0;
+    *err = 0;
+  }
+
+  x[0] = X[imax][0];
+  x[1] = X[imax][1];
+  return(y[imax]);
+}
+
+#define BQMmaxp 5
+
+int boxquadmin(J,b0,p,x0,ll,ur)
+jacobian *J;
+double *b0, *x0, *ll, *ur;
+int p;
+{ double b[BQMmaxp], x[BQMmaxp], L[BQMmaxp*BQMmaxp], C[BQMmaxp*BQMmaxp], d[BQMmaxp];
+  double f, fmin;
+  int i, imin, m, con[BQMmaxp], rlx;
+
+  if (p>BQMmaxp) mut_printf("boxquadmin: maxp is 5.\n");
+  if (J->st != JAC_RAW) mut_printf("boxquadmin: must start with JAC_RAW.\n");
+
+  m = 0;
+  setzero(L,p*p);
+  setzero(x,p);
+  memcpy(C,J->Z,p*p*sizeof(double));
+  for (i=0; i<p; i++) con[i] = 0;
+
+  do
+  {
+/* first, keep minimizing and add constraints, one at a time.
+ */
+    do
+    {
+      matrixmultiply(C,x,b,p,p,1);
+      for (i=0; i<p; i++) b[i] += b0[i];
+      conquadmin(J,b,p,L,d,m);
+/* if C matrix is not pd, don't even bother.
+ * this relies on having used cholesky dec.
+ */
+if ((J->Z[0]==0.0) | (J->Z[3]==0.0)) return(1);
+      fmin = 1.0;
+      for (i=0; i<p; i++) if (con[i]==0)
+      { f = 1.0;
+        if (x0[i]+x[i]+b[i] < ll[i]) f = (ll[i]-x[i]-x0[i])/b[i];
+        if (x0[i]+x[i]+b[i] > ur[i]) f = (ur[i]-x[i]-x0[i])/b[i];
+        if (f<fmin) fmin = f;
+        imin = i;
+      }
+      for (i=0; i<p; i++) x[i] += fmin*b[i];
+      if (fmin<1.0)
+      { L[m*p+imin] = 1;
+        m++;
+        con[imin] = (b[imin]<0) ? -1 : 1;
+      }
+    } while ((fmin < 1.0) & (m<p));
+
+/* now, can I relax any constraints?
+ * compute slopes at current point. Can relax if:
+ *   slope is -ve on a lower boundary.
+ *   slope is +ve on an upper boundary.
+ */
+    rlx = 0;
+    if (m>0)
+    { matrixmultiply(C,x,b,p,p,1);
+      for (i=0; i<p; i++) b[i] += b0[i];
+      for (i=0; i<p; i++)
+      { if ((con[i]==-1)&& (b[i]<0)) { con[i] = 0; rlx = 1; }
+        if ((con[i]==1) && (b[i]>0)) { con[i] = 0; rlx = 1; }
+      }
+
+      if (rlx) /* reconstruct the constraint matrix */
+      { setzero(L,p*p); m = 0;
+        for (i=0; i<p; i++) if (con[i] != 0)
+        { L[m*p+i] = 1;
+          m++;
+        }
+      }
+    }
+  } while (rlx);
+
+  memcpy(b0,x,p*sizeof(double)); /* this is how far we should move from x0 */
+  return(0);
+}
+
+double maxquadstep(f,x,ymax,h,ll,ur,err,con)
+double (*f)(), *x, ymax, *h, *ll, *ur;
+int *err, *con;
+{ jacobian J;
+  double b[2], c[2], d, jwork[12];
+  double x0, x1, y0, y1, ym, h0, xl[2], xu[2], xi[2];
+  int i, m;
+  
+  *err = 0;
+
+/* first, can we relax any of the initial constraints?
+ * if so, just do one step away from the boundary, and
+ * return for restart.
+ */
+  for (i=0; i<2; i++)
+    if (con[i] != 0)
+    { xi[0] = x[0]; xi[1] = x[1];
+      xi[i] = x[i]-con[i]*h[i];
+      y0 = f(xi);
+      if (y0>ymax)
+      { memcpy(x,xi,2*sizeof(double));
+        con[i] = 0;
+        return(y0);
+      }
+    }
+
+/* now, all initial constraints remain active.
+ */
+
+  m = 9;
+  for (i=0; i<2; i++) if (con[i]==0)
+  { m /= 3;
+    xl[0] = x[0]; xl[1] = x[1];
+    xl[i] = max(x[i]-h[i],ll[i]); y0 = f(xl);
+    x0 = xl[i]-x[i]; y0 -= ymax;
+    xu[0] = x[0]; xu[1] = x[1];
+    xu[i] = min(x[i]+h[i],ur[i]); y1 = f(xu);
+    x1 = xu[i]-x[i]; y1 -= ymax;
+    if (x0*x1*(x1-x0)==0) { *err = 1; return(0.0); }
+    b[i] = (x0*x0*y1-x1*x1*y0)/(x0*x1*(x0-x1));
+    c[i] = 2*(x0*y1-x1*y0)/(x0*x1*(x1-x0));
+    if (c[i] >= 0.0) { *err = 1; return(0.0); }
+    xi[i] = (b[i]<0) ? xl[i] : xu[i];
+  }
+  else { c[i] = -1.0; b[i] = 0.0; } /* enforce initial constraints */
+
+  if ((con[0]==0) && (con[1]==0))
+  { x0 = xi[0]-x[0];
+    x1 = xi[1]-x[1];
+    ym = f(xi) - ymax - b[0]*x0 - c[0]*x0*x0/2 - b[1]*x1 - c[1]*x1*x1/2;
+    d = ym/(x0*x1);
+  }
+  else d = 0.0;
+
+/* now, maximize the quadratic.
+ * y[4] + b0*x0 + b1*x1 + 0.5(c0*x0*x0 + c1*x1*x1 + 2*d*x0*x1)
+ * -ve everything, to call quadmin.
+ */
+  jac_alloc(&J,2,jwork);
+  J.Z[0] = -c[0];
+  J.Z[1] = J.Z[2] = -d;
+  J.Z[3] = -c[1];
+  J.st = JAC_RAW;
+  J.p = 2;
+  b[0] = -b[0]; b[1] = -b[1];
+  *err = boxquadmin(&J,b,2,x,ll,ur);
+  if (*err) return(ymax);
+
+/* test to see if this step successfully increases...
+ */
+  for (i=0; i<2; i++)
+  { xi[i] = x[i]+b[i];
+    if (xi[i]<ll[i]+1e-8*h[i]) xi[i] = ll[i];
+    if (xi[i]>ur[i]-1e-8*h[i]) xi[i] = ur[i];
+  }
+  y1 = f(xi);
+  if (y1 < ymax) /* no increase */
+  { *err = 1;
+    return(ymax);
+  }
+
+/* wonderful. update x, h, with the restriction that h can't decrease
+ * by a factor over 10, or increase by over 2.
+ */
+  for (i=0; i<2; i++)
+  { x[i] = xi[i];
+    if (x[i]==ll[i]) con[i] = -1;
+    if (x[i]==ur[i]) con[i] = 1;
+    h0 = fabs(b[i]);
+    h0 = min(h0,2*h[i]);
+    h0 = max(h0,h[i]/10);
+    h[i] = min(h0,(ur[i]-ll[i])/2.0); 
+  }
+  return(y1);
+}
+
+double maxbv(f,x,h,ll,ur,m0,m1,tol)
+double (*f)(), *x, *h, *ll, *ur, tol;
+int m0, m1;
+{ double ymax;
+  int err, con[2];
+
+  con[0] = con[1] = 0;
+  if ((m0>0) & (m1>0))
+  {
+    ymax = maxbvgrid(f,x,ll,ur,m0,m1,con);
+    h[0] = (ur[0]-ll[0])/(2*m0);
+    h[1] = (ur[1]-ll[1])/(2*m1);
+  }
+  else
+  { x[0] = (ll[0]+ur[0])/2;
+    x[1] = (ll[1]+ur[1])/2;
+    h[0] = (ur[0]-ll[0])/2;
+    h[1] = (ur[1]-ll[1])/2;
+    ymax = f(x);
+  }
+
+  while ((h[0]>tol) | (h[1]>tol))
+  { ymax = maxbvstep(f,x,ymax,h,ll,ur,&err,con);
+    if (err) mut_printf("maxbvstep failure\n");
+  }
+
+  return(ymax);
+}
+
+double maxbvq(f,x,h,ll,ur,m0,m1,tol)
+double (*f)(), *x, *h, *ll, *ur, tol;
+int m0, m1;
+{ double ymax;
+  int err, con[2];
+
+  con[0] = con[1] = 0;
+  if ((m0>0) & (m1>0))
+  {
+    ymax = maxbvgrid(f,x,ll,ur,m0,m1,con);
+    h[0] = (ur[0]-ll[0])/(2*m0);
+    h[1] = (ur[1]-ll[1])/(2*m1);
+  }
+  else
+  { x[0] = (ll[0]+ur[0])/2;
+    x[1] = (ll[1]+ur[1])/2;
+    h[0] = (ur[0]-ll[0])/2;
+    h[1] = (ur[1]-ll[1])/2;
+    ymax = f(x);
+  }
+
+  while ((h[0]>tol) | (h[1]>tol))
+  { /* first, try a quadratric step */
+    ymax = maxquadstep(f,x,ymax,h,ll,ur,&err,con);
+    /* if the quadratic step fails, move the grid around */
+    if (err)
+    {
+      ymax = maxbvstep(f,x,ymax,h,ll,ur,&err,con);
+      if (err)
+      { mut_printf("maxbvstep failure\n");
+        return(ymax);
+      }
+    }
+  }
+
+  return(ymax);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+
+prf mut_printf = (prf)printf;
+
+void mut_redirect(newprf)
+prf newprf;
+{ mut_printf = newprf;
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ * function to find order of observations in an array.
+ *
+ * mut_order(x,ind,i0,i1)
+ *   x     array to find order of.
+ *   ind   integer array of indexes.
+ *   i0,i1 (integers) range to order.
+ *
+ * at output, ind[i0...i1] are permuted so that
+ *   x[ind[i0]] <= x[ind[i0+1]] <= ... <= x[ind[i1]].
+ * (with ties, output order of corresponding indices is arbitrary).
+ * The array x is unchanged.
+ *
+ * Typically, if x has length n, then i0=0, i1=n-1 and
+ * ind is (any permutation of) 0...n-1.
+ */
+
+#include "mut.h"
+
+double med3(x0,x1,x2)
+double x0, x1, x2;
+{ if (x0<x1)
+  { if (x2<x0) return(x0);
+    if (x1<x2) return(x1);
+    return(x2);
+  }
+/* x1 < x0 */
+  if (x2<x1) return(x1);
+  if (x0<x2) return(x0);
+  return(x2);
+}
+
+void mut_order(x,ind,i0,i1)
+double *x;
+int *ind, i0, i1;
+{ double piv;
+  int i, l, r, z;
+
+  if (i1<=i0) return;
+  piv = med3(x[ind[i0]],x[ind[i1]],x[ind[(i0+i1)/2]]);
+  l = i0; r = i0-1;
+
+/* at each stage,
+ * x[i0..l-1] < piv
+ * x[l..r] = piv
+ * x[r+1..i-1] > piv
+ * then, decide where to put x[i].
+ */
+  for (i=i0; i<=i1; i++)
+  { if (x[ind[i]]==piv)
+    { r++;
+      z = ind[i]; ind[i] = ind[r]; ind[r] = z;
+    } 
+    else if (x[ind[i]]<piv)
+    { r++;
+      z = ind[i]; ind[i] = ind[r]; ind[r] = ind[l]; ind[l] = z;
+      l++;
+    }
+  }
+
+  if (l>i0) mut_order(x,ind,i0,l-1);
+  if (r<i1) mut_order(x,ind,r+1,i1);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+
+#define LOG_2           0.6931471805599453094172321214581765680755
+#define IBETA_LARGE     1.0e30
+#define IBETA_SMALL     1.0e-30
+#define IGAMMA_LARGE    1.0e30
+#define DOUBLE_EP     2.2204460492503131E-16
+
+double ibeta(x, a, b)
+double x, a, b;
+{ int flipped = 0, i, k, count;
+  double I = 0, temp, pn[6], ak, bk, next, prev, factor, val;
+  if (x <= 0) return(0);
+  if (x >= 1) return(1);
+/* use ibeta(x,a,b) = 1-ibeta(1-x,b,z) */
+  if ((a+b+1)*x > (a+1))
+  { flipped = 1;
+    temp = a;
+    a = b;
+    b = temp;
+    x = 1 - x;
+  }
+  pn[0] = 0.0;
+  pn[2] = pn[3] = pn[1] = 1.0;
+  count = 1;
+  val = x/(1.0-x);
+  bk = 1.0;
+  next = 1.0;
+  do
+  { count++;
+    k = count/2;
+    prev = next;
+    if (count%2 == 0)
+      ak = -((a+k-1.0)*(b-k)*val)/((a+2.0*k-2.0)*(a+2.0*k-1.0));
+    else
+      ak = ((a+b+k-1.0)*k*val)/((a+2.0*k)*(a+2.0*k-1.0));
+    pn[4] = bk*pn[2] + ak*pn[0];
+    pn[5] = bk*pn[3] + ak*pn[1];
+    next = pn[4] / pn[5];
+    for (i=0; i<=3; i++)
+      pn[i] = pn[i+2];
+    if (fabs(pn[4]) >= IBETA_LARGE)
+      for (i=0; i<=3; i++)
+        pn[i] /= IBETA_LARGE;
+    if (fabs(pn[4]) <= IBETA_SMALL)
+      for (i=0; i<=3; i++)
+        pn[i] /= IBETA_SMALL;
+  } while (fabs(next-prev) > DOUBLE_EP*prev);
+  /* factor = a*log(x) + (b-1)*log(1-x);
+  factor -= mut_lgamma(a+1) + mut_lgamma(b) - mut_lgamma(a+b); */
+  factor = dbeta(x,a,b,1) + log(x/a);
+  I = exp(factor) * next;
+  return(flipped ? 1-I : I);
+}
+
+/*
+ * Incomplete gamma function.
+ * int_0^x u^{df-1} e^{-u} du / Gamma(df).
+ */
+double igamma(x, df)
+double x, df;
+{ double factor, term, gintegral, pn[6], rn, ak, bk;
+  int i, count, k;
+  if (x <= 0.0) return(0.0);
+
+  if (df < 1.0)
+    return( dgamma(x,df+1.0,1.0,0) + igamma(x,df+1.0) );
+
+  factor = x * dgamma(x,df,1.0,0);
+  /* factor = exp(df*log(x) - x - lgamma(df)); */
+
+  if (x > 1.0 && x >= df)
+  {
+    pn[0] = 0.0;
+    pn[2] = pn[1] = 1.0;
+    pn[3] = x;
+    count = 1;
+    rn = 1.0 / x;
+    do
+    { count++;
+      k = count / 2;
+      gintegral = rn;
+      if (count%2 == 0)
+      { bk = 1.0;
+        ak = (double)k - df;
+      } else
+      { bk = x;
+        ak = (double)k;
+      }
+      pn[4] = bk*pn[2] + ak*pn[0];
+      pn[5] = bk*pn[3] + ak*pn[1];
+      rn = pn[4] / pn[5];
+      for (i=0; i<4; i++)
+        pn[i] = pn[i+2];
+      if (pn[4] > IGAMMA_LARGE)
+        for (i=0; i<4; i++)
+          pn[i] /= IGAMMA_LARGE;
+    } while (fabs(gintegral-rn) > DOUBLE_EP*rn);
+    gintegral = 1.0 - factor*rn;
+  }
+  else
+  { /*   For x<df, use the series
+     *   dpois(df,x)*( 1 + x/(df+1) + x^2/((df+1)(df+2)) + ... )
+     *   This could be slow if df large and x/df is close to 1.
+     */
+    gintegral = term = 1.0;
+    rn = df;
+    do
+    { rn += 1.0;
+      term *= x/rn;
+      gintegral += term;
+    } while (term > DOUBLE_EP*gintegral);
+    gintegral *= factor/df;
+  }
+  return(gintegral);
+}
+
+double pf(q, df1, df2)
+double q, df1, df2;
+{ return(ibeta(q*df1/(df2+q*df1), df1/2, df2/2));
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#include "mut.h"
+#include <string.h>
+
+/* quadmin: minimize the quadratic,
+ *   2<x,b> + x^T A x.
+ *   x = -A^{-1} b.
+ *
+ * conquadmin: min. subject to L'x = d   (m constraints)
+ *   x = -A^{-1}(b+Ly)  (y = Lagrange multiplier)
+ *   y = -(L'A^{-1}L)^{-1} (L'A^{-1}b)
+ *   x = -A^{-1}b + A^{-1}L (L'A^{-1}L)^{-1} [(L'A^{-1})b + d]
+ * (non-zero d to be added!!)
+ *
+ * qprogmin: min. subject to L'x >= 0.
+ */
+
+void quadmin(J,b,p)
+jacobian *J;
+double *b;
+int p;
+{ int i;
+  jacob_dec(J,JAC_CHOL);
+  i = jacob_solve(J,b);
+  if (i<p) mut_printf("quadmin singular %2d %2d\n",i,p);
+  for (i=0; i<p; i++) b[i] = -b[i];
+}
+
+/* project vector a (length n) onto
+ * columns of X (n rows, m columns, organized by column).
+ * store result in y.
+ */
+#define pmaxm 10
+#define pmaxn 100
+void project(a,X,y,n,m)
+double *a, *X, *y;
+int n, m;
+{ double xta[pmaxm], R[pmaxn*pmaxm];
+  int i;
+
+  if (n>pmaxn) mut_printf("project: n too large\n");
+  if (m>pmaxm) mut_printf("project: m too large\n");
+
+  for (i=0; i<m; i++) xta[i] = innerprod(a,&X[i*n],n);
+  memcpy(R,X,m*n*sizeof(double));
+  qr(R,n,m,NULL);
+  qrsolv(R,xta,n,m);
+
+  matrixmultiply(X,xta,y,n,m,1);
+}
+
+void resproj(a,X,y,n,m)
+double *a, *X, *y;
+int n, m;
+{ int i;
+  project(a,X,y,n,m);
+  for (i=0; i<n; i++) y[i] = a[i]-y[i];
+}
+
+/* x = -A^{-1}b + A^{-1}L (L'A^{-1}L)^{-1} [(L'A^{-1})b + d] */
+void conquadmin(J,b,n,L,d,m)
+jacobian *J;
+double *b, *L, *d;
+int m, n;
+{ double bp[10], L0[100];
+  int i, j;
+
+  if (n>10) mut_printf("conquadmin: max. n is 10.\n");
+  memcpy(L0,L,n*m*sizeof(double));
+  jacob_dec(J,JAC_CHOL);
+  for (i=0; i<m; i++) jacob_hsolve(J,&L[i*n]);
+  jacob_hsolve(J,b);
+
+  resproj(b,L,bp,n,m);
+
+  jacob_isolve(J,bp);
+  for (i=0; i<n; i++) b[i] = -bp[i];
+
+  qr(L,n,m,NULL);
+  qrsolv(L,d,n,m);
+  for (i=0; i<n; i++)
+  { bp[i] = 0;
+    for (j=0; j<m; j++) bp[i] += L0[j*n+i]*d[j];
+  }
+  jacob_solve(J,bp);
+  for (i=0; i<n; i++) b[i] += bp[i];
+}
+
+void qactivemin(J,b,n,L,d,m,ac)
+jacobian *J;
+double *b, *L, *d;
+int m, n, *ac;
+{ int i, nac;
+  double M[100], dd[10];
+  nac = 0;
+  for (i=0; i<m; i++) if (ac[i]>0)
+  { memcpy(&M[nac*n],&L[i*n],n*sizeof(double));
+    dd[nac] = d[i];
+    nac++;
+  }
+  conquadmin(J,b,n,M,dd,nac);
+}
+
+/* return 1 for full step; 0 if new constraint imposed. */
+int movefrom(x0,x,n,L,d,m,ac)
+double *x0, *x, *L, *d;
+int n, m, *ac;
+{ int i, imin;
+  double c0, c1, lb, lmin;
+  lmin = 1.0;
+  for (i=0; i<m; i++) if (ac[i]==0)
+  { c1 = innerprod(&L[i*n],x,n)-d[i];
+    if (c1<0.0)
+    { c0 = innerprod(&L[i*n],x0,n)-d[i];
+      if (c0<0.0)
+      { if (c1<c0) { lmin = 0.0; imin = 1; }
+      }
+      else
+      { lb = c0/(c0-c1);
+        if (lb<lmin) { lmin = lb; imin = i; }
+      }
+    }
+  }
+  for (i=0; i<n; i++)
+    x0[i] = lmin*x[i]+(1-lmin)*x0[i];
+  if (lmin==1.0) return(1);
+  ac[imin] = 1;
+  return(0);
+}
+
+int qstep(J,b,x0,n,L,d,m,ac,deac)
+jacobian *J;
+double *b, *x0, *L, *d;
+int m, n, *ac, deac;
+{ double x[10];
+  int i;
+
+  if (m>10) mut_printf("qstep: too many constraints.\n");
+  if (deac)
+  { for (i=0; i<m; i++) if (ac[i]==1)
+    { ac[i] = 0;
+      memcpy(x,b,n*sizeof(double));
+      qactivemin(J,x,n,L,d,m,ac);
+      if (innerprod(&L[i*n],x,n)>d[i]) /* deactivate this constraint; should rem. */
+        i = m+10;
+      else
+        ac[i] = 1;
+    }
+    if (i==m) return(0); /* no deactivation possible */
+  }
+
+  do
+  { if (!deac)
+    { memcpy(x,b,n*sizeof(double));
+      qactivemin(J,x,n,L,d,m,ac);
+    }
+    i = movefrom(x0,x,n,L,d,m,ac);
+
+    deac = 0;
+  } while (i==0);
+  return(1);
+}
+
+/*
+ * x0 is starting value; should satisfy constraints.
+ * L is n*m constraint matrix.
+ * ac is active constraint vector:
+ *   ac[i]=0, inactive.
+ *   ac[i]=1, active, but can be deactivated.
+ *   ac[i]=2, active, cannot be deactivated.
+ */
+
+void qprogmin(J,b,x0,n,L,d,m,ac)
+jacobian *J;
+double *b, *x0, *L, *d;
+int m, n, *ac;
+{ int i;
+  for (i=0; i<m; i++) if (ac[i]==0)
+  { if (innerprod(&L[i*n],x0,n) < d[i]) ac[i] = 1; }
+  jacob_dec(J,JAC_CHOL);
+  qstep(J,b,x0,n,L,d,m,ac,0);
+  while (qstep(J,b,x0,n,L,d,m,ac,1));
+}
+
+void qpm(A,b,x0,n,L,d,m,ac)
+double *A, *b, *x0, *L, *d;
+int *n, *m, *ac;
+{ jacobian J;
+  double wk[1000];
+  jac_alloc(&J,*n,wk);
+  memcpy(J.Z,A,(*n)*(*n)*sizeof(double));
+  J.p = *n;
+  J.st = JAC_RAW;
+  qprogmin(&J,b,x0,*n,L,d,*m,ac);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/libtube.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,708 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+
+#include "mex.h"
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Copyright (c) 1998-2006 Catherine Loader.
+ *   This file contains functions to compute the constants
+ *   appearing in the tube formula.
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "tube.h"
+
+static double *fd, *ft;
+static int globm, (*wdf)(), use_covar, kap_terms;
+
+int k0_reqd(d,n,uc)
+int d, n, uc;
+{ int m;
+  m = d*(d+1)+1;
+  if (uc) return(2*m*m);
+     else return(2*n*m);
+}
+
+void assignk0(z,d,n) /* z should be n*(2*d*d+2*d+2); */
+double *z;
+int d, n;
+{ ft = z; z += n*(d*(d+1)+1);
+  fd = z; z += n*(d*(d+1)+1);
+}
+
+/* Residual projection of y to the columns of A,
+ * (I - A(R^TR)^{-1}A^T)y
+ * R should be from the QR-decomp. of A.
+ */
+void rproject(y,A,R,n,p)
+double *y, *A, *R;
+int n, p;
+{ double v[1+TUBE_MXDIM];
+  int i, j;
+
+  for (i=0; i<p; i++) v[i] = innerprod(&A[i*n],y,n);
+  qrsolv(R,v,n,p);
+  for (i=0; i<n; i++)
+    for (j=0; j<p; j++)
+      y[i] -= A[j*n+i]*v[j];
+}
+
+double k2c(lij,A,m,dd,d)
+double *lij, *A;
+int m, d, dd;
+{ int i, j, k, l;
+  double sum, *bk, v[TUBE_MXDIM];
+
+  for (i=0; i<dd*d; i++)
+    chol_hsolve(fd,&lij[i*m],m,dd+1);
+  for (i=0; i<dd*d; i++)
+    for (j=0; j<dd*d; j++)
+      lij[i*m+j+d+1] -= innerprod(&lij[i*m],&lij[j*m],dd+1);
+
+  sum = 0;
+  for (i=0; i<dd; i++)
+    for (j=0; j<i; j++)
+    { bk = &lij[i*d*m + j*d + d+1];
+      for (k=0; k<dd; k++)
+      { v[0] = 0;
+        for (l=0; l<dd; l++) v[l+1] = bk[k*m+l];
+        chol_solve(fd,v,m,dd+1);
+        for (l=0; l<dd; l++) bk[k*m+l] = v[l+1];
+      }
+      for (k=0; k<dd; k++)
+      { v[0] = 0;
+        for (l=0; l<dd; l++) v[l+1] = bk[l*m+k];
+        chol_solve(fd,v,m,dd+1);
+        for (l=0; l<dd; l++) bk[l*m+k] = v[l+1];
+      }
+      sum += bk[i*m+j] - bk[j*m+i];
+    }
+  return(sum*fd[0]*fd[0]);
+}
+
+double k2x(lij,A,m,d,dd)
+double *lij, *A;
+int m, d, dd;
+{ int i, j, k;
+  double s, v[1+TUBE_MXDIM], *ll;
+
+/* residual projections of lij onto A = [l,l1,...,ld] */
+  for (i=0; i<d; i++)
+    for (j=i; j<d; j++)
+    { ll = &lij[(i*dd+j)*m];
+      rproject(ll,A,fd,m,d+1);
+      if (i!=j) memcpy(&lij[(j*dd+i)*m],ll,m*sizeof(double));
+    }
+
+/* compute lij[j][i] = e_i^T (A^T A)^{-1} B_j^T */
+  for (k=0; k<m; k++)
+    for (j=0; j<d; j++)
+    { v[0] = 0;
+      for (i=0; i<d; i++) v[i+1] = lij[(j*dd+i)*m+k];
+      qrsolv(fd,v,m,d+1);
+      for (i=0; i<d; i++) lij[(j*dd+i)*m+k] = v[i+1];
+    } 
+
+/* finally, add up to get the kappa2 term */
+  s = 0;
+  for (j=0; j<d; j++)
+    for (k=0; k<j; k++)
+      s += innerprod(&lij[(j*dd+j)*m],&lij[(k*dd+k)*m],m)
+         - innerprod(&lij[(j*dd+k)*m],&lij[(k*dd+j)*m],m);
+
+  return(s*fd[0]*fd[0]);
+}
+
+void d2c(ll,nn,li,ni,lij,nij,M,m,dd,d)
+double *ll, *nn, *li, *ni, *lij, *nij, *M;
+int m, dd, d;
+{ int i, j, k, l, t, u, v, w;
+  double z;
+
+  for (i=0; i<dd; i++)
+    for (j=0; j<dd; j++)
+    { for (k=0; k<d; k++)
+      { for (l=0; l<d; l++)
+        { z = M[i*d+k]*M[j*d+l];
+          if (z != 0.0)
+          { nij[(i*d+j)*m] += z*lij[(k*d+l)*m];
+            for (t=0; t<d; t++) /* need d, not dd here */
+              for (u=0; u<d; u++)
+                nij[(i*d+j)*m+t+1] += z*M[t*d+u]*lij[(k*d+l)*m+u+1];
+            for (t=0; t<dd; t++)
+              for (u=0; u<dd; u++)
+              { for (v=0; v<d; v++)
+                  for (w=0; w<d; w++)
+                    nij[(i*d+j)*m+(t*d+u)+d+1] +=
+                      z*M[t*d+v]*M[u*d+w]*lij[(k*d+l)*m+(v*d+w)+d+1];
+                for (v=0; v<d; v++)
+                  nij[(i*d+j)*m+(t*d+u)+d+1] += z*M[(v+1)*d*d+t*d+u]*lij[(k*d+l)*m+v+1];
+              }
+          }
+        }
+
+        z = M[(k+1)*d*d+i*d+j];
+        if (z!=0.0)
+        { nij[(i*d+j)*m] += z*li[k*m];
+          for (t=0; t<d; t++)
+            for (u=0; u<d; u++)
+              nij[(i*d+j)*m+t+1] += z*M[t*d+u]*li[k*m+u+1];
+          for (t=0; t<dd; t++)
+            for (u=0; u<dd; u++)
+            { for (v=0; v<d; v++)
+                for (w=0; w<d; w++)
+                  nij[(i*d+j)*m+(t*d+u)+d+1] += z*M[t*d+v]*M[u*d+w]*lij[(v*d+w)*m+k+1];
+              for (v=0; v<d; v++)
+                nij[(i*d+j)*m+(t*d+u)+d+1] += z*M[(v+1)*d*d+t*d+u]*li[k*m+v+1];
+            }
+        }
+      }
+    }
+}
+
+void d2x(li,lij,nij,M,m,dd,d)
+double *li, *lij, *nij, *M;
+int m, dd, d;
+{ int i, j, k, l, z;
+  double t;
+  for (i=0; i<dd; i++)
+    for (j=0; j<dd; j++)
+    { for (k=0; k<d; k++)
+      { for (l=0; l<d; l++)
+        { t = M[i*d+k] * M[j*d+l];
+          if (t != 0.0)
+          { for (z=0; z<m; z++)
+              nij[(i*d+j)*m+z] += t*lij[(k*d+l)*m+z];
+          }
+        }
+        t = M[(k+1)*d*d+i*d+j];
+        if (t!=0.0)
+          for (z=0; z<m; z++)
+            nij[(i*d+j)*m+z] += t*li[k*m+z];
+      }
+    }
+}
+
+int k0x(x,d,kap,M)
+double *x, *kap, *M;
+int d;
+{ double det, *lij, *nij, z;
+  int j, m, r;
+
+  r = 1 + ((d>=2) & (kap_terms >= 3));
+  m = globm = wdf(x,ft,r);
+
+  memcpy(fd,ft,m*(d+1)*sizeof(double));
+  if (use_covar) chol_dec(fd,m,d+1);
+            else qr(fd,m,d+1,NULL);
+
+  det = 1;
+  for (j=1; j<=d; j++)
+    det *= fd[j*(m+1)]/fd[0];
+  kap[0] = det;
+  if (kap_terms == 1) return(1);
+  kap[1] = 0.0;
+  if ((kap_terms == 2) | (d<=1)) return(2);
+
+  lij = &ft[(d+1)*m];
+  nij = &fd[(d+1)*m];
+  memcpy(nij,lij,m*d*d*sizeof(double));
+  z = (use_covar) ?  k2c(nij,ft,m,d,d) : k2x(nij,ft,m,d,d);
+  kap[2] = z*det;
+  if ((kap_terms == 3) | (d==2)) return(3);
+
+  kap[3] = 0;
+  return(4);
+}
+
+void d1c(li,ni,m,d,M)
+double *li, *ni, *M;
+int m, d;
+{ int i, j, k, l;
+  double t;
+
+  fd[0] = ft[0];
+  for (i=0; i<d; i++)
+  { t = 0;
+    for (j=0; j<d; j++) t += M[i*d+j]*li[j*m];
+    fd[i+1] = ni[i*m] = t;
+
+    for (j=0; j<d; j++)
+    { t = 0;
+      for (k=0; k<d; k++)
+        for (l=0; l<d; l++)
+          t += li[k*m+l+1] * M[i*d+k] * M[j*d+l];
+      ni[i*m+j+1] = t;
+    }
+  }
+}
+
+void d1x(li,ni,m,d,M)
+double *li, *ni, *M;
+int m, d;
+{ int i, j, k;
+  memcpy(fd,ft,m*sizeof(double));
+  setzero(ni,m*d);
+  for (j=0; j<d; j++)
+    for (k=0; k<d; k++)
+      if (M[j*d+k]!=0)
+        for (i=0; i<m; i++) ni[j*m+i] += M[j*d+k]*li[k*m+i];
+}
+
+int l1x(x,d,lap,M)
+double *x, *lap, *M;
+int d;
+{ double det, sumcj, *u, v[TUBE_MXDIM];
+  double *ll, *li, *lij, *ni, *nij;
+  int i, j, m;
+  if (kap_terms<=1) return(0);
+  m = globm;
+  li  = &ft[m]; lij = &ft[(d+1)*m];
+  ni  = &fd[m]; nij = &fd[(d+1)*m];
+  setzero(ni,m*d);
+  setzero(nij,m*d*d);
+
+  if (use_covar) d1c(li,ni,m,d,M);
+            else d1x(li,ni,m,d,M);
+
+/* the last (d+1) columns of nij are free, use for an extra copy of ni */
+  ll = &fd[d*d*m];
+  u = &ll[d*m];
+  if (use_covar)
+    memcpy(u,&ni[(d-1)*m],d*sizeof(double)); /* cov(ld, (l,l1,...ld-1)) */
+  else
+    memcpy(ll,fd,(d+1)*m*sizeof(double));
+
+  if (use_covar) chol_dec(fd,m,d+1);
+            else qr(fd,m,d+1,NULL);
+  det = 1;
+  for (j=1; j<d; j++)
+    det *= fd[(m+1)*j]/fd[0];
+  lap[0] = det;
+  if ((kap_terms==2) | (d<=1)) return(1);
+
+  sumcj = 0.0;
+  if (use_covar)
+  { d2c(ft,fd,li,ni,lij,nij,M,m,d-1,d);
+    chol_solve(fd,u,m,d);
+    for (i=0; i<d-1; i++)
+    { v[0] = 0;
+      for (j=0; j<d-1; j++)
+        v[j+1] = nij[(i*d+j)*m+d] - innerprod(u,&nij[(i*d+j)*m],d);
+      chol_solve(fd,v,m,d);
+      sumcj -= v[i+1];
+    }
+  }
+  else
+  { d2x(li,lij,nij,M,m,d-1,d);
+    rproject(u,ll,fd,m,d);
+    for (i=0; i<d-1; i++)
+    { v[0] = 0;
+      for (j=0; j<d-1; j++) v[j+1] = innerprod(&nij[(i*d+j)*m],u,m);
+      qrsolv(fd,v,m,d);
+      sumcj -= v[i+1];
+    }
+  }
+
+  lap[1] = sumcj*det*fd[0]/fd[(m+1)*d];
+  if ((kap_terms==3) | (d==2)) return(2);
+
+  if (use_covar) lap[2] = k2c(nij,ll,m,d-1,d)*det;
+            else lap[2] = k2x(nij,ll,m,d-1,d)*det;
+  return(3);
+}
+
+int m0x(x,d,m0,M)
+double *x, *m0, *M;
+int d;
+{ double det, *li, *ni, *lij, *nij, *ll, *u1, *u2;
+  double om, so, co, sumcj, v[TUBE_MXDIM];
+  int m, i, j;
+  
+  if ((kap_terms<=2) | (d<=1)) return(0);
+
+  m = globm;
+  li  = &ft[m]; lij = &ft[(d+1)*m];
+  ni  = &fd[m]; nij = &fd[(d+1)*m];
+  setzero(ni,m*d); 
+  setzero(nij,m*d*d);
+
+  if (use_covar) d1c(li,ni,m,d,M);
+            else d1x(li,ni,m,d,M);
+
+/* the last (d+1) columns of nij are free, use for an extra copy of ni */
+  ll = &fd[d*d*m];
+  u1 = &ll[d*m];
+  u2 = &ll[(d-1)*m];
+  if (use_covar)
+  { memcpy(u1,&ni[(d-1)*m],d*sizeof(double));
+    memcpy(u2,&ni[(d-2)*m],d*sizeof(double));
+  }
+  else
+    memcpy(ll,fd,(d+1)*m*sizeof(double));
+
+  if (use_covar) chol_dec(fd,m,d+1);
+            else qr(fd,m,d+1,NULL);
+  det = 1;
+  for (j=1; j<d-1; j++)
+    det *= fd[j*(m+1)]/fd[0];
+  om = atan2(fd[d*(m+1)],-fd[d*(m+1)-1]);
+  m0[0] = det*om;
+  if ((kap_terms==3) | (d==2)) return(1);
+
+  so = sin(om)/fd[d*(m+1)];
+  co = (1-cos(om))/fd[(d-1)*(m+1)];
+  sumcj = 0.0;
+  if (use_covar)
+  { d2c(ft,fd,li,ni,lij,nij,M,m,d-2,d);
+    chol_solve(fd,u1,m,d);
+    chol_solve(fd,u2,m,d-1);
+    for (i=0; i<d-2; i++)
+    { v[0] = 0;
+      for (j=0; j<d-2; j++)
+        v[j+1] =
+          so*(nij[(i*d+j)*m+d]-innerprod(u1,&nij[(i*d+j)*m],d))
+         +co*(nij[(i*d+j)*m+d-1]-innerprod(u2,&nij[(i*d+j)*m],d-1));
+      qrsolv(fd,v,m,d-1);
+      sumcj -= v[i+1];
+    }
+  }
+  else
+  { d2x(li,lij,nij,M,m,d-2,d);
+    rproject(u1,ll,fd,m,d);
+    rproject(u2,ll,fd,m,d-1); /* now, u1, u2 are unnormalized n1*, n2* */
+    for (i=0; i<m; i++)
+      u1[i] = so*u1[i] + co*u2[i];  /* for n1*, n2* */
+    for (i=0; i<d-2; i++)
+    { v[0] = 0;
+      for (j=0; j<d-2; j++)
+        v[j+1] = innerprod(&nij[(i*d+j)*m],u1,m);
+      qrsolv(fd,v,m,d-1);
+      sumcj -= v[i+1];
+    }
+  }
+
+  m0[1] = sumcj*det*fd[0];
+  return(2);
+}
+
+int n0x(x,d,n0,M)
+double *x, *n0, *M;
+int d;
+{ double det, *li, *ni, *a0, *a1, *a2;
+  int j, m;
+
+  if ((kap_terms <= 3) | (d <= 2)) return(0);
+
+  m = globm;
+  li  = &ft[m];
+  ni  = &fd[m];
+
+  if (use_covar) d1c(li,ni,m,d,M);
+            else d1x(li,ni,m,d,M);
+
+  det = 1;
+  if (use_covar) chol_dec(fd,m,d+1);
+            else qr(fd,m,d+1,NULL);
+  for (j=1; j<d-2; j++)
+    det *= fd[j*(m+1)]/fd[0];
+
+  a0 = &ni[(d-3)*m+d-2];
+  a1 = &ni[(d-2)*m+d-2];
+  a2 = &ni[(d-1)*m+d-2];
+
+  a0[0] = a1[1]*a2[2];
+  a0[1] =-a1[0]*a2[2];
+  a0[2] = a1[0]*a2[1]-a1[1]*a2[0];
+  a1[0] = 0;
+  a1[1] = a2[2];
+  a1[2] =-a2[1];
+  a2[0] = a2[1] = 0.0; a2[2] = 1.0;
+  rn3(a0); rn3(a1);
+  n0[0] = det*sptarea(a0,a1,a2);
+  return(1);
+}
+
+int kodf(ll,ur,mg,kap,lap)
+double *ll, *ur, *kap, *lap;
+int *mg;
+{ double x[1], *l0, *l1, t, sum;
+  int i, j, n;
+
+  sum = 0.0;
+  for (i=0; i<=mg[0]; i++)
+  { if (i&1) { l1 = fd; l0 = ft; }
+        else { l1 = ft; l0 = fd; }
+    x[0] = ll[0] + (ur[0]-ll[0])*i/mg[0];
+    n = wdf(x,l0,0);
+
+    t = sqrt(innerprod(l0,l0,n));
+    for (j=0; j<n; j++) l0[j] /= t;
+
+    if (i>0)
+    { t = 0.0;
+      for (j=0; j<n; j++) t += (l1[j]-l0[j])*(l1[j]-l0[j]);
+      sum += 2*asin(sqrt(t)/2);
+    }
+  }
+  kap[0] = sum;
+  if (kap_terms<=1) return(1);
+  kap[1] = 0.0;
+  lap[0] = 2.0;
+  return(2);
+}
+
+int tube_constants(f,d,m,ev,mg,fl,kap,wk,terms,uc)
+double *fl, *kap, *wk;
+int d, m, ev, *mg, (*f)(), terms, uc;
+{ int aw, deb=0;
+  double k0[4], l0[3], m0[2], n0[1], z[TUBE_MXDIM];
+
+  wdf = f;
+
+  aw = (wk==NULL);
+  if (aw) {
+    wk = (double *)calloc(k0_reqd(d,m,uc),sizeof(double));
+    if ( wk == NULL ) {
+      printf("Problem allocating memory for wk\n");fflush(stdout);
+    }
+  }
+  assignk0(wk,d,m);
+
+  k0[0] = k0[1] = k0[2] = k0[3] = 0.0;
+  l0[0] = l0[1] = l0[2] = 0.0;
+  m0[0] = m0[1] = 0.0;
+  n0[0] = 0.0;
+
+  use_covar = uc;
+  kap_terms = terms;
+  if ((kap_terms <=0) | (kap_terms >= 5))
+    mut_printf("Warning: terms = %2d\n",kap_terms);
+
+  switch(ev)
+  {
+    case IMONTE:
+      monte(k0x,fl,&fl[d],d,k0,mg[0]);
+      break;
+    case ISPHERIC:
+      if (d==2) integ_disc(k0x,l1x,fl,k0,l0,mg);
+      if (d==3) integ_sphere(k0x,l1x,fl,k0,l0,mg);
+      break;
+    case ISIMPSON:
+      if (use_covar) simpson4(k0x,l1x,m0x,n0x,fl,&fl[d],d,k0,l0,m0,n0,mg,z);
+                else simpson4(k0x,l1x,m0x,n0x,fl,&fl[d],d,k0,l0,m0,n0,mg,z);
+      break;
+    case IDERFREE:
+      kodf(fl,&fl[d],mg,k0,l0);
+      break;
+    default:
+      mut_printf("Unknown integration type in tube_constants().\n");
+  }
+
+  if (deb>0)
+  { mut_printf("constants:\n");
+    mut_printf("  k0: %8.5f %8.5f %8.5f %8.5f\n",k0[0],k0[1],k0[2],k0[3]);
+    mut_printf("  l0: %8.5f %8.5f %8.5f\n",l0[0],l0[1],l0[2]);
+    mut_printf("  m0: %8.5f %8.5f\n",m0[0],m0[1]);
+    mut_printf("  n0: %8.5f\n",n0[0]);
+    if (d==2) mut_printf("  check: %8.5f\n",(k0[0]+k0[2]+l0[1]+m0[0])/(2*PI));
+    if (d==3) mut_printf("  check: %8.5f\n",(l0[0]+l0[2]+m0[1]+n0[0])/(4*PI));
+  }
+
+  if (aw) free(wk);
+
+  kap[0] = k0[0];
+  if (kap_terms==1) return(1);
+  kap[1] = l0[0]/2;
+  if ((kap_terms==2) | (d==1)) return(2);
+  kap[2] = (k0[2]+l0[1]+m0[0])/(2*PI);
+  if ((kap_terms==3) | (d==2)) return(3);
+  kap[3] = (l0[2]+m0[1]+n0[0])/(4*PI);
+  return(4);
+}
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Copyright (c) 1998-2006 Catherine Loader.
+ *
+ *   Computes the critical values from constants kappa0 etc
+ *   and significance level.
+ */
+
+#include <math.h>
+#include "tube.h"
+
+#define LOGPI 1.144729885849400174143427
+
+/* area(d) = 2 pi^(d/2) / Gamma(d/2)
+ *         = surface area of unit sphere in R^d
+ */
+static double A[10] =
+  { 1, /* d=0, whatever */
+    2,
+    6.2831853071795864770, /* 2*pi */
+    12.566370614359172954, /* 4*pi */
+    19.739208802178717238, /* 2*pi^2 */
+    26.318945069571622985, /* 8/3*pi^2 */
+    31.006276680299820177, /* pi^3 */
+    33.073361792319808190, /* 16/15*pi^3 */
+    32.469697011334145747, /* 1/3*pi^4 */
+    29.686580124648361825  /* 32/105*pi^4 */
+  };
+
+double area(d)
+int d;
+{ if (d<10) return(A[d]);
+  return(2*exp(d*LOGPI/2.0-mut_lgammai(d)));
+}
+
+double tailp_uniform(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * ibeta(1-c*c,(n-d+i-1)/2.0,(d+1-i)/2.0) / area(d+1-i);
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double tailp_gaussian(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * (1-pchisq(c*c,(double) d+1-i)) / area(d+1-i);
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double tailp_tprocess(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * (1-pf(c*c/(d+1-i),(double) d+1-i, n)) / area(d+1-i);
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double taild_uniform(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * 2*c*dbeta(1-c*c,(n-d+i-1)/2.0,(d+1-i)/2.0,0) / area(d+1-i);
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double taild_gaussian(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * 2*c*dchisq(c*c,(double) d+1-i,0) / area(d+1-i);
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double taild_tprocess(c,k0,m,d,s,n)
+double c, *k0, n;
+int m, d, s;
+{ int i;
+  double p;
+  p = 0.0;
+  for (i=0; i<m; i++) if (k0[i] != 0.0)
+    p += k0[i] * 2*c*df(c*c/(d+1-i),(double) d+1-i, n,0) / ((d+1-i)*area(d+1-i));
+  return( (s==TWO_SIDED) ? 2*p : p );
+}
+
+double tailp(c,k0,m,d,s,nu, process)
+double c, *k0, nu;
+int m, d, s, process;
+{ switch(process)
+  { case UNIF:  return(tailp_uniform(c,k0,m,d,s,nu));
+    case GAUSS: return(tailp_gaussian(c,k0,m,d,s,nu));
+    case TPROC: return(tailp_tprocess(c,k0,m,d,s,nu));
+  }
+  mut_printf("taild: unknown process.\n");
+  return(0.0);
+}
+
+double taild(c,k0,m,d,s,nu, process)
+double c, *k0, nu;
+int m, d, s, process;
+{ switch(process)
+  { case UNIF:  return(taild_uniform(c,k0,m,d,s,nu));
+    case GAUSS: return(taild_gaussian(c,k0,m,d,s,nu));
+    case TPROC: return(taild_tprocess(c,k0,m,d,s,nu));
+  }
+  mut_printf("taild: unknown process.\n");
+  return(0.0);
+}
+
+double critval(alpha,k0,m,d,s,nu,process)
+double alpha, *k0, nu;
+int m, d, s, process;
+{ double c, cn, c0, c1, tp, td;
+  int j, maxit;
+  double (*tpf)(), (*tdf)();
+
+  maxit = 20;
+  if (m<0)
+  { mut_printf("critval: no terms?\n");
+    return(2.0);
+  }
+  if (m>d+1) m = d+1;
+  if ((alpha<=0) | (alpha>=1))
+  { mut_printf("critval: invalid alpha %8.5f\n",alpha);
+    return(2.0);
+  }
+  if (alpha>0.5)
+    mut_printf("critval: A mighty large tail probability alpha=%8.5f\n",alpha);
+  if (m==0) { d = 0; k0[0] = 1; m = 1; }
+
+  switch(process)
+  { case UNIF:
+      c = 0.5; c0 = 0.0; c1 = 1.0;
+      tpf = tailp_uniform;
+      tdf = taild_uniform;
+      break;
+    case GAUSS:
+      c = 2.0; c0 = 0.0; c1 = 0.0;
+      tpf = tailp_gaussian;
+      tdf = taild_gaussian;
+      break;
+    case TPROC:
+      c = 2.0; c0 = 0.0; c1 = 0.0;
+      tpf = tailp_tprocess;
+      tdf = taild_tprocess;
+      break;
+    default:
+      mut_printf("critval: unknown process.\n");
+      return(0.0);
+  }
+
+  for (j=0; j<maxit; j++)
+  { tp = tpf(c,k0,m,d,s,nu)-alpha;
+    td = tdf(c,k0,m,d,s,nu);
+    if (tp>0) c0 = c;
+    if (tp<0) c1 = c;
+    cn = c + tp/td;
+    if (cn<c0) cn = (c+c0)/2;
+    if ((c1>0.0) && (cn>c1)) cn = (c+c1)/2;
+    c = cn;
+    if (fabs(tp/alpha)<1.0e-10) return(c);
+  }
+  return(c);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/local.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,129 @@
+/*
+ *  Most of the changes formerly needed here are handled through
+ *  the Makefiles and #ifdef's.
+ */
+
+#ifndef I_LF_H
+#define I_LF_H
+
+/*
+ *   DIRSEP: '/' for unix; '\\' for DOS
+ */
+#ifdef DOS
+#define DIRSEP '\\'
+#else
+#define DIRSEP '/'
+#endif
+
+/*
+ * Some older math libraries have no lgamma() function, and gamma(arg)
+ * actually returns log(gamma(arg)). If so, you need to change
+ * LGAMMA macro below.
+ */
+#define LGAMMA(arg) lgamma(arg)
+
+/******** NOTHING BELOW HERE NEEDS CHANGING **********/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+/*RVERSION*/
+
+#ifdef SWINVERSION
+#define SVERSION
+#include "newredef.h"
+#endif
+
+#ifdef RVERSION
+
+/* #typedef int Sint is defined in R.h */
+#include <R.h>
+#include <Rdefines.h>
+#include <Rinternals.h>
+#define list_elt(ev,i) VECTOR_PTR(ev)[i]
+#define dval2(ev,i,j) NUMERIC_POINTER(list_elt(ev,i))[j]
+#define dvec2(ev,i)   NUMERIC_POINTER(list_elt(ev,i))
+#define ivec2(ev,i)   INTEGER_POINTER(list_elt(ev,i))
+#undef pmatch
+
+#else
+
+#ifdef SVERSION
+#include <S.h>
+typedef long int Sint;
+typedef s_object * SEXP;
+#define list_elt(ev,i) LIST_POINTER(ev)[i]
+#define dval2(ev,i,j) NUMERIC_POINTER(list_elt(ev,i))[j]
+#define dvec2(ev,i)   NUMERIC_POINTER(list_elt(ev,i))
+#define ivec2(ev,i)   INTEGER_POINTER(list_elt(ev,i))
+#define ALLOW_MODULES
+#else
+typedef int Sint;
+#endif
+
+#endif
+
+#ifdef MATLAB_MEX_FILE
+#include "mex.h"
+#define printf mexPrintf
+#endif
+
+#ifdef RVERSION
+#undef LGAMMA
+#define LGAMMA(arg) Rf_lgammafn(arg)
+extern double Rf_lgammafn();
+#define SVERSION
+#endif
+
+#include "mutil.h"
+#include "tube.h"
+
+#include "lfcons.h"
+
+typedef char varname[15];
+
+#ifdef CVERSION
+#include "cversion.h"
+#endif
+
+#include "lfstruc.h"
+#include "design.h"
+#include "lffuns.h"
+
+#ifdef CVERSION
+#undef printf
+#define printf lfprintf
+extern int lfprintf(const char *format, ...);
+extern int printe(const char *format, ...);
+#else
+#define printe printf
+#endif
+
+#ifdef ERROR
+#undef ERROR
+#endif
+
+#ifdef WARN
+#undef WARN
+#endif
+
+#define ERROR(args) {printe("Error: "); printe args; printe("\n"); lf_error=1;}
+#define WARN(args)  {printe("Warning: "); printe args; printe("\n"); }
+
+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#define SGN(x) (((x)>0) ? 1 : -1)
+#define SQR(x) ((x)*(x))
+#define NOSLN 0.1278433
+#define GFACT 2.5
+#define EFACT 3.0
+
+#define MAXCOLOR 20
+#define MAXWIN 5
+
+#define ISWAP(a,b) { int zz; zz = a; a = b; b = zz; }
+extern int lf_error;
+
+#endif /* I_LF_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/locf.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,329 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#ifndef I_LOCF_H
+#define I_LOCF_H
+
+#include "stdlib.h"
+#include "ctype.h"
+#include "mut.h"
+
+#ifdef WARN
+#undef WARN
+#endif
+
+#define LERR(args) {mut_printf("Error: "); mut_printf args; mut_printf("\n"); lf_error=1;}
+#define WARN(args)  {mut_printf("Warning: "); mut_printf args; mut_printf("\n"); }
+
+extern int lf_error;
+#define LOGPI 1.144729885849400174143427
+#define HUBERC 2.0
+#define NOSLN 0.1278433
+#define GFACT 2.5
+#define EFACT 3.0
+#define ISWAP(a,b) { int zz; zz = a; a = b; b = zz; }
+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#define SGN(x) (((x)>0) ? 1 : -1)
+#define SQR(x) ((x)*(x))
+
+extern int lf_error;
+
+typedef struct {
+  double *wk, *coef, *xbar, *f;
+  jacobian xtwx;
+  int lwk, haspc;
+} paramcomp;
+#define haspc(pc) ((pc)->haspc)
+
+/*
+ * MXDIM and MXDEG are maximum dimension and local polynomial
+ * degree for Locfit. Note that some parts of the code may be
+ * more restrictive.
+ */
+
+#define MXDIM 15
+#define MXDEG 7
+
+typedef struct {
+  double *x[MXDIM];
+  double *y;
+  double *w;
+  double *b;
+  double *c;
+  double sca[MXDIM];
+  double xl[2*MXDIM];
+  int n, d, ord;
+  int sty[MXDIM];
+} lfdata;
+#define resp(lfd,i) (((lfd)->y==NULL) ? 0.0 : (lfd)->y[i])
+#define base(lfd,i) (((lfd)->b==NULL) ? 0.0 : (lfd)->b[i])
+#define prwt(lfd,i) (((lfd)->w==NULL) ? 1.0 : (lfd)->w[i])
+#define cens(lfd,i) (((lfd)->c==NULL) ? 0 : (int)(lfd)->c[i])
+#define datum(lfd,i,j) ((lfd)->x[i][j])
+#define dvari(lfd,i)   ((lfd)->x[i])
+
+
+/*
+ *   The design structure used in Locfit, and associated macro definitions.
+ */
+
+typedef struct {
+  int des_init_id;
+  double *wk;
+  int *ind;
+  int lwk, lind;
+
+  double *xev;                /* fitting point, length p          */
+  double *X;                  /* design matrix, length n*p        */
+  double *w, *di, *res, *th, *wd, h;
+  double *V, *P;              /* matrices with length p*p         */
+  double *f1, *ss, *oc, *cf;  /* work vectors, length p  */
+  double llk, smwt;
+  double tr0, tr1, tr2;       /* traces for local df computation */
+  jacobian xtwx;     /* to store X'WVX and decomposition */
+  int cfn[1+MXDIM], ncoef;
+  int *fix;          /* integer vector for fixed coefficients. */
+  int (*itype)();    /* density integration function     */
+  int n, p;
+} design;
+
+#define cfn(des,i) (des->cfn[i])
+#define d_x(des) ((des)->X)
+#define d_xi(des,i) (&(des)->X[i*((des)->p)])
+#define d_xij(des,i,j) ((des)->X[i*((des)->p)+j])
+#define is_fixed(des,i) ((des)->fix[i]==1)
+#define wght(des,i) ((des)->w[i])
+#define dist(des,i) ((des)->di[i])
+#define fitv(des,i) ((des)->th[i])
+#define DES_INIT_ID 34988372
+
+extern int des_reqd(), des_reqi();
+
+typedef struct {
+  int deflink, canlink, quasi, robust;
+  int (*vallink)(), (*family)(), (*initial)(), (*like)(), (*pcheck)();
+} family;
+#define isquasi(fam) ((fam)->quasi)
+#define isrobust(fam) ((fam)->robust)
+extern int inllmix; /* flag needed to ensure correct behavior in llmix. */
+
+typedef struct {
+  double nn, fixh, adpen;
+  int ker, kt;
+  int deg, deg0, p;
+  int acri;
+  int fam, lin;
+  family fami;
+  int ubas;
+  double (*vb)();
+  void (*vbasis)();
+} smpar;
+#define nn(sp)   ((sp)->nn)
+#define fixh(sp) ((sp)->fixh)
+#define pen(sp)  ((sp)->adpen)
+#define ker(sp)  ((sp)->ker)
+#define kt(sp)   ((sp)->kt)
+#define deg(sp)  ((sp)->deg)
+#define deg0(sp) ((sp)->deg0)
+#define npar(sp) ((sp)->p)
+#define acri(sp) ((sp)->acri)
+#define ubas(sp) ((sp)->ubas)
+#define fam(sp)  ((sp)->fam)
+#define fami(sp)  (&(sp)->fami)
+#define link(sp) ((sp)->lin)
+
+typedef struct {
+  int deriv[MXDEG+2];
+  int nd;
+} deriv;
+
+/*
+ *  Criteria for adaptive local fitting  mi[MACRI]
+ *  1: localized CP;  2: ICI (katkovnik);  3: curvature model index
+ *  4: Increase bandwidth until locfit returns LF_OK
+ */
+#define ANONE 0
+#define ACP  1
+#define AKAT 2
+#define AMDI 3
+#define AOK  4
+
+/*
+ * weight functions mi[MKER].
+ * see Table 3.1 or the function W() in weights.c for definitions.
+ */
+#define WRECT 1
+#define WEPAN 2
+#define WBISQ 3
+#define WTCUB 4
+#define WTRWT 5
+#define WGAUS 6
+#define WTRIA 7
+#define WQUQU 8
+#define W6CUB 9
+#define WMINM 10
+#define WEXPL 11
+#define WMACL 12
+#define WPARM 13
+
+/*
+ * type of multivariate weight function mi[MKT]
+ * KSPH (spherical)  KPROD (product)
+ * others shouldn't be used at present.
+ */
+#define KSPH   1
+#define KPROD  2
+#define KCE    3
+#define KLM    4
+#define KZEON  5
+
+/*
+ * Local likelihood family mi[MTG]
+ * for quasi-likelihood, add 64.
+ */
+#define TNUL 0
+#define TDEN 1
+#define TRAT 2
+#define THAZ 3
+#define TGAUS 4
+#define TLOGT 5
+#define TPOIS 6
+#define TGAMM 7
+#define TGEOM 8
+#define TCIRC 9
+#define TROBT 10
+#define TRBIN 11
+#define TWEIB 12
+#define TCAUC 13
+#define TPROB 14
+#define TQUANT 15
+
+/*
+ * Link functions mi[MLINK].
+ * Mostly as in table 4.1 of the book.
+ * LDEFAU and LCANON are used to select default and canonical
+ * links respectively. LINIT shouldn't be selected by user...
+ */
+#define LINIT  0
+#define LDEFAU 1
+#define LCANON 2
+#define LIDENT 3
+#define LLOG   4
+#define LLOGIT 5
+#define LINVER 6
+#define LSQRT  7
+#define LASIN  8
+
+/*
+ * components of vector returned by the links() function
+ * in family.c. ZLIK the likelihood; ZMEAN = estimated mean;
+ * ZDLL = derivative of log-likelihood; ZDDLL = - second derivative
+ */
+#define LLEN  4
+#define ZLIK  0
+#define ZMEAN 1
+#define ZDLL  2
+#define ZDDLL 3
+
+/*
+ * return status for the locfit() function
+ */
+#define LF_OK   0
+#define LF_DONE 1   /* done - forced break from iterations */
+#define LF_OOB  2   /* out of bounds, or large unstable parameter */
+#define LF_PF   3   /* perfect fit; interpolation; deviance=0 */
+#define LF_NCON 4   /* not converged */
+#define LF_NSLN 5   /* no solution - eg separation in binomial. */
+#define LF_NOPT 6   /* no or insufficient points with non-zero wt */
+#define LF_INFA 7   /* initial failure e.g. log(0) */
+#define LF_DEMP 10  /* density -- empty integration region */
+#define LF_XOOR 11  /* density -- fit point outside xlim region */
+#define LF_DNOP 12  /* density version of 6 */
+#define LF_BADP 81  /* bad parameters e.g. neg prob for binomial */
+#define LF_LNK  82  /* invalid link */
+#define LF_FAM  83  /* invalid family */
+#define LF_ERR  99  /* error */
+
+#define STANGL 4
+#define STLEFT 5
+#define STRIGH 6
+#define STCPAR 7
+
+/*
+ * Integration type mi[MIT] for integration in
+ * density estimation.
+ */
+#define INVLD 0
+#define IDEFA 1
+#define IMULT 2
+#define IPROD 3
+#define IMLIN 4
+#define IHAZD 5
+#define ISPHR 6
+#define IMONT 7
+
+/* density.c */
+extern int densinit(), likeden(), deitype();
+extern int fact[];
+extern void prodintresp(), prresp();
+extern int de_mint, de_itype, de_renorm;
+
+/* dens_haz.c */
+extern void haz_init();
+extern int hazint();
+
+/* dens_odi.c */
+extern int onedint();
+extern void recurint();
+
+/* famquant.c */
+extern void lfquantile();
+
+/* family.c */
+extern int lffamily(), lflink();
+extern int links(), stdlinks(), defaultlink(), validlinks();
+extern double b2(), b3(), b4(), lf_link(), invlink();
+extern void setfamily();
+
+/* lf_adap.c */
+extern int alocfit(), lfacri();
+
+/* lf_fitfun.c */
+extern void fitfun(), makecfn(), designmatrix();
+extern int calcp(), coefnumber();
+
+/* lf_nbhd.c */
+extern double kordstat(), rho();
+extern void nbhd();
+
+/* lf_robust.c */
+extern double median();
+extern void lf_robust();
+
+/* lfstr.c */
+extern int pmatch();
+
+/* lf_vari.c */
+extern void lf_vcov(), comp_vari(), local_df();
+
+/* lf_wdiag.c */
+extern int wdiag(), wdiagp();
+
+/* locfit.c */
+extern int locfit(), des_reqd(), des_reqi(), likereg();
+extern int reginit();
+extern void lfdata_init(), smpar_init(), deriv_init(), des_init(), lfiter();
+extern int lf_maxit, lf_debug;
+extern void lf_status_msg();
+
+/* minmax.c */
+extern double ipower(), minmax();
+
+/* weight.c */
+extern int lfkernel(), lfketype();
+extern double W(), weight(), weightd(), Wd(), Wdd(), wint();
+extern double Wconv(), Wconv1(), Wconv4(), Wconv5(), Wconv6(), Wikk();
+extern int iscompact(), wtaylor();
+
+#endif /* define I_LOCF_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/mexlf.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,110 @@
+/*=================================================================
+ * mexlocfit.c 
+ *
+ * starting a locfit interface.
+ *
+/* $Revision: 1.5 $ */
+#include "mex.h"
+#include "lfev.h"
+
+design des;
+lfit lf;
+int lf_error;
+
+extern void lfmxdata(), lfmxsp(), lfmxevs();
+
+void
+mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
+{
+    int  d, i, nvc[5], nvm, vc, nv, nc, mvc, lw[7];
+    double *y;
+    mxArray *iwkc, *temparray;
+    const char * fpcnames[] = {"evaluation_points","fitted_values","evaluation_vectors","fit_limits","family_link","kappa"};
+    const char * evsnames[] = {"cell","splitvar","lo","hi"};
+
+    mut_redirect(mexPrintf);
+    if (nrhs != 3) mexErrMsgTxt("mexlf requires 3 inputs.");
+    lf_error = 0;
+
+    lfit_alloc(&lf);
+    lfit_init(&lf);
+
+    lfmxdata(&lf.lfd,prhs[0]);
+    d = lf.lfd.d;
+
+    lfmxsp(&lf.sp,prhs[2],d);
+    lfmxevs(&lf,prhs[1]);
+
+    guessnv(&lf.evs,&lf.sp,&lf.mdl,lf.lfd.n,d,lw,nvc);
+    nvm = lf.fp.nvm = nvc[0];
+    vc = nvc[2];
+    if (ev(&lf.evs) != EPRES) lf.fp.xev = mxCalloc(nvm*d,sizeof(double));
+    lf.fp.lev = nvm*d;
+    lf.fp.wk = lf.fp.coef = mxCalloc(lw[1],sizeof(double));
+    lf.fp.lwk = lw[1];
+    lf.evs.iwk = mxCalloc(lw[2],sizeof(int));
+    lf.evs.liw = lw[2];
+    plhs[1] = mxCreateDoubleMatrix(1,lw[3],mxREAL);
+    lf.pc.wk = mxGetPr(plhs[1]);
+    lf.pc.lwk = lw[3];
+    lf.fp.kap = mxCalloc(lw[5],sizeof(double));
+/* should also allocate design here */
+    
+    if (!lf_error) startmodule(&lf,&des,NULL,NULL);
+
+/* now, store the results: 
+   plhs[0] stores informtion about fit points and evaluation structure.
+    it is now a matlab structure, not a cell   
+   fit_points.evaluation_points - matrix of evaluation points.
+   fit_points.fitted_values - matrix fitted values etc.
+   fit_points.evaluation_vectors - structure of 'integer' vectors {cell,splitvar,lo,hi}
+   fit_points.fit_limits - fit limit (matrix with 2 cols).
+   fit_points.family_link - [familt link] numeric vector.
+   fit_points.kappa - kap vector.
+*/
+    plhs[0] = mxCreateStructMatrix(1,1,6,fpcnames);
+    if ( plhs[0] == NULL ) {
+       printf("Problem with CreateStructMatrix for plhs[0]\n");fflush(stdout);
+    }
+
+    mxSetField(plhs[0],0,"evaluation_points",mxCreateDoubleMatrix(d,lf.fp.nv,mxREAL));
+    memcpy(mxGetPr(mxGetField(plhs[0],0,"evaluation_points")), lf.fp.xev, d*lf.fp.nv*sizeof(double));
+
+    mxSetField(plhs[0],0,"fitted_values",mxCreateDoubleMatrix(lf.fp.nv,lf.mdl.keepv,mxREAL));
+    for (i=0; i<lf.mdl.keepv; i++)
+      memcpy(&mxGetPr(mxGetField(plhs[0],0,"fitted_values"))[i*lf.fp.nv], &lf.fp.coef[i*nvm], lf.fp.nv*sizeof(double));
+    /* another bit to save here? -- split values, kdtree */
+   
+    temparray = mxCreateStructMatrix(1,1,4,evsnames);
+    if ( temparray == NULL ) {
+      printf("Problem with CreateStructMatrix for temparray\n");fflush(stdout);
+    }
+    mxSetField(plhs[0],0,"evaluation_vectors",temparray);
+    iwkc = mxGetField(plhs[0],0,"evaluation_vectors");
+    nv = lf.fp.nv;
+    nc = lf.evs.nce;
+    mvc = (nv>nc) ? nv : nc;
+    mxSetField(iwkc,0,"cell",mxCreateDoubleMatrix(vc,nc,mxREAL));  /* ce */
+    mxSetField(iwkc,0,"splitvar",mxCreateDoubleMatrix(1,mvc,mxREAL));  /* s  */
+    mxSetField(iwkc,0,"lo",mxCreateDoubleMatrix(1,mvc,mxREAL));  /* lo */
+    mxSetField(iwkc,0,"hi",mxCreateDoubleMatrix(1,mvc,mxREAL));  /* hi */
+    y = mxGetPr(mxGetField(iwkc,0,"cell"));
+    for (i=0; i<vc*nc; i++) y[i] = lf.evs.ce[i];
+    y = mxGetPr(mxGetField(iwkc,0,"splitvar"));
+    for (i=0; i<mvc; i++) y[i] = lf.evs.s[i];
+    y = mxGetPr(mxGetField(iwkc,0,"lo"));
+    for (i=0; i<mvc; i++) y[i] = lf.evs.lo[i];
+    y = mxGetPr(mxGetField(iwkc,0,"hi"));
+    for (i=0; i<mvc; i++) y[i] = lf.evs.hi[i];
+
+    mxSetField(plhs[0],0,"fit_limits",mxCreateDoubleMatrix(d,2,mxREAL));
+    memcpy(mxGetPr(mxGetField(plhs[0],0,"fit_limits")), lf.evs.fl, 2*d*sizeof(double));
+    
+    mxSetField(plhs[0],0,"family_link",mxCreateDoubleMatrix(1,2,mxREAL));
+    y = mxGetPr(mxGetField(plhs[0],0,"family_link"));
+    y[0] = fam(&lf.sp);
+    y[1] = link(&lf.sp);
+
+    mxSetField(plhs[0],0,"kappa",mxCreateDoubleMatrix(1,lf.mdl.keepc,mxREAL));
+    memcpy(mxGetPr(mxGetField(plhs[0],0,"kappa")),lf.fp.kap,lf.mdl.keepc*sizeof(double));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/mexpp.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,128 @@
+/*=================================================================
+ * mexpp.c 
+ *
+ * starting a locfit interface.
+ *
+ * $Revision: 1.5 $ */
+#include "mex.h"
+#include "lfev.h"
+
+extern void lfmxdata(), lfmxevs();
+
+design des;
+lfit lf;
+int lf_error;
+
+void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
+{ int i, vc, nc, mvc, mg[MXDIM], where, m, wh, dir, nkap;
+  const mxArray *dat, *fpc, *sp, *pc, *evs, *iwkc;
+  double *y, *x, *fy, *fx[MXDIM], *kap, cv, *fh, *se, *lo, *hi, lev;
+  char band[16], wher[16], what[16], rest[16];
+
+  if (nrhs<6) mexErrMsgTxt("ppmex requires 5 inputs.");
+  lf_error = 0;
+
+  mut_redirect(mexPrintf);
+  dat= mxGetField(prhs[1],0,"data");
+  evs= mxGetField(prhs[1],0,"evaluation_structure");
+  sp = mxGetField(prhs[1],0,"smoothing_parameters");
+  fpc= mxGetField(prhs[1],0,"fit_points");
+  pc = mxGetField(prhs[1],0,"parametric_component");
+  mxGetString(prhs[2],band,16);
+  mxGetString(prhs[3],what,16);
+  mxGetString(prhs[4],rest,16);
+  dir = mxGetPr(prhs[5])[0];
+  kap = mxGetPr(prhs[6]);
+  nkap = mxGetN(prhs[6]);
+  lev = mxGetPr(prhs[7])[0];
+  lfmxdata(&lf.lfd,dat);
+  lfmxsp(&lf.sp,sp,lf.lfd.d);
+  lfmxevs(&lf,evs); /* this has initialized module */
+
+  if (rest[0]=='n')
+    wh = ppwhat(what);
+  else
+    wh = 64+restyp(rest);
+   
+    lf.fp.xev = mxGetPr(mxGetField(fpc,0,"evaluation_points"));
+    lf.lfd.d = lf.fp.d = mxGetM(mxGetField(fpc,0,"evaluation_points"));
+    lf.fp.nv = lf.fp.nvm = mxGetN(mxGetField(fpc,0,"evaluation_points"));
+    lf.fp.wk = mxGetPr(mxGetField(fpc,0,"fitted_values"));
+    lf.fp.h = NULL;
+    if (lf.mdl.alloc!=NULL) lf.mdl.alloc(&lf);
+        
+    iwkc = mxGetField(fpc,0,"evaluation_vectors");
+    vc = mxGetM(mxGetField(iwkc,0,"cell"));
+    nc = mxGetN(mxGetField(iwkc,0,"cell"));
+    mvc = mxGetN(mxGetField(iwkc,0,"splitvar"));
+    lf.evs.iwk = mxCalloc(vc*nc+3*mvc,sizeof(int));
+    lf.evs.nce = lf.evs.ncm = nc;
+    y = mxGetPr(mxGetField(iwkc,0,"cell"));
+    lf.evs.ce = lf.evs.iwk;
+    for (i=0; i<vc*nc; i++) lf.evs.ce[i] = y[i];
+    y = mxGetPr(mxGetField(iwkc,0,"splitvar"));
+    lf.evs.s = &lf.evs.iwk[vc*nc];
+    for (i=0; i<mvc; i++) lf.evs.s[i] = y[i];
+    y = mxGetPr(mxGetField(iwkc,0,"lo"));
+    lf.evs.lo = &lf.evs.s[mvc];
+    for (i=0; i<mvc; i++) lf.evs.lo[i] = y[i];
+    y = mxGetPr(mxGetField(iwkc,0,"hi"));
+    lf.evs.hi = &lf.evs.lo[mvc];
+    for (i=0; i<mvc; i++) lf.evs.hi[i] = y[i];
+    lf.fp.hasd = deg(&lf.sp)>0;
+
+    lf.fp.kap = mxGetPr(mxGetField(fpc,0,"kappa"));
+
+    lf.pc.wk = mxGetPr(pc);
+    lf.pc.lwk = mxGetN(pc);
+    pcchk(&lf.pc,lf.fp.d,npar(&lf.sp),1);
+    haspc(&lf.pc) = !noparcomp(&lf.sp);
+    lf.pc.xtwx.st = JAC_EIGD;
+    
+  where = 0;
+  if (mxIsCell(prhs[0])) /* interpret as grid margins */
+  { m = 1;
+    for (i=0; i<lf.fp.d; i++)
+    { fx[i] = mxGetPr(mxGetCell(prhs[0],i));
+      mg[i] = mxGetM(mxGetCell(prhs[0],i));
+      m *= mg[i];
+    }
+    where = 2;
+  }
+  if (mxIsChar(prhs[0]))
+  { mxGetString(prhs[0],wher,16);
+    where = 3; /* data */
+    m = mg[0] = lf.lfd.n;
+    if (wher[0] == 'f') /* or fit points */
+    { where = 4;
+      m = mg[0] = lf.fp.nv;
+    }
+  }
+  if (where==0)                   /* interpret as numeric vector */
+  { x = mxGetPr(prhs[0]);
+    m = mg[0] = mxGetM(prhs[0]); /* should check mxGetN == d */
+    for (i=0; i<lf.lfd.d; i++)
+      fx[i] = &x[i*m];
+    where=1;
+  }
+
+  plhs[0] = mxCreateDoubleMatrix(m,1,mxREAL); /* fitted values */
+  plhs[1] = mxCreateDoubleMatrix(m,1,mxREAL); /* std errors */
+  fh = mxGetPr(plhs[0]);
+  se = mxGetPr(plhs[1]);
+
+  preplot(&lf,fx,fh,se,band[0],mg,where,wh,dir);
+
+  cv = 0.0;
+  if (band[0] != 'n')
+  { cv = critval(1-lev,kap,nkap,lf.lfd.d,TWO_SIDED,0.0,GAUSS);
+    plhs[2] = mxCreateDoubleMatrix(m,2,mxREAL);
+    lo = mxGetPr(plhs[2]);
+    hi = &lo[m];
+    for (i=0; i<m; i++)
+    { lo[i] = fh[i]-cv*se[i]; 
+      hi[i] = fh[i]+cv*se[i]; 
+    }
+  }
+  else plhs[2] = mxCreateDoubleScalar(0.0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/mlfut.c	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,134 @@
+#include "mex.h"
+#include "lfev.h"
+
+void lfmxdata(lfdata *lfd, const mxArray *data)
+{ const mxArray *tmp;
+  double *x, *sc, *xl;
+  int n, d, i, k;
+  char c, ststr[16];
+  
+  n = lfd->n = mxGetM(mxGetField(data,0,"x"));
+  d = lfd->d = mxGetN(mxGetField(data,0,"x"));
+  x = mxGetPr(mxGetField(data,0,"x"));
+  for (i=0; i<d; i++) lfd->x[i] = &x[i*n];
+  
+  lfd->y = mxGetPr(mxGetField(data,0,"y"));
+  
+  tmp = mxGetField(data,0,"weights");
+  k = mxGetM(tmp);
+  lfd->w = (k>1) ? mxGetPr(tmp) : NULL;
+
+  tmp = mxGetField(data,0,"censor");
+  k = mxGetM(tmp); 
+  lfd->c = (k>1) ? mxGetPr(tmp) : NULL;
+
+  tmp = mxGetField(data,0,"baseline");
+  k = mxGetM(tmp);
+  lfd->b = (k>1) ? mxGetPr(tmp) : NULL;
+
+  mxGetString(mxGetField(data,0,"style"),ststr,16);
+  k = strlen(ststr);
+  for (i=0; i<d; i++)
+  { c = (k==1) ? ststr[0] : ststr[i];
+    switch(c)
+    { case 'a': lfd->sty[i] = STANGL; break;
+      case 'l': lfd->sty[i] = STLEFT; break;
+      case 'r': lfd->sty[i] = STRIGH; break;
+      case 'c': lfd->sty[i] = STCPAR; break;
+      default:  lfd->sty[i] = 1; break;
+    }
+  }
+
+  sc = mxGetPr(mxGetField(data,0,"scales"));
+  k = mxGetN(mxGetField(data,0,"scales"));
+  for (i=0; i<d; i++) lfd->sca[i] = (k==1) ? sc[0] : sc[i];
+
+  xl = mxGetPr(mxGetField(data,0,"xlim"));
+  for (i=0; i<d; i++)
+  { lfd->xl[i] = xl[2*i];
+    lfd->xl[i+d] = xl[2*i+1];
+  }
+}
+
+void lfmxsp(smpar *sp, mxArray *mcell, int d)
+{ double *alpha;
+  char str[16];
+
+  alpha = mxGetPr(mxGetField(mcell,0,"alpha"));
+  nn(sp)  = alpha[0];
+  fixh(sp)= alpha[1];
+  pen(sp) = alpha[2];
+
+  mxGetString(mxGetField(mcell,0,"adaptive_criterion"),str,16);
+  acri(sp) = lfacri(str);
+
+  deg(sp) = mxGetPr(mxGetField(mcell,0,"degree"))[0];
+  deg0(sp) = -1;
+
+  mxGetString(mxGetField(mcell,0,"family"),str,16);
+  fam(sp) = lffamily(str);
+  mxGetString(mxGetField(mcell,0,"link"),str,16);
+  link(sp) = lflink(str);
+  setfamily(sp);
+
+  mxGetString(mxGetField(mcell,0,"kernel"),str,16);
+  ker(sp) = lfkernel(str);
+  mxGetString(mxGetField(mcell,0,"kernel_type"),str,16);
+  kt(sp) = lfketype(str);
+  npar(sp) = calcp(sp,d);
+
+  de_renorm = (int)(mxGetPr(mxGetField(mcell,0,"deren"))[0]);
+  mxGetString(mxGetField(mcell,0,"deit"),str,16);
+  de_itype = deitype(str);
+  de_mint = (int)(mxGetPr(mxGetField(mcell,0,"demint"))[0]);
+  lf_debug = (int)(mxGetPr(mxGetField(mcell,0,"debug"))[0]);
+}
+
+void lfmxevs(lfit *lf, mxArray *mcell)
+{ int d, i, j;
+  double *ll, *ur, *mg, *drv;
+  char evstr[16], mod[16], mdir[256];
+  evstruc *evs;
+  fitpt *fp;
+  deriv *dv;
+
+  evs = &lf->evs;
+  fp  = &lf->fp;
+  dv  = &lf->dv;
+  d   = lf->lfd.d;
+
+  if (mxIsChar(mxGetField(mcell,0,"type")))
+  { mxGetString(mxGetField(mcell,0,"type"),evstr,16);
+    ev(evs) = lfevstr(evstr);
+  }
+  else
+  { ev(evs) = EPRES;
+    evs->mg[0] = mxGetN(mxGetField(mcell,0,"type"));
+    fp->xev = mxGetPr(mxGetField(mcell,0,"type"));
+  }
+
+
+  mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"name"),mod,16);
+  mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"directory"),mdir,256);
+  MODPARAMS(lf) = mxGetPr(mxGetField(mxGetField(mcell,0,"module"),0,"parameters"));
+  MODNPARAMS(lf) = mxGetN(mxGetField(mxGetField(mcell,0,"module"),0,"parameters"));
+  initmodule(&lf->mdl,mod,mdir,lf);
+
+
+  ll = mxGetPr(mxGetField(mcell,0,"lower_left"));
+  ur = mxGetPr(mxGetField(mcell,0,"upper_right"));
+  mg = mxGetPr(mxGetField(mcell,0,"grid"));
+  j =  mxGetN(mxGetField(mcell,0,"grid"));
+  cut(evs) = mxGetPr(mxGetField(mcell,0,"cut"))[0];
+  for (i=0; i<d; i++)
+  { evs->fl[i] = ll[i];
+    evs->fl[i+d] = ur[i];
+    if (ev(evs) != EPRES) evs->mg[i] = (j==1) ? mg[0] : mg[i];
+  }
+  mk(evs) = mxGetPr(mxGetField(mcell,0,"maxk"))[0];
+
+  drv = mxGetPr(mxGetField(mcell,0,"derivative")); 
+  j = mxGetN(mxGetField(mcell,0,"derivative")); 
+  for (i=0; i<j; i++) dv->deriv[i] = drv[i]-1;
+  dv->nd = (drv[0]>0) ? j : 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/mut.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,133 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Headers for math utility functions.
+ */
+
+#ifndef I_MUT_H
+#define I_MUT_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+typedef int (*prf)();
+extern prf mut_printf;
+extern void mut_redirect();
+
+typedef struct {
+  double *Z;   /* jacobian matrix, length p*p          */
+  double *Q;   /* eigenvalue matrix, length p*p        */
+  double *wk;  /* work vector in eig_solve, length p   */
+  double *dg;  /* diag vector in eigd, length p        */
+  int p;       /* dimension */
+  int st;      /* status    */
+  int sm;      /* requested decomposition */
+} jacobian;
+
+/* m_jacob.c */
+extern int jac_reqd();
+extern double *jac_alloc();
+extern void jacob_dec(),   chol_dec(),   eig_dec();
+extern int  jacob_solve(), chol_solve(), eig_solve();
+extern int  jacob_hsolve(),chol_hsolve(),eig_hsolve();
+extern int  jacob_isolve(),chol_isolve(),eig_isolve();
+extern double jacob_qf(),  chol_qf(),    eig_qf();
+extern int  jacob_mult(),  chol_mult();
+
+/* m_max.c */
+extern double max_grid(), max_golden(), max_quad(), max_nr();
+
+/* maxbv.c */
+extern double maxbvgrid(), maxbvstep(), maxquadstep(), maxbv(), maxbvq();
+
+/* quadmin.c */
+extern void quadmin(), project(), resproj(), conquadmin();
+
+/* m_qr.c */
+extern void qr(), qrinvx(), qrtinvx(), qrsolv();
+
+/* m_svd.c */
+extern void svd(), hsvdsolve();
+extern int svdsolve();
+
+/* m_solve.c */
+extern double solve_bisect(), solve_secant(), solve_nr(), solve_fp();
+
+/* m_vector.c */
+extern void setzero(), unitvec(), addouter();
+extern void matrixmultiply(), multmatscal(), transpose();
+extern double innerprod(), m_trace(), vecsum();
+
+#define BDF_NONE  0
+#define BDF_EXPLEFT  1
+#define BDF_EXPRIGHT 2
+
+/* return codes for functions optimized by max_nr */
+#define NR_OK 0
+#define NR_INVALID 1
+#define NR_BREAK   2
+#define NR_REDUCE  3
+#define NR_NCON  10
+#define NR_NDIV  11
+
+
+/* jacobian status definitions */
+#define JAC_RAW 0
+#define JAC_CHOL 1
+#define JAC_EIG  2
+#define JAC_EIGD 3
+
+/*  Numerical Integration Stuff
+ */
+#define MXRESULT 5
+#define MXIDIM  10  /* max. dimension */
+extern void simpsonm(), simpson4(), integ_disc(), integ_circ();
+extern void integ_sphere(), monte(), rn3();
+extern double simpson(), sptarea();
+
+/*  Density, distribution stuff
+ */
+
+#ifndef PI
+#define PI          3.141592653589793238462643
+#endif
+#define S2PI        2.506628274631000502415765       /* sqrt(2*pi) */
+#define PIx2        6.283185307179586476925286       /* 2*pi */
+#define SQRPI       1.772453850905516027298          /* sqrt(pi)   */
+#define HF_LG_PIx2  0.918938533204672741780329736406 /* 0.5*log(2*pi) */
+#define SQRT2       1.4142135623730950488            /* sqrt(2.0) */
+#define gold_rat    0.6180339887498948482045870      /* (sqrt(5.0)-1)/2 */
+
+#define LOG_ZERO -1e100
+#define D_0 ((give_log) ? LOG_ZERO : 0.0)
+#define D_1 ((give_log) ? 0.0 : 1.0)
+#define DEXP(x)   ((give_log) ? (x) : exp(x))
+#define FEXP(f,x) ((give_log) ? -0.5*log(f)+(x) : exp(x)/sqrt(f))
+
+#define INVALID_PARAMS 0.0
+
+extern double stirlerr(), bd0();
+extern double dbinom_raw(), dpois_raw();
+extern double dbinom(), dpois(), dnbinom(), dbeta(), dgamma(), dt(), df(), dhyper();
+extern double dchisq();
+
+extern double igamma(), ibeta();
+extern double pf(), pchisq();
+#define pchisq(x,df) igamma((x)/2.0,(df)/2.0)
+
+/* order.c */
+extern void mut_order();
+
+/* erf.c */
+extern double mut_erf(), mut_erfc(), mut_pnorm();
+
+/* lgamma.c */
+extern double mut_lgamma(), mut_lgammai();
+
+/* math.c */
+extern double mut_exp(), mut_daws(), ptail(), logit(), expit();
+extern int factorial();
+#endif  /* define I_MUT_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/mutil.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,123 @@
+/*
+ *   Headers for math utility functions.
+ */
+
+#ifndef I_MUT_H
+#define I_MUT_H
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* use the following #define's for local versions. */
+#ifdef DOS
+#define erf mut_erf
+#define erfc mut_erfc
+#define lgamma mut_lgamma
+#endif
+#define daws(x) mut_daws(x)
+
+typedef struct {
+  double *Z;   /* jacobian matrix, length p*p          */
+  double *Q;   /* eigenvalue matrix, length p*p        */
+  double *wk;  /* work vector in eig_solve, length p   */
+  double *dg;  /* diag vector in eigd, length p        */
+  int p;       /* dimension */
+  int st;      /* status    */
+  int sm;      /* requested decomposition */
+} jacobian;
+
+/* m_jacob.c */
+extern int jac_reqd();
+extern double *jac_alloc();
+extern void jacob_dec(),   chol_dec(),   eig_dec();
+extern int  jacob_solve(), chol_solve(), eig_solve();
+extern int  jacob_hsolve(),chol_hsolve(),eig_hsolve();
+extern int  jacob_isolve(),chol_isolve(),eig_isolve();
+extern double jacob_qf(),  chol_qf(),    eig_qf();
+
+/* m_max.c */
+extern double max_grid(), max_golden(), max_quad(), max_nr();
+
+/* maxbv.c */
+extern double maxbvgrid(), maxbvstep(), maxquadstep(), maxbv(), maxbvq();
+
+/* quadmin.c */
+extern void quadmin(), project(), resproj(), conquadmin();
+
+/* m_qr.c */
+extern void qr(), qrinvx(), qrtinvx(), qrsolv();
+
+/* m_svd.c */
+extern void svd(), hsvdsolve();
+extern int svdsolve();
+
+/* m_solve.c */
+extern double solve_secant(), solve_nr(), solve_fp();
+
+/* m_vector.c */
+extern void setzero(), unitvec(), addouter();
+extern void matrixmultiply(), multmatscal(), transpose();
+extern double innerprod(), m_trace();
+
+/* math.c */
+extern double mut_gamma(), mut_erf(), mut_erfc(), mut_daws(), mut_exp();
+extern double ptail(), logit(), expit();
+extern int factorial();
+
+#define BDF_NONE  0
+#define BDF_EXPLEFT  1
+#define BDF_EXPRIGHT 2
+
+/* return codes for functions optimized by max_nr */
+#define NR_OK 0
+#define NR_INVALID 1
+#define NR_BREAK   2
+#define NR_REDUCE  3
+#define NR_NCON  10
+#define NR_NDIV  11
+
+
+/* jacobian status definitions */
+#define JAC_RAW 0
+#define JAC_CHOL 1
+#define JAC_EIG  2
+#define JAC_EIGD 3
+
+/*  Numerical Integration Stuff
+ */
+#define MXRESULT 5
+#define MXIDIM  10  /* max. dimension */
+extern void simpsonm(), simpson4(), integ_disc(), integ_circ();
+extern void integ_sphere(), monte(), rn3();
+extern double simpson(), sptarea();
+
+/*  Density, distribution stuff
+ */
+
+#ifndef PI
+#define PI  3.141592653589793238462643
+#endif
+#define PIx2 6.283185307179586476925286        /* 2*pi */
+#define HF_LG_PIx2  0.918938533204672741780329736406    /* 0.5*log(2*pi) */
+#define SQRT2 1.4142135623730950488
+
+#define LOG_ZERO -1e100
+#define D_0 ((give_log) ? LOG_ZERO : 0.0)
+#define D_1 ((give_log) ? 0.0 : 1.0)
+#define DEXP(x)   ((give_log) ? (x) : exp(x))
+#define FEXP(f,x) ((give_log) ? -0.5*log(f)+(x) : exp(x)/sqrt(f))
+
+#define INVALID_PARAMS 0.0
+
+extern double stirlerr(), bd0();
+extern double dbinom_raw(), dpois_raw();
+extern double dbinom(), dpois(), dnbinom(), dbeta(), dgamma(), dt(), df(), dhyper();
+extern double dchisq();
+
+extern double igamma(), ibeta();
+extern double pf(), pchisq(), mut_pnorm();
+#define pchisq(x,df) igamma((x)/2.0,(df)/2.0)
+
+#endif  /* define I_MUT_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/tube.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,53 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+/*
+ *   Copyright (c) 1998-2006 Catherine Loader
+ *   See README file for details.
+ *
+ *
+ *   Headers for the tube library.
+ */
+
+#ifndef I_TUBE_H
+#define I_TUBE_H
+
+/*
+ * public functions needed by routines calling the tube library.
+ */
+extern double critval();
+extern double tailp(), taild();
+extern int tube_constants();
+extern int k0_reqd();
+
+/*
+ * stuff used internally.
+ */
+
+#include "stdlib.h"
+#include "mut.h"
+
+#define TUBE_MXDIM 10
+
+/*
+ * definitions for integration methods.
+ * these match locfit evaluation structures where applicable.
+ */
+
+#define ISIMPSON  4    /* grid */
+#define ISPHERIC 11    /* circle or sphere */
+#define IDERFREE 25    /* derivative free */
+#define IMONTE   30    /* monte carlo */
+
+#ifndef PI
+#define PI    3.141592653589793238462643
+
+#endif
+
+#define ONE_SIDED 1
+#define TWO_SIDED 2
+
+#define UNIF    400
+#define GAUSS   401
+#define TPROC   402
+#endif  /* define I_TUBE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/aic.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,14 @@
+function g=aic(varargin)
+
+pen = 2.0;
+
+fit = locfit(varargin{:});
+rs = rsum(fit);
+
+df0 = rs(1);
+df1 = rs(2);
+llk = rs(3);
+ai = -2*llk + pen * df0;
+g = [llk df0 df1 ai];
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/aicplot.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,25 @@
+function g=aicplot(alpha,varargin)
+%
+% Computes and plots the -2*AIC
+% for local fits with different smoothing parameters.
+%
+% The first argument to aicplot(), alpha, should be a matrix with one
+% or two columns (first column = nearest neighbor component, second
+% column = constant component). Each row of this matrix is, in turn,
+% passed as the 'alpha' argument to aic() (and locfit()). The results
+% are stored in a matrix, and aic score ploted against the degrees of
+% freedom.
+
+k = size(alpha,1);
+z = zeros(k,4);
+
+for i=1:k
+  z(i,:) = aic(varargin{:},'alpha',alpha(i,:));
+end;
+
+plot(z(:,3),z(:,4));
+xlabel('Fitted DF');
+ylabel('AIC');
+
+g = [alpha z];
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/backtr.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,33 @@
+function z=backtr(y,fit)
+%
+% Inverse-link transformation of y.
+
+fali = fit.fit_points.family_link;
+link = fali(2);
+switch link
+  case 3
+    z=y;
+  case 4
+    z=exp(y);
+  case 5
+    z = y;
+    i = find(y<=0);
+    if (length(i)>0)
+      z(i) = exp(y(i))./(1+exp(y(i)));
+    end;
+    i = find(y>0);
+    if (length(i)>0)
+      z(i) = 1./(1+exp(-y(i)));
+    end;
+  case 6
+    z=1./y;
+  case 7
+    z=y.*abs(y);
+  case 8
+    z=sin(y).^2;
+  otherwise
+     disp('Backtr: invalid link');
+     z=y;
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/fitted.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,13 @@
+function y = fitted(fit)
+
+% Fitted values from a locfit object.
+%
+% Input arguments:
+%   fit - the locfit() fit.
+%
+%  Author: Catherine Loader.
+
+z = predict(fit,'d','restyp','fit');
+y = backtr(z,fit);
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/gcv.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,13 @@
+function g=gcv(varargin)
+
+fit = locfit(varargin{:});
+rs = rsum(fit);
+
+df0 = rs(1);
+df1 = rs(2);
+llk = rs(3);
+n = size(fit.data.x,1);
+gc = -2*n*llk/((n-df0)^2);
+g = [llk df0 df1 gc];
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/gcvplot.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,25 @@
+function g=gcvplot(alpha,varargin)
+%
+% Computes and plots the Generalized Cross-Validation score (GCV)
+% for local fits with different smoothing parameters.
+%
+% The first argument to gcvplot(), alpha, should be a matrix with one
+% or two columns (first column = nearest neighbor component, second
+% column = constant component). Each row of this matrix is, in turn,
+% passed as the 'alpha' argument to gcv() (and locfit()). The results
+% are stored in a matrix, and GCV score ploted against the degrees of
+% freedom.
+
+k = size(alpha,1);
+z = zeros(k,4);
+
+for i=1:k
+  z(i,:) = gcv(varargin{:},'alpha',alpha(i,:));
+end;
+
+plot(z(:,3),z(:,4));
+xlabel('Fitted DF');
+ylabel('GCV');
+
+g = [alpha z];
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/hatmatrix.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,6 @@
+function z=hatmatrix(varargin)
+
+fit = locfit(varargin{:},'module','hatm');
+z = lfknots(fit)';
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/invlink.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,24 @@
+function y0 = invlink(y,fali)
+% inverse link function for locfit.
+% y is a vector of raw fitted values.
+% fali is the integer [family link] vector from locfit.
+% output is the inv. link.
+
+link = fali(2);
+
+switch(link)
+    case 3   % identity
+        y0 = y;
+    case 4   % log
+        y0 = exp(y);
+    case 5   % logit - should invert carefully!
+        y0 = 1 - 1./(1+exp(y));
+    case 6   % inverse
+        y0 = 1/y;
+    case 7   % sqrt
+        y0 = y*abs(y);
+    case 8   % arcsin
+        y0 = sin(y)*sin(y);
+    otherwise
+        disp('invlink: Unknown link function');
+end;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/kappa0.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,33 @@
+function kap=kappa0(x,y,varargin)
+
+% Compute the constants for `tube-formula' based simultaneous
+% confidence bands.
+%
+% Works for regression models only. Density estimation problems
+% should be converted to counts, and use poisson regression
+% 'family','poisson'.
+%
+% Essentially, this is a front-end to locfit, and so all optional
+% arguments to locfit (eg, smoothing parameters) can be provided.
+%
+% To compute (or plot) the confidence bands, provide the output
+% of the kappa0() function as the 'kappa' argument to a
+% predict() or lfband() call.
+%
+%
+% Example:
+%
+% load ethanol;
+% fit = locfit(E,NOx,'alpha',0.5)
+% kap = kappa0(E,NOx,'alpha',0.5)  % give same arguments!
+% lfplot(fit)
+% lfband(fit,'kappa',kap)     % plot the simultaneous bands
+% z = predict(fit,[0.6 0.7 0.8]','kappa',kap,'band','g')
+% z{3}                        % evaluate the bands.
+
+fit = locfit(x,y,'module','kappa','ev','grid','mg',20,varargin{:});
+z = fit.fit_points.kappa;
+d = size(fit.data.x,2);
+kap = z(1:(d+1));
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lcv.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,19 @@
+function g=lcv(varargin)
+%
+% likelihood cross-validation.
+%
+% returned vector consists of log-likelihood, trace(H), trace(H'H)
+% and cross-validated deviance (-2 * cross-validated log-likelihood).
+%
+% Author: Catherine Loader.
+
+fit = locfit(varargin{:},'ev','cros');
+rs = rsum(fit);
+
+df0 = rs(1);
+df1 = rs(2);
+llk = rs(3);
+
+g = [llk df0 df1 -2*llk];
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lcvplot.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,25 @@
+function g=lcvplot(alpha,varargin)
+%
+% Computes and plots the Likelihood Cross-Validation score (LCV)
+% for local fits with different smoothing parameters.
+%
+% The first argument to lcvplot(), alpha, should be a matrix with one
+% or two columns (first column = nearest neighbor component, second
+% column = constant component). Each row of this matrix is, in turn,
+% passed as the 'alpha' argument to lcv() (and locfit()). The results
+% are stored in a matrix, and LCV score ploted against the degrees of
+% freedom.
+
+k = size(alpha,1);
+z = zeros(k,4);
+
+for i=1:k
+  z(i,:) = lcv(varargin{:},'alpha',alpha(i,:));
+end;
+
+plot(z(:,3),z(:,4));
+xlabel('Fitted DF');
+ylabel('LCV');
+
+g = [alpha z];
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lf_censor.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,29 @@
+function fit = lf_censor(x,y,cens,varargin)
+%
+% Censored local regression using normal assumption.
+% Must provide x, y and cens.
+% All other arguments to locfit() can be provided, with the
+% exception of weights.
+%
+% NEED: Kaplan Meier Estimate. Iterations are fixed.
+%
+
+lfc_y = y;
+unc = find(~cens);
+
+for i = 0:3
+  fit = locfit(x,lfc_y,varargin{:});
+  fh = fitted(fit);
+
+  rs = rsum(fit);
+  df0 = rs(1);
+  df1 = rs(2);
+
+  rdf = sum(1-cens) - 2*df0 + df1;
+  sigma = sqrt(sum( (y-fh).*(lfc_y-fh) / rdf));
+  sr = (y-fh)/sigma;
+  lfc_y = fh + sigma*normpdf(sr)./normcdf(-sr);
+  lfc_y(unc) = y(unc);
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfband.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,43 @@
+function lfband(fit,varargin)
+
+% adds confidence bands around the plot of a locfit() fit.
+%
+% for 2-d fits, produces separate surface plots of upper and
+% lower confidence limits.
+%
+% Bands are based on 95% pointwise coverage, using a single
+% (i.e. global) estimate of sigma^2.
+
+xfit = lfmarg(fit);
+% placing 'band','g' before varargin{:} ensures that
+% user-provided 'band' has precedence.
+ypp = predict(fit,xfit,'band','g',varargin{:});
+yfit = ypp{1};
+se = ypp{2};
+bands = ypp{3};
+
+data = fit.data;
+xdata = data.x;
+p = size(xdata,2);
+cv = 1.96;
+fali = fit.fit_points.family_link;
+cl = invlink(bands(:,1),fali);
+cu = invlink(bands(:,2),fali);
+
+if (p==1)
+  hold on;
+  plot(xfit{1},cu,':');
+  plot(xfit{1},cl,':');
+  hold off;
+end;
+
+if (p==2)
+  x1 = xfit{1};
+  x2 = xfit{2};
+  figure(1);
+  surf(x1,x2,reshape(cl,length(x1),length(x2))');
+  figure(2);
+  surf(x1,x2,reshape(cu,length(x1),length(x2))');
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfgui.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,113 @@
+function varargout = lfgui(varargin)
+% LFGUI M-file for lfgui.fig
+%      LFGUI, by itself, creates a new LFGUI or raises the existing
+%      singleton*.
+%
+%      H = LFGUI returns the handle to a new LFGUI or the handle to
+%      the existing singleton*.
+%
+%      LFGUI('CALLBACK',hObject,eventData,handles,...) calls the local
+%      function named CALLBACK in LFGUI.M with the given input arguments.
+%
+%      LFGUI('Property','Value',...) creates a new LFGUI or raises the
+%      existing singleton*.  Starting from the left, property value pairs are
+%      applied to the GUI before lfgui_OpeningFunction gets called.  An
+%      unrecognized property name or invalid value makes property application
+%      stop.  All inputs are passed to lfgui_OpeningFcn via varargin.
+%
+%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
+%      instance to run (singleton)".
+%
+% See also: GUIDE, GUIDATA, GUIHANDLES
+
+% Copyright 2002-2003 The MathWorks, Inc.
+
+% Edit the above text to modify the response to help lfgui
+
+% Last Modified by GUIDE v2.5 27-Dec-2005 18:56:48
+
+% Begin initialization code - DO NOT EDIT
+gui_Singleton = 1;
+gui_State = struct('gui_Name',       mfilename, ...
+                   'gui_Singleton',  gui_Singleton, ...
+                   'gui_OpeningFcn', @lfgui_OpeningFcn, ...
+                   'gui_OutputFcn',  @lfgui_OutputFcn, ...
+                   'gui_LayoutFcn',  [] , ...
+                   'gui_Callback',   []);
+if nargin && ischar(varargin{1})
+    gui_State.gui_Callback = str2func(varargin{1});
+end
+
+if nargout
+    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
+else
+    gui_mainfcn(gui_State, varargin{:});
+end
+% End initialization code - DO NOT EDIT
+
+
+% --- Executes just before lfgui is made visible.
+function lfgui_OpeningFcn(hObject, eventdata, handles, varargin)
+% This function has no output args, see OutputFcn.
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% varargin   command line arguments to lfgui (see VARARGIN)
+
+fit = locfit(varargin{:});
+lfplot(fit);
+handles.lfargs = varargin;
+
+% Choose default command line output for lfgui
+handles.output = hObject;
+
+% Update handles structure
+guidata(hObject, handles);
+
+% UIWAIT makes lfgui wait for user response (see UIRESUME)
+% uiwait(handles.figure1);
+
+
+% --- Outputs from this function are returned to the command line.
+function varargout = lfgui_OutputFcn(hObject, eventdata, handles) 
+% varargout  cell array for returning output args (see VARARGOUT);
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Get default command line output from handles structure
+varargout{1} = handles.output;
+
+
+% --- Executes on slider movement.
+function slider1_Callback(hObject, eventdata, handles)
+% hObject    handle to slider1 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'Value') returns position of slider
+%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
+
+n = get(hObject,'Value');
+n0 = get(hObject,'Min');
+n1 = get(hObject,'Max');
+nn = 0.1+(n-n0)/(n1-n0);
+fit = locfit(handles.lfargs{:},'nn',nn);
+lfplot(fit);
+
+% --- Executes during object creation, after setting all properties.
+function slider1_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to slider1 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: slider controls usually have a light gray background, change
+%       'usewhitebg' to 0 to use default.  See ISPC and COMPUTER.
+usewhitebg = 1;
+if usewhitebg
+    set(hObject,'BackgroundColor',[.9 .9 .9]);
+else
+    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
+end
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfknots.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,9 @@
+function z=lfknots(fit,varargin)
+%
+% very spartan version of the S lfknots function...
+%
+% Author: Catherine Loader.
+
+z = fit.fit_points.fitted_values;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfmarg.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,17 @@
+function xfit = lfmarg(fit)
+
+% computes grid margins from a locfit object, used for plotting.
+% this function is called from lfplot and lfband, will not normally
+% be called directly by users.
+
+box = fit.fit_points.fit_limits;
+d = size(box,1);
+xfit = cell(1,d);
+mg = 10*ones(1,d);
+if (d==1) mg = 200; end;
+if (d==2) mg = [51 50]; end;
+for i=1:d
+    xfit{i} = box(i,1) + (box(i,2)-box(i,1))*(0:mg(i))'/mg(i);
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfplot.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,104 @@
+function lfplot(varargin)
+ 
+% Plot (for one or two dimensions) a locfit() fit.
+%
+% Usage:
+%   fit = locfit(x,y);
+%   lfplot(fit);
+%
+% Plot the fitted smooth curve, and add a scatterplot of the data.
+%
+% Required argument:
+%   fit  (produced by locfit()).
+%
+% Optional arguments:
+%   'nodata'  - don't add data to plot.
+%   'contour' - for 2-d predictors, use contour instead of surf.
+%   'direct'  - fit directly, instead of using interpolation
+%               (see the predict() function).
+%   'what'    - locfit what argument ('coef', 'infl', 'vari', 'band' etc).
+%   Any additional arguments are passed to Matlab's plot(), contour()
+%     or surf() function as appropriate.
+%
+% To add confidence bands, use the lfband() function.
+%
+% Author: Catherine Loader.
+
+fit = varargin{1};
+data = fit.data;
+xdata = data.x;
+n = size(xdata,1);
+d = size(xdata,2);
+fali = fit.fit_points.family_link;
+ydata = data.y;
+wdata = data.weights;
+cdata = data.censor;
+if (length(cdata)==1) cdata = zeros(n,1); end;
+showdata = (fit.evaluation_structure.derivative==0);
+ppargs = {};
+plotargs = {};
+
+type = 's';
+na = 2;
+while na <= length(varargin)
+  inc = 0;
+  if (strcmp(varargin{na},'contour'))
+    type = 'c';
+    inc = 1;
+  end;
+  if (strcmp(varargin{na},'what'))
+    ppargs = {ppargs{:}, 'what', varargin{na+1}};
+    showdata = 0;
+    inc = 2;
+  end;
+  if (strcmp(varargin{na},'nodata'))
+    showdata = 0;
+    inc = 1;
+  end;
+  if (strcmp(varargin{na},'direct'))
+    ppargs = {ppargs{:} 'direct'};
+    inc = 1;
+  end;
+  if (inc==0)
+    plotargs = {plotargs{:} varargin{na}};
+    inc = 1;
+  end;
+  na = na+inc;
+end;
+
+xfit = lfmarg(fit);
+yfit = predict(fit,xfit,ppargs{:});
+yfit = invlink(yfit,fali);
+fam = mod(fali(1),64);
+if (fam>4)
+  ydata = ydata ./ wdata;
+end;
+
+if (d==1)
+  plot(xfit{1},yfit,plotargs{:});
+  if (showdata)
+    hold on;
+    if (length(ydata)==1) ydata = zeros(n,1); end;
+    plotbyfactor(xdata,ydata,cdata);
+    hold off;
+  end;
+end;
+
+if (d==2)
+  x1 = xfit{1};
+  x2 = xfit{2};
+  yfit = reshape(yfit,length(x1),length(x2));
+  if (type=='c')
+    [C h] = contour(x1,x2,yfit',plotargs{:});
+    clabel(C,h);
+    if (showdata)
+      hold on;
+      plotbyfactor(xdata(:,1),xdata(:,2),cdata);
+      hold off;
+    end;
+  else
+    surf(x1,x2,yfit',plotargs{:});
+  end;
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/lfsmooth.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,25 @@
+function yhat=lfsmooth(varargin)
+%
+% a simple interface to locfit.
+% output is a vector of smoothed values, at each data point.
+% all locfit options, except evaluation structures, are valid.
+%
+% Example, to smooth a time series of observations,
+%
+% t = (1:100)';
+% y = 2*sin(t/10) + normrnd(0,1,100,1);
+% plot(t,y,'.');
+% hold on;
+% plot(t,lfsmooth(t,y,'nn',0.5));
+% hold off;
+%
+
+% Minimal input validation    
+if nargin < 1
+   error( 'At least one input argument required' );
+end
+
+fit = locfit(x,varargin{:},'module','simple');
+yhat = fit.fit_points.fitted_values;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/locfit.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,468 @@
+function fit=locfit(varargin)
+
+% Smoothing noisy data using Local Regression and Likelihood.
+%
+% arguments still to add: dc maxit
+%
+%  Usage: fit = locfit(x,y)   % local regression fit of x and y.
+%         fit = locfit(x)     % density estimation of x.
+%
+%  Smoothing with locfit is a two-step procedure. The locfit()
+%  function evaluates the local regression smooth at a set of points
+%  (can be specified through an evaluation structure). Then, use
+%  the predict() function to interpolate this fit to other points.
+%
+%  Additional arguments to locfit() are specified as 'name',value pairs, e.g.:
+%  locfit( x, 'alpha',[0.7,1.5] , 'family','rate' , 'ev','grid' , 'mg',100 ); 
+%
+%
+%  Data-related inputs:
+%
+%    x is a vector or matrix of the independent (or predictor) variables.
+%      Rows of x represent subjects, columns represent variables.
+%      Generally, local regression would be used with 1-4 independent
+%      variables. In higher dimensions, the curse-of-dimensionality,
+%      as well as the difficulty of visualizing higher dimensional
+%      surfaces, may limit usefulness.
+%
+%    y is the column vector of the dependent (or response) variable.
+%      For density families, 'y' is omitted. 
+% NOTE: x and y are the first two arguments. All other arguments require
+%        the 'name',value notation.
+%
+%    'weights' Prior weights for observations (reciprocal of variance, or
+%           sample size). 
+%    'cens' Censoring indicators for hazard rate or censored regression.
+%           The coding is '1' (or 'TRUE') for a censored observation, and
+%           '0' (or 'FALSE') for uncensored observations. 
+%    'base' Baseline parameter estimate. If a baseline is provided,
+%           the local regression model is fitted as
+%                        Y_i = b_i + m(x_i) + epsilon_i,
+%           with Locfit estimating the m(x) term. For regression models,
+%           this effectively subtracts b_i from Y_i. The advantage of the
+%           'base' formulation is that it extends to likelihood
+%           regression models. 
+%    'scale' A scale to apply to each variable. This is especially
+%           important for multivariate fitting, where variables may be
+%           measured in non-comparable units. It is also used to specify
+%           the frequency for variables with the 'a' (angular) style.
+%     'sty' Character string (length d) of styles for each predictor variable.
+%           n denotes `normal'; a denotes angular (or periodic); l and r
+%           denotes one-sided left and right; c is conditionally parametric.
+% 
+%
+%  Smoothing Parameters and Bandwidths:
+%  The bandwidth (or more accurately, half-width) of the smoothing window
+%  controls the amount of smoothing. Locfit allows specification of constant
+%  (fixed), nearest neighbor, certain locally adaptive variable bandwidths,
+%  and combinations of these. Also related to the smoothing parameter
+%  are the local polynmial degree and weight function.
+%
+%    'nn' 'Nearest neighbor' smoothing parameter. Specifying 'nn',0.5
+%         means that the width of each smoothing neighborhood is chosen
+%         to cover 50% of the data.
+%
+%     'h' A constant (or fixed) bandwidth parameter. For example, 'h',2
+%         means that the smoothing windows have constant half-width
+%         (or radius) 2. Note that h is applied after scaling.
+%
+%   'pen' penalty parameter for adaptive smoothing. Needs to be used
+%         with care.
+%
+%  'alpha' The old way of specifying smoothing parameters, as used in
+%         my book. alpha is equivalent to the vector [nn,h,pen].
+%         If multiple componenents are non-zero, the largest corresponding
+%         bandwidth is used. The default (if none of alpha,nn,h,pen
+%         are provided) is [0.7 0 0].
+%
+%   'deg' Degree of local polynomial. Default: 2 (local quadratic).
+%         Degrees 0 to 3 are supported by almost all parts of the
+%         Locfit code. Higher degrees may work in some cases. 
+% 
+%  'kern' Weight function, default = 'tcub'. Other choices are
+%         'rect', 'trwt', 'tria', 'epan', 'bisq' and 'gauss'.
+%         Choices may be restricted when derivatives are
+%         required; e.g. for confidence bands and some bandwidth
+%         selectors. 
+% 
+%    'kt' Kernel type, 'sph' (default); 'prod'. In multivariate
+%         problems, 'prod' uses a simplified product model which
+%         speeds up computations. 
+% 
+%  'acri' Criterion for adaptive bandwidth selection.
+% 
+%
+%  Derivative Estimation.
+%  Generally I recommend caution when using derivative estimation
+%  (and especially higher order derivative estimation) -- can you
+%  really estimate derivatives from noisy data? Any derivative
+%  estimate is inherently more dependent on an assumed smoothness
+%  (expressed through the bandwidth) than the data. Warnings aside...
+%
+%  'deriv' Derivative estimation. 'deriv',1 specifies the first derivative
+%         (or more correctly, an estimate of the local slope is returned.
+%         'deriv',[1 1] specifies the second derivative. For bivariate fits
+%         'deriv',2 specifies the first partial derivative wrt x2.
+%         'deriv',[1 2] is mixed second-order derivative.
+% 
+%  Fitting family.
+%  'family' is used to specify the local likelihood family.
+%         Regression-type families are 'gaussian', 'binomial',
+%           'poisson', 'gamma' and 'geom'. If the family is preceded
+%           by a q (e.g. 'qgauss', or 'qpois') then quasi-likelihood is
+%           used; in particular, a dispersion estimate is computed.
+%           Preceding by an 'r' makes an attempt at robust (outlier-resistant)
+%           estimation. Combining q and r (e.g. 'family','qrpois') may
+%           work, if you're lucky.
+%         Density estimation-type families are 'dens', 'rate' and 'hazard'
+%           (hazard or failure rate). Note that `dens' scales the output
+%           to be a statistical density estimate (i.e. scaled to integrate
+%           to 1). 'rate' estimates the rate or intensity function (events
+%           per unit time, or events per unit area), which may be called
+%           density in some fields.
+%         The default family is 'qgauss' if a response (y argument) has been
+%         provided, and 'dens' if no response is given.
+%    'link' Link function for local likelihood fitting. Depending on the
+%           family, choices may be 'ident', 'log', 'logit',
+%           'inverse', 'sqrt' and 'arcsin'. 
+% 
+%  Evaluation structures.
+%    By default, locfit chooses a set of points, depending on the data
+%    and smoothing parameters, to evaluate at. This is controlled by
+%    the evaluation structure.
+%      'ev' Specify the evaluation structure. Default is 'tree'.
+%           Other choices include 'phull' (triangulation), 'grid' (a grid
+%           of points), 'data' (each data point), 'crossval' (data,
+%           but use leave-one-out cross validation), 'none' (no evaluation
+%           points, effectively producing the global parametric fit).
+%           Alternatively, a vector/matrix of evaluation points may be
+%           provided. 
+%           (kd trees not currently supported in mlocfit)
+%     'll' and 'ur' -- row vectors specifying the upper and lower limits
+%           for the bounding box used by the evaluation structure.
+%           They default to the data range. 
+%     'mg' For the 'grid' evaluation structure, 'mg' specifies the
+%           number of points on each margin. Default 10. Can be either a
+%           single number or vector. 
+%    'cut' Refinement parameter for adaptive partitions. Default 0.8;
+%           smaller values result in more refined partitions. 
+%    'maxk' Controls space assignment for evaluation structures. For the
+%           adaptive evaluation structures, it is impossible to be sure
+%           in advance how many vertices will be generated. If you get
+%           warnings about `Insufficient vertex space', Locfit's default
+%           assigment can be increased by increasing 'maxk'. The default
+%           is 'maxk','100'. 
+%
+%    'xlim' For density estimation, Locfit allows the density to be
+%           supported on a bounded interval (or rectangle, in more than
+%           one dimension). The format should be [ll;ul] (ie, matrix with
+%           two rows, d columns) where ll is the lower left corner of
+%           the rectangle, and ur is the upper right corner.
+%           One-sided bounds, such as [0,infty), are not supported, but can be
+%           effectively specified by specifying a very large upper
+%           bound. 
+% 
+%      'module' either 'name' or {'name','/path/to/module',parameters}.
+% 
+%  Density Estimation
+%      'renorm',1  will attempt to renormalize the local likelihood
+%           density estimate so that it integrates to 1. The llde
+%           (specified by 'family','dens') is scaled to estimate the
+%           density, but since the estimation is pointwise, there is
+%           no guarantee that the resulting density integrates exactly
+%           to 1. Renormalization attempts to achieve this.
+%
+%  The output of locfit() is a Matlab structure:
+%
+% fit.data.x (n*d)
+% fit.data.y (n*1)
+% fit.data.weights (n*1 or 1*1)
+% fit.data.censor (n*1 or 1*1)
+% fit.data.baseline (n*1 or 1*1)
+% fit.data.style (string length d)
+% fit.data.scales (1*d)
+% fit.data.xlim (2*d)
+%
+% fit.evaluation_structure.type (string)
+% fit.evaluation_structure.module.name (string)
+% fit.evaluation_structure.module.directory (string)
+% fit.evaluation_structure.module.parameters (string)
+% fit.evaluation_structure.lower_left (numeric 1*d)
+% fit.evaluation_structure.upper_right (numeric 1*d)
+% fit.evaluation_structure.grid (numeric 1*d)
+% fit.evaluation_structure.cut (numeric 1*d)
+% fit.evaluation_structure.maxk
+% fit.evaluation_structure.derivative
+%
+% fit.smoothing_parameters.alpha = (nn h pen) vector
+% fit.smoothing_parameters.adaptive_criterion (string)
+% fit.smoothing_parameters.degree (numeric)
+% fit.smoothing_parameters.family (string)
+% fit.smoothing_parameters.link (string)
+% fit.smoothing_parameters.kernel (string)
+% fit.smoothing_parameters.kernel_type (string)
+% fit.smoothing_parameters.deren 
+% fit.smoothing_parameters.deit
+% fit.smoothing_parameters.demint
+% fit.smoothing_parameters.debug
+%
+% fit.fit_points.evaluation_points (d*nv matrix)
+% fit.fit_points.fitted_values (matrix, nv rows, many columns)
+% fit.fit_points.evaluation_vectors.cell
+% fit.fit_points.evaluation_vectors.splitvar
+% fit.fit_points.evaluation_vectors.lo
+% fit.fit_points.evaluation_vectors.hi
+% fit.fit_points.fit_limits (d*2 matrix)
+% fit.fit_points.family_link (numeric values)
+% fit.fit_points.kappa (likelihood, degrees of freedom, etc)
+%
+% fit.parametric_component
+%
+%
+%  The OLD format:
+%
+%    fit{1} = data.
+%    fit{2} = evaluation structure.
+%    fit{3} = smoothing parameter structure.
+%    fit{4}{1} = fit points matrix.
+%    fit{4}{2} = matrix of fitted values etc.
+%           Note that these are not back-transformed, and may have the
+%           parametric component removed.
+%           (exact content varies according to module).
+%    fit{4}{3} = various details of the evaluation points.
+%    fit{4}{4} = fit limits.
+%    fit{4}{5} = family,link.
+%    fit{5} = parametric component values.
+%
+
+
+
+% Minimal input validation    
+if nargin < 1
+   error( 'At least one input argument required' );
+end
+
+xdata = double(varargin{1});
+d = size(xdata,2);
+n = size(xdata,1);
+if ((nargin>1) && (~ischar(varargin{2})))
+  ydata = double(varargin{2});
+  if (any(size(ydata) ~= [n 1])); error('y must be n*1 column vector'); end;
+  family = 'qgauss';
+  na = 3;
+else
+  ydata = 0;
+  family = 'density';
+  na = 2;
+end;
+if mod(nargin-na,2)==0
+  error( 'All arguments other than x, y must be name,value pairs' );
+end
+
+
+wdata = ones(n,1);
+cdata = 0;
+base  = 0;
+style = 'n';
+scale = 1;
+xl = zeros(2,d);
+
+alpha = [0 0 0];
+deg = 2;
+link = 'default';
+acri = 'none';
+kern = 'tcub';
+kt = 'sph';
+deren = 0;
+deit  = 'default';
+demint= 20;
+debug = 0;
+
+ev = 'tree';
+ll = zeros(1,d);
+ur = zeros(1,d);
+mg = 10;
+maxk = 100;
+deriv=0;
+cut = 0.8;
+mdl = struct('name','std', 'directory','', 'parameters',0 );
+
+while na < length(varargin)
+    inc = 0;
+    if (varargin{na}=='y')
+        ydata = double(varargin{na+1});
+        family = 'qgauss';
+        inc = 2;
+        if (any(size(ydata) ~= [n 1])); error('y must be n*1 column vector'); end;
+    end
+    if (strcmp(varargin{na},'weights'))
+        wdata = double(varargin{na+1});
+        inc = 2;
+        if (any(size(wdata) ~= [n 1])); error('weights must be n*1 column vector'); end;
+    end
+    if (strcmp(varargin{na},'cens'))
+        cdata = double(varargin{na+1});
+        inc = 2;
+        if (any(size(cdata) ~= [n 1])); error('cens must be n*1 column vector'); end;
+    end
+    if (strcmp(varargin{na},'base')) % numeric vector, n*1 or 1*1.
+        base = double(varargin{na+1});
+        if (length(base)==1); base = base*ones(n,1); end;
+        inc = 2;
+    end
+    if (strcmp(varargin{na},'style')) % character string of length d.
+        style = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'scale')) % row vector, length 1 or d.
+        scale = varargin{na+1};
+        if (scale==0)
+          scale = zeros(1,d);
+          for i=1:d
+            scale(i) = sqrt(var(xdata(:,i)));
+          end;
+        end;
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'xlim')) % 2*d numeric matrix.
+        xl = varargin{na+1};
+        inc = 2;
+    end
+    if (strcmp(varargin{na},'alpha')) % row vector of length 1, 2 or 3.
+        alpha = [varargin{na+1} 0 0 0];
+        alpha = alpha(1:3);
+        inc = 2;
+    end
+    if (strcmp(varargin{na},'nn')) % scalar
+        alpha(1) = varargin{na+1};
+        inc = 2;
+    end
+    if (strcmp(varargin{na},'h')) % scalar
+        alpha(2) = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'pen')) % scalar
+        alpha(3) = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'acri')) % string
+        acri = varargin{na+1};
+        inc = 2;
+    end
+    if (strcmp(varargin{na},'deg')) % positive integer.
+        deg = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'family')) % character string.
+        family = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'link')) % character string.
+        link = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'kern')) % character string.
+        kern = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'kt')) % character string.
+        kt = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'ev')) % char. string, or matrix with d columns.
+        ev = varargin{na+1};
+        if (isnumeric(ev)); ev = ev'; end;
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'ll')) % row vector of length d.
+        ll = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'ur')) % row vector of length d.
+        ur = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'mg')) % row vector of length d.
+        mg = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'cut')) % positive scalar.
+        cut = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'module')) % string.
+        mdl = struct('name',varargin{na+1}, 'directory','', 'parameters',0 );
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'maxk')) % positive integer.
+        maxk = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'deriv')) % numeric row vector, up to deg elements.
+        deriv = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'renorm')) % density renormalization.
+        deren = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'itype')) % density - integration type.
+        deit = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'mint')) % density - # of integration points.
+        demint = varargin{na+1};
+        inc = 2;
+    end;
+    if (strcmp(varargin{na},'debug')) % debug level.
+        debug = varargin{na+1};
+        inc = 2;
+    end;
+    if (inc==0)
+      disp(varargin{na});
+      error('Unknown Input Argument.');
+    end;
+    na=na+inc;
+end
+
+
+fit.data.x = xdata;
+fit.data.y = ydata;
+fit.data.weights = wdata;
+fit.data.censor = cdata;
+fit.data.baseline = base;
+fit.data.style = style;
+fit.data.scales = scale;
+fit.data.xlim = xl;
+
+fit.evaluation_structure.type = ev;
+fit.evaluation_structure.module = mdl;
+fit.evaluation_structure.lower_left = ll;
+fit.evaluation_structure.upper_right = ur;
+fit.evaluation_structure.grid = mg;
+fit.evaluation_structure.cut = cut;
+fit.evaluation_structure.maxk = maxk;
+fit.evaluation_structure.derivative = deriv;
+
+if (alpha==0); alpha = [0.7 0 0]; end;
+
+fit.smoothing_parameters.alpha = alpha;
+fit.smoothing_parameters.adaptive_criterion = acri;
+fit.smoothing_parameters.degree = deg;
+fit.smoothing_parameters.family = family;
+fit.smoothing_parameters.link = link;
+fit.smoothing_parameters.kernel = kern;
+fit.smoothing_parameters.kernel_type = kt;
+fit.smoothing_parameters.deren = deren;
+fit.smoothing_parameters.deit = deit;
+fit.smoothing_parameters.demint = demint;
+fit.smoothing_parameters.debug = debug;
+
+[fpc pcomp] = mexlf(fit.data,fit.evaluation_structure,fit.smoothing_parameters);
+fit.fit_points = fpc;
+fit.parametric_component = pcomp;
+
+return
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/locfit_all.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,25 @@
+function out=locfit_all(varargin)
+
+% Smoothing noisy data using Local Regression and Likelihood.
+%
+% This is a combination of the locfit and predict functions
+%
+
+% Minimal input validation    
+if nargin < 1
+   error( 'At least one input argument required' );
+end
+
+predict_args = {};
+
+locfit_args = varargin{1};
+
+if nargin==2
+predict_args = varargin{2};
+end;
+
+fit = locfit( locfit_args{:} );
+
+predict_out = predict( fit, predict_args{:} );
+
+out = {fit predict_out};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/plotbyfactor.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,17 @@
+function plotbyfactor(x,y,f)
+%
+% very simplistic version of plotbyfactor.
+% no symbols, will crash if more than 8 levels.
+%
+
+z = unique(f);
+cols = ['b','r','g','m','c','y','k','w'];
+
+for (i = 1:length(z))
+  u = find(f==z(i));
+  plot(x(u),y(u),'.','color',cols(i));
+  hold on;
+end;
+hold off;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/predict.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,101 @@
+function [y, se] = predict(varargin)
+
+% Interpolate a fit produced by locfit().
+%
+% predict(fit)    produces the fitted values at locfit's selected points.
+% predict(fit,x)  interpolates the fits to points specified by x.
+%
+% Input arguments:
+%   fit   The locfit() fit.
+%   x     Points to interpolate at. May be a matrix with d columns,
+%         or cell with d components (each a vector). In the former
+%         case, a fitted value is computed for each row of x.
+%         In the latter, the components of x are interpreted as
+%         grid margins.
+%         Can also specify 'data' (evaluate at data points);
+%         or 'fitp' (extract the fitted points).
+%  'band',value
+%         Type of standard errors to compute. Default is 'band','n', for none.
+%         Other choices are 'band','g' (use a global s to estimate the resiudal
+%         standard deviation, so standard errors are s*||l(x)||);
+%         'band','l' (use a local s(x), so std. errors are s(x)*||l(x)||);
+%         'band','p' (prediction errors, so s*sqrt(1+||l(x)||^2).
+%  'direct'
+%         Compute the local fit directly (rather than using local
+%         regression, at each point specified by the x argument.
+%  'kappa',vector
+%         Vector of constants for simultaneous confidence bands,
+%         computed by the kappa0() function.
+%  'level',value
+%         Coverage probability for confidence intervals and bands.
+%         Default is 0.95.
+%
+%  Output is a vector of fitted values (if 'band','n'), or a cell
+%  with fitted value, standard error vectors, and matrix of lower
+%  and upper confidence limits.
+%
+%  Note that for local likelihood fits, back-transformation is
+%  not performed, so that (e.g.) for Poisson regression with the
+%  log-link, the output estimates the log-mean, and its standard errors.
+%  Likewise, for density estimation, the output is log(density).
+%
+%  Author: Catherine Loader.
+
+if (nargin<1)
+    error('predict requires fit argument');
+end;
+
+fit = varargin{1};
+
+if (nargin==1) x = 'fitp'; else x = varargin{2}; end;
+
+band = 'n';
+what = 'coef';
+rest = 'none';
+dir  = 0;
+level = 0.95;
+d = size(fit.data.x,2);
+kap = [zeros(1,d) 1];
+
+na = 3;
+while na <= nargin
+  inc = 0;
+  if strcmp(varargin{na},'band')
+    band = varargin{na+1};
+    inc = 2;
+  end;
+  if strcmp(varargin{na},'what')
+    what = varargin{na+1};
+    inc = 2;
+  end;
+  if strcmp(varargin{na},'restyp')
+    rest = varargin{na+1};
+    inc = 2;
+  end;
+  if strcmp(varargin{na},'direct')
+    dir = 1;
+    inc = 1;
+  end;
+  if strcmp(varargin{na},'kappa')
+    kap = varargin{na+1};
+    inc = 2;
+  end;
+  if strcmp(varargin{na},'level')
+    level = varargin{na+1};
+    inc = 2;
+  end;
+  if (inc == 0)
+    disp(varargin{na});
+    error('Unknown argument');
+  end;
+  na = na+inc;
+end;
+
+[y se cb] = mexpp(x,fit,band,what,rest,dir,kap,level);
+if (band=='n')
+    y = y;
+else
+    y = {y se cb};
+end;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/residuals.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,23 @@
+function y = residuals(fit,type)
+
+% Residuals (or a few other things) from a locfit() fit.
+%
+% Input arguments:
+%   fit - the locfit() fit.
+%   type (optional) type of residuals. Valid types are
+%     'dev'    (deviance, the default)
+%     'd2'     (deviance squared)
+%     'pearson'(Pearson)
+%     'raw'    (observed - fitted)
+%     'ldot'   (derivative of log-likelihood)
+%     'lddot'  (second derivative)
+%     'fit'    (fitted values - no transformation)
+%     'mean'   (fitted values - with back transformation)
+%
+%  Author: Catherine Loader.
+
+if (nargin<2) type = 'dev'; end;
+  
+y = predict(fit,'d','restyp',type);
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/rsum.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,14 @@
+function z = rsum(fit)
+%
+% function to extract log-likelihood and degrees-of-freedom
+% from locfit fit.
+%
+% order of returned vector:   df0 df1 llk.
+%
+
+fp = fit.fit_points;
+gf = fp.kappa;
+
+z = gf([2 3 1]);
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/scb.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,18 @@
+function z=scb(x,y,varargin)
+
+% Simultaneous Confidence Bands
+%
+% Example:
+%   load ethanol;
+%   z = scb(E,NOx,'h',0.5);
+%
+% result (z) is a matrix with four columns: evaluation points,
+% fitted values, lower confidence limit, upper confidence limit.
+% Most locfit arguments should work.
+
+fit = locfit(x,y,'ev','grid','mg',20,varargin{:});
+kap = kappa0(x,y,varargin{:});
+cb = predict(fit,'fitp','band','g','kappa',kap);
+z = [fit.fit_points.evaluation_points' cb{1} cb{3}];
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/smooth_lf.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,20 @@
+function z=smooth_lf(x,y,varargin)
+
+% must (unlike R smooth.lf() function) give x and y.
+% also R's direct=T is automatic.
+%
+
+xev = x;
+if (k>1)
+  if (strcmp(varargin{1},'xev'))
+    xev = varargin{2};
+    varargin(1:2) = [];
+  end;
+end;
+fit = locfit(x,y,varargin{:},'ev',xev,'module','simple');
+z = lfknots(fit);
+fv = invlink(z(:,1),fit.fit_points.family_link);
+
+z = { xev, fv };
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/spence15.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,29 @@
+function yhat=spence15(y)
+% function for Spencer's 15-point graduation rule.
+% set out following Spencer's hand-calculation method,
+% which isn't the shortest computer program!
+
+osev = ones(7,1);
+n = length(y);
+y = [ osev*y(1); y; osev*y(n) ];
+
+n = length(y);
+k = 3:(n-2);
+a3 = y(k-1) + y(k) + y(k+1);
+a2 = y(k-2) + y(k+2);
+y1 = y(k)+3*(a3-a2);
+
+n = length(y1);
+k = 1:(n-3);
+y2 = y1(k)+y1(k+1)+y1(k+2)+y1(k+3);
+
+n = length(y2);
+k = 1:(n-3);
+y3 = y2(k)+y2(k+1)+y2(k+2)+y2(k+3);
+
+n = length(y3);
+k = 1:(n-4);
+y4 = y3(k)+y3(k+1)+y3(k+2)+y3(k+3)+y3(k+4);
+
+yhat = y4/320;
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/spence21.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,27 @@
+function yhat=spence21(y)
+% function for Spencer's 21-point graduation rule.
+% set out following Spencer's hand-calculation method,
+% which isn't the shortest computer program!
+
+oten = ones(10,1);
+n = length(y);
+y = [ oten*y(1); y; oten*y(n) ];
+
+n = length(y);
+k = 4:(n-3);
+y1 = -y(k-3) + y(k-1) + 2*y(k) + y(k+1) -y(k+3);
+
+n = length(y1);
+k = 4:(n-3);
+y2 = y1(k-3)+y1(k-2)+y1(k-1)+y1(k)+y1(k+1)+y1(k+2)+y1(k+3);
+
+n = length(y2);
+k = 3:(n-2);
+y3 = y2(k-2)+y2(k-1)+y2(k)+y2(k+1)+y2(k+2);
+
+n = length(y3);
+k = 3:(n-2);
+y4 = y3(k-2)+y3(k-1)+y3(k)+y3(k+1)+y3(k+2);
+
+yhat = y4/350;
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/m/vecr.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,5 @@
+function z=vecr(fit)
+
+z = fit.fit_points.kappa;
+
+return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/octave/importdata.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,444 @@
+## Copyright (C) 2012 Erik Kjellson
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn  {Function File} {@var{A} =} importdata (@var{fname})
+## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter})
+## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter},  @var{header_rows})
+## @deftypefnx {Function File} {[@var{A}, @var{delimiter}] =} importdata (...)
+## @deftypefnx {Function File} {[@var{A}, @var{delimiter}, @var{header_rows}] =} importdata (...)
+## Importing data from file.
+##
+## Importing the contents of file @var{fname} into workspace.
+##
+## Input parameters:
+## @itemize
+## @item @var{fname}
+## The file name for the file to import.
+## 
+## @item @var{delimiter}
+## The character separating columns of data. Use @code{\t} for tab.
+## (Only valid for ascii files)
+##
+## @item @var{header_rows}
+## Number of header rows before the data begins. (Only valid for ascii files)
+## @end itemize
+##
+## Different file types are supported:
+## @itemize
+## @item Ascii table
+##
+## Importing ascii table using the specified number of header rows and
+## the specified delimiter.
+##
+## @item Image file
+##
+## @item @sc{Matlab} file
+##
+## @item Spreadsheet files (depending on external software)
+##
+## @item Wav file
+##
+## @end itemize
+##
+## @seealso{textscan, dlmread, csvread, load}
+## @end deftypefn
+
+## Author: Erik Kjellson <erikiiofph7@users.sourceforge.net>
+
+function [output, delimiter, header_rows] = importdata (varargin)
+
+    
+  ## Default values
+  fname   = "";
+  delimiter  = "";
+  header_rows = -1;
+
+  ##########
+
+  ## Check input arguments
+
+  if (nargin < 1)
+    print_usage ();
+  endif
+
+  fname = varargin{1};
+  ## Check that the file name really is a string
+  if (! ischar (fname))
+    error ("importdata: file name needs to be a string");
+  endif
+  if ( strcmpi (fname, "-pastespecial"))
+    error ("importdata: option -pastespecial not implemented");
+  endif
+
+  if (nargin > 1)
+    delimiter = varargin{2};
+    ## Check that the delimiter really is a string
+    if (!ischar (delimiter))
+      error("importdata: delimiter needs to be a character");
+    endif
+    if (length (delimiter) > 1 && !strcmpi (delimiter, "\\t"))
+      error("importdata: delimiter cannot be longer than 1 character");
+    endif
+    if (strcmpi (delimiter, "\\"))
+      delimiter = "\\\\";
+    endif
+  endif
+
+  if (nargin > 2)
+    header_rows = varargin{3};
+    if (!isnumeric (header_rows) || header_rows < 0)
+      error ("importdata: number of header rows needs to be an integer number >= 0");
+    endif
+  endif
+
+  if (nargin > 3)
+    error ("importdata: too many input arguments");
+  endif
+
+  ##########
+
+  ## Check file format
+  ## Get the extension from the file name.
+  [d n fileExt v] = fileparts (fname);
+  ## Make sure file extension is in lower case.
+  fileExt = lower (fileExt);
+
+  switch fileExt
+    case {".au", ".snd"}
+      error (sprintf ("importdata: not implemented for file format %s", 
+                      fileExt));
+    case ".avi"
+      error (sprintf ("importdata: not implemented for file format %s", 
+                      fileExt));
+    case {".bmp", ".cur", ".gif", ".hdf", ".ico", ".jpe", ".jpeg", ".jpg", \
+          ".pbm", ".pcx", ".pgm", ".png", ".pnm", ".ppm", ".ras", \
+          ".tif", ".tiff", ".xwd"}
+      delimiter  = NaN;
+      header_rows = 0;
+      [output.cdata, output.colormap, output.alpha] = imread (fname);
+    case ".mat"
+      delimiter  = NaN;
+      header_rows = 0;
+      output = load (fname);
+    case {".wk1", ".xls", ".xlsx", ".dbf", ".pxl"}
+      ## If there's no Excel file support simply fall back to unimplemented.m
+      output = xlsread (fname);
+    case {".ods", ".sxc", ".fods", ".uos", ".xml"}
+      ## unimplemented.m only knows ML functions; odsread isn't one but is in OF
+      try
+        output = odsread (fname);
+      catch
+        ## Fall back to unimplemented.m.
+        output = xlsread (fname);
+      end_try_catch
+    case {".wav", ".wave"}
+      delimiter  = NaN;
+      header_rows = 0;
+      [output.data, output.fs] = wavread (fname);
+    otherwise
+      ## Assume the file is in ascii format.
+      [output, delimiter, header_rows]  = \
+          importdata_ascii (fname, delimiter, header_rows);
+  endswitch
+
+  ## If there are any empty fields in the output structure, then remove them
+  if (isstruct (output) && length (output) == 1)
+    fields = fieldnames (output);
+    for i=1:length (fields)
+      if (isempty (getfield (output, fields{i})))
+        output = rmfield (output, fields{i});
+      endif
+    endfor
+
+    ## If only one field is left, replace the structure with the field,
+    ## i.e. output = output.onlyFieldLeft
+
+    ## Update the list of fields
+    fields = fieldnames (output);
+    if (length (fields) == 1)
+      output = getfield (output, fields{1});
+    endif
+  endif
+endfunction
+
+
+########################################
+
+function [output, delimiter, header_rows] = \
+      importdata_ascii (fname, delimiter, header_rows)
+
+  ## Define the fields in the output structure so that the order will be
+  ## correct.
+
+  output.data       = [];
+  output.textdata   = [];
+  output.rowheaders = [];
+  output.colheaders = [];
+
+  ## Read file into string and count the number of header rows
+  #file_content = fileread (fname);
+  file_content_rows={};
+  fid=fopen(fname);
+  currline=0;
+  firstline=1;
+  while 1==1
+      if not(isempty(currline))
+          if currline==-1
+              break
+          end
+      end     
+      currline=fgetl(fid);
+      file_content_rows{end+1}=currline;
+  end
+  fclose(fid);
+  file_content_rows={file_content_rows{1:(end-1)}};
+  
+  ## Split the file into rows (using \r\n or \n as delimiters between rows).
+  #file_content_rows = regexp (file_content, "\r?\n", "split");
+
+  ## FIXME: guess delimiter, if it isn't defined
+  if (isempty (delimiter))
+    error ("importdata: Guessing delimiter is not implemented yet, you have to specify it.");
+  endif
+
+  ## FIXME: A more intelligent way to count number of header rows. This
+  ## is needed e.g. when delimiter=' ' and the header contains spaces...
+
+  ## If number of header rows is undefined, then count the number of
+  ## header rows by step through row by row and look for the delimiter.
+  ## Assume that the header can't contain any delimiter.
+  if (header_rows < 0)
+    header_rows = 0;
+    for i=1:length (file_content_rows)
+      if (isempty (regexp(file_content_rows{i}, delimiter, "once")))
+        header_rows++;
+      else
+        ## Data part has begun and therefore no more header rows can be
+        ## found
+        break;
+      endif
+    endfor
+  endif
+
+  ## Put the header rows in output.textdata.
+  if (header_rows > 0)
+    output.textdata   = file_content_rows (1:header_rows)';
+  endif
+
+  ## If space is the delimiter, then remove spaces in the beginning of
+  ## each data row.
+  if (strcmpi (delimiter, " "))
+    for i=(header_rows+1):length (file_content_rows)
+      ## strtrim does not only remove the leading spaces but also the
+      ## tailing spaces, but that doesn't really matter.
+      file_content_rows{i} = strtrim (file_content_rows{i});
+    endfor
+  endif
+
+  ## Remove empty data rows. Go through them backwards so that you wont
+  ## get out of bounds.
+  for i=length (file_content_rows):-1:(header_rows + 1)
+    if (length (file_content_rows{i}) < 1)
+      file_content_rows = [file_content_rows(1:i-1), \
+                           file_content_rows(i+1:length(file_content_rows))];
+    endif
+  endfor
+
+  ## Count the number of data columns. If there are different number of
+  ## columns, use the greatest value.
+  data_columns = 0;
+  delimiter_pattern = delimiter;
+  ## If space is the delimiter, then multiple spaces should count as ONE
+  ## delimiter. Also ignore leading spaces.
+  if (strcmpi (delimiter, " "))
+    delimiter_pattern = ' +';
+  endif
+  for i=(header_rows+1):length(file_content_rows)
+    data_columns = max (data_columns,
+                        length (regexp (file_content_rows{i},
+                                        delimiter_pattern, "split")));
+  endfor
+
+  ## Go through the data and put it in either output.data or
+  ## output.textdata depending on if it is numeric or not.
+  output.data = NaN (length (file_content_rows) - header_rows, data_columns);
+
+  cut_rows=zeros(1,data_columns);
+  for i=(header_rows+1):length(file_content_rows)
+    ## Only use the row if it contains anything other than white-space
+    ## characters.
+    if (any (file_content_rows{i} != " "))
+      row_data = regexp (file_content_rows{i}, delimiter_pattern, "split");
+
+      for j=1:length(row_data)
+        ## Try to convert the column to a number, if it works put it in
+        ## output.data, otherwise in output.textdata
+        if (!isempty (row_data{j}))
+          data_numeric = str2double (row_data{j});
+          if and(!isempty (data_numeric),not(isnan(data_numeric)))
+            output.data(i-header_rows, j) = data_numeric;
+            if not(isnan(data_numeric))
+                cut_rows(j)=1;
+            end
+          else
+            output.textdata{i,j} = row_data{j};
+          endif
+        endif
+      endfor
+
+    endif
+  endfor
+  output.data=output.data(:,cut_rows>0);
+  
+  ## Check wether rowheaders or colheaders should be used
+  if ((header_rows == data_columns) && (size (output.textdata, 2) == 1))
+    output.rowheaders = output.textdata;
+  elseif (size (output.textdata, 2) == data_columns)
+    output.colheaders = output.textdata(end,:);
+  endif
+
+  ## When delimiter = "\\t" convert it to a tab, done for Matlab compatibility.
+  if (strcmp (delimiter, '\t'))
+    delimiter = "\t";
+  endif
+
+endfunction
+
+
+function [RET]=regexp(ARG1,ARG2,ARG3)
+%ARG3 is always 'split' in this context
+  if (strcmp (ARG2, '\t'))
+    ARG2 = "\t";
+  endif
+  RET = strsplit(ARG1,"\t",fixed=true);
+endfunction
+
+########################################
+
+%!test
+%! # Comma separated values
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, "3.1,-7.2,0\n0.012,6.5,128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, ",");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, ",");
+%! assert (h, 0);
+
+%!test
+%! # Tab separated values
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, "3.1\t-7.2\t0\n0.012\t6.5\t128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, "\\t");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, "\t");
+%! assert (h, 0);
+
+%!test
+%! # Space separated values, using multiple spaces to align in columns.
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(1,:));
+%! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(2,:));
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, " ");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, " ");
+%! assert (h, 0);
+
+%!test
+%! # Header
+%! A.data = [3.1 -7.2 0; 0.012 6.5 128];
+%! A.textdata = {"This is a header row."; \
+%!               "this row does not contain any data, but the next one does."};
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, [A.textdata{1} "\n"]);
+%! fputs (fid, [A.textdata{2} "\n"]);
+%! fputs (fid, "3.1\t-7.2\t0\n0.012\t6.5\t128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, "\\t");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, "\t");
+%! assert (h, 2);
+
+%!test
+%! # Ignore empty rows containing only spaces
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(1,:));
+%! fputs (fid, "      ");
+%! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(2,:));
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, " ");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, " ");
+%! assert (h, 0);
+
+%!test
+%! # Exponentials
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, "+3.1e0\t-72E-1\t0\n12e-3\t6.5\t128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, "\\t");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, "\t");
+%! assert (h, 0);
+
+%!test
+%! # Missing values
+%! A = [3.1 NaN 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, "3.1\t\t0\n0.012\t6.5\t128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, "\\t");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, "\t");
+%! assert (h, 0);
+
+%!test
+%! # CRLF for line breaks
+%! A = [3.1 -7.2 0; 0.012 6.5 128];
+%! fn  = tmpnam ();
+%! fid = fopen (fn, "w");
+%! fputs (fid, "3.1\t-7.2\t0\r\n0.012\t6.5\t128");
+%! fclose (fid);
+%! [a,d,h] = importdata (fn, "\\t");
+%! unlink (fn);
+%! assert (a, A);
+%! assert (d, "\t");
+%! assert (h, 0);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/octave/intersect.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,115 @@
+## Copyright (C) 2000-2012 Paul Kienzle
+## Copyright (C) 2008-2009 Jaroslav Hajek
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} intersect (@var{a}, @var{b})
+## @deftypefnx {Function File} {[@var{c}, @var{ia}, @var{ib}] =} intersect (@var{a}, @var{b})
+##
+## Return the elements in both @var{a} and @var{b}, sorted in ascending
+## order.  If @var{a} and @var{b} are both column vectors return a column
+## vector, otherwise return a row vector.
+## @var{a}, @var{b} may be cell arrays of string(s).
+##
+## Return index vectors @var{ia} and @var{ib} such that @code{a(ia)==c} and
+## @code{b(ib)==c}.
+##
+## @end deftypefn
+## @seealso{unique, union, setxor, setdiff, ismember}
+
+function [c, ia, ib] = intersect (a, b, varargin)
+
+  if (nargin < 2 || nargin > 3)
+    print_usage ();
+  endif
+
+##  [a, b] = validargs ("intersect", a, b, varargin{:});
+
+  if (isempty (a) || isempty (b))
+    c = ia = ib = [];
+  else
+    ## form a and b into sets
+    if (nargout > 1)
+      [a, ja] = unique (a, varargin{:});
+      [b, jb] = unique (b, varargin{:});
+    else
+      a = unique (a, varargin{:});
+      b = unique (b, varargin{:});
+    endif
+
+    if (nargin > 2)
+      c = [a; b];
+      [c, ic] = sortrows (c);
+      ii = find (all (c(1:end-1,:) == c(2:end,:), 2));
+      c = c(ii,:);
+      len_a = rows (a);
+    else
+      c = [a(:); b(:)];
+      [c, ic] = sort (c);               ## [a(:);b(:)](ic) == c
+      if (iscellstr (c))
+        ii = find (strcmp (c(1:end-1), c(2:end)));
+      else
+        ii = find (c(1:end-1) == c(2:end));
+      endif
+      c = c(ii);
+      len_a = length (a);
+    endif
+
+    if (nargout > 1)
+      ia = ja(ic(ii));                  ## a(ia) == c
+      ib = jb(ic(ii+1) - len_a);        ## b(ib) == c
+    endif
+
+    if (nargin == 2 && (size (b, 1) == 1 || size (a, 1) == 1))
+      c = c.';
+    endif
+  endif
+
+endfunction
+
+
+%!# Test the routine for index vectors ia and ib
+%!test
+%! a = [3 2 4 5 7 6 5 1 0 13 13];
+%! b = [3 5 12 1 1 7];
+%! [c,ia,ib] = intersect(a,b);
+%! assert(c,[1 3 5 7]);
+%! assert(ia,[8 1 7 5]);
+%! assert(ib,[5 1 2 6]);
+%! assert(a(ia),c);
+%! assert(b(ib),c);
+%!test
+%! a = [1,1,2;1,4,5;2,1,7];
+%! b = [1,4,5;2,3,4;1,1,2;9,8,7];
+%! [c,ia,ib] = intersect(a,b,'rows');
+%! assert(c,[1,1,2;1,4,5]);
+%! assert(ia,[1;2]);
+%! assert(ib,[3;1]);
+%! assert(a(ia,:),c);
+%! assert(b(ib,:),c);
+%!test
+%! a = [1 1 1 2 2 2];
+%! b = [1 2 3 4 5 6];
+%! c = intersect(a,b);
+%! assert(c, [1,2]);
+%!test
+%! a = [1 2 3 4; 5 6 7 8; 9 10 11 12];
+%! [b, ia, ib] = intersect(a, a, "rows");
+%! assert(b, a);
+%! assert(ia, [1:3]');
+%! assert(ib, [1:3]');
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/perform_nonparametric_tests.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,184 @@
+function []=perform_nonparametric_tests(CFG,genes,variance_function_nonparametric_1, variance_function_nonparametric_2)
+
+
+%Get the gene expression
+fprintf('Loading gene expression\n')
+if isempty(CFG.Counts_gene_expression)
+    EXPR_TAB_FILENAME=[CFG.out_base 'Gene_expression.tab'];
+else
+    EXPR_TAB_FILENAME=CFG.Counts_gene_expression;
+end
+
+try
+    Gene_expression=importdata(EXPR_TAB_FILENAME,'\t',1);
+    Gene_expression=Gene_expression.data;
+catch
+    error(['Could not open: ' EXPR_TAB_FILENAME])
+end
+  
+
+%Get the counts
+fprintf('Loading nonparametric region counts\n')
+if isempty(CFG.Counts_rDiff_nonparametric)
+    IN_FILENAME=[CFG.out_base 'Nonparametric_region_counts.mat'];
+    load(IN_FILENAME,'Counts_rDiff_nonparametric')
+else
+    IN_FILENAME=[CFG.out_base CFG.Counts_rDiff_nonparametric];
+    load(IN_FILENAMEc,'Counts_rDiff_nonparametric') 
+end
+
+
+
+if CFG.use_rproc
+   JB_NR=1;
+   JOB_INFO = rproc_empty();
+end
+
+PAR.variance_function_nonparametric_1=variance_function_nonparametric_1;
+PAR.variance_function_nonparametric_2=variance_function_nonparametric_2;
+if 1==1
+%%% Perform the test
+% configuration
+if not(CFG.use_rproc)
+    fprintf('Performing nonparametric testing\n')
+end
+%define the splits of the genes for the jobs
+idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+% submit jobs to cluster
+
+for i = 1:CFG.rproc_num_jobs
+    PAR.genes = genes(idx(idx(:,2)==i,1)); 
+    PAR.Counts_rDiff_nonparametric=Counts_rDiff_nonparametric(idx(idx(:,2)==i,1),:);
+    PAR.Gene_expression=Gene_expression(idx(idx(:,2)==i,1),:);
+    CFG.rproc_memreq = 5000;
+    CFG.rproc_par.mem_req_resubmit = [5000 10000 32000];
+    CFG.rproc_par.identifier = sprintf('Pnp.%i-',i);  
+    CFG.outfile_prefix=[CFG.out_base_temp 'P_values_nonparametric_' num2str(i) '_of_' num2str(CFG.rproc_num_jobs)];
+    PAR.CFG=CFG;
+    if CFG.use_rproc
+        fprintf(1, 'Submitting job %i to cluster\n',i);
+        JOB_INFO(JB_NR) = rproc('get_nonparametric_tests_caller', PAR,CFG.rproc_memreq, CFG.rproc_par, CFG.rproc_time); 
+        JB_NR=JB_NR+1;
+    else
+        get_nonparametric_tests_caller(PAR);
+    end
+end
+if CFG.use_rproc
+    [JOB_INFO num_crashed] = rproc_wait(JOB_INFO, 60, 1, -1);
+end
+end
+% Get the test results
+
+%%% Generate the output files
+fprintf('Reading temporary results\n')
+P_values_rDiff_nonparametric=ones(size(genes,2),1);
+P_values_rDiff_mmd=ones(size(genes,2),1);
+
+
+P_values_rDiff_nonparametric_error_flag=cell(size(genes,2),1);
+P_values_rDiff_mmd_error_flag=cell(size(genes,2),1);
+NAMES=cell(size(genes,2),1);
+%Field containing the errors
+ERRORS_NR=[];
+idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+% Iterate over the result files to load the data from the count files
+for j = 1:CFG.rproc_num_jobs
+    IN_FILENAME=[CFG.out_base_temp 'P_values_nonparametric_' num2str(j) '_of_' num2str(CFG.rproc_num_jobs)];
+    IDX=idx(idx(:,2)==j,1);
+    try
+        load(IN_FILENAME)
+        for k=1:length(IDX)
+            if isempty(P_VALS{k,1}) %Gene was not tested for
+                                          %some reason
+                P_values_rDiff_nonparametric_error_flag{IDX(k)}='NOT_TESTED';
+                P_values_rDiff_mmd_error_flag{IDX(k)}='NOT_TESTED';
+            else
+                if not(isempty(P_VALS{k,1}))
+                    NAMES{IDX(k)}=P_VALS{k,1};
+                end
+                COUNTER=2;
+                %Get the results from rDiff.mmd
+                if CFG.perform_mmd
+                    if not(isempty(P_VALS{k,COUNTER}))
+                        P_values_rDiff_mmd(IDX(k))=P_VALS{k,COUNTER}{1};
+                        if (isempty(P_VALS{k,COUNTER}{2}))
+                            P_values_rDiff_mmd_error_flag{IDX(k)}='NOT_TESTED';
+                        else
+                            P_values_rDiff_mmd_error_flag{IDX(k)}='OK';
+                        end
+                    end
+                    COUNTER=COUNTER+1;
+                end
+                
+                %Get the results from rDiff.parametric
+                if CFG.perform_nonparametric
+                    if not(isempty(P_VALS{k,COUNTER}))
+                        P_values_rDiff_nonparametric(IDX(k))=P_VALS{k,COUNTER}{1};
+			if length(P_VALS{k,COUNTER})>1
+			  if iscell(P_VALS{k,COUNTER}{2}) && length(P_VALS{k,COUNTER}{2}{3})>3
+			    P_values_rDiff_nonparametric(IDX(k))=min(10*min(P_VALS{k,COUNTER}{2}{3})+max(P_VALS{k,COUNTER}{2}{3})*(10/(CFG.bootstraps+1)),1);
+			  end
+			end
+                        if (isempty(P_VALS{k,COUNTER}{2}))
+                            P_values_rDiff_nonparametric_error_flag{IDX(k)}='NOT_TESTED';
+                        else
+                            P_values_rDiff_nonparametric_error_flag{IDX(k)}='OK';
+                        end
+                    end;
+                end
+                
+            end
+        end
+    catch
+        for k=1:length(IDX)
+            P_values_rDiff_nonparametric_error_flag{IDX(k)}='NOT_TESTED';
+            P_values_rDiff_mmd_error_flag{IDX(k)}='NOT_TESTED';
+        end
+        warning(['There was a problem loading: ' IN_FILENAME ])
+        ERRORS_NR=[ERRORS_NR;j];
+    end
+end
+if not(isempty(ERRORS_NR))
+    warning('There have been problems loading some of the parametric test result files');
+end
+
+fprintf('Writing output files\n')
+%Generate P-value table for rDiff.nonparametric
+if CFG.perform_nonparametric
+%Open file handler
+    P_TABLE_FNAME=[CFG.out_base 'P_values_rDiff_nonparametric.tab'];
+    fid=fopen(P_TABLE_FNAME,'w');
+    
+    %print header
+    fprintf(fid,'gene\tp-value\ttest-status\n');
+    
+    %print lines
+    for j=1:size(genes,2)
+        fprintf(fid,'%s',NAMES{j});
+        fprintf(fid,'\t%f\t%s\n',P_values_rDiff_nonparametric(j),P_values_rDiff_nonparametric_error_flag{j});
+    end
+    %close file handler
+    fclose(fid)
+end
+
+
+
+%Generate P-value table for rDiff.mmd
+if CFG.perform_mmd
+%Open file handler
+    P_TABLE_FNAME=[CFG.out_base 'P_values_rDiff_mmd.tab'];
+    fid=fopen(P_TABLE_FNAME,'w');
+    
+    %print header
+    fprintf(fid,'gene\tp-value\ttest-status\n');
+    
+    %print lines
+    for j=1:size(genes,2)
+        fprintf(fid,'%s',NAMES{j});
+        fprintf(fid,'\t%f\t%s\n',P_values_rDiff_mmd(j),P_values_rDiff_mmd_error_flag{j});
+    end
+    %close file handler
+    fclose(fid)
+end
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/perform_parametric_tests.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,182 @@
+function []=perform_parametric_tests(CFG,genes,variance_function_parametric_1, variance_function_parametric_2)
+
+
+
+%Get the gene expression
+fprintf('Loading gene expression\n')
+if isempty(CFG.Counts_gene_expression)
+    EXPR_TAB_FILENAME=[CFG.out_base 'Gene_expression.tab'];
+else
+    EXPR_TAB_FILENAME=CFG.Counts_gene_expression;
+end
+
+try
+    Gene_expression=importdata(EXPR_TAB_FILENAME,'\t',1);
+    Gene_expression=Gene_expression.data;
+catch
+    error(['Could not open: ' EXPR_TAB_FILENAME])
+end
+
+%Get the counts
+fprintf('Loading alternative region counts\n')
+if isempty(CFG.Counts_rDiff_parametric)
+    IN_FILENAME=[CFG.out_base 'Alternative_region_counts.mat'];
+    load(IN_FILENAME,'Counts_rDiff_parametric')
+else
+    IN_FILENAME=[CFG.out_base CFG.Counts_rDiff_parametric];
+    load(IN_FILENAMEc,'Counts_rDiff_parametric') 
+end
+
+
+
+if CFG.use_rproc
+   JB_NR=1;
+   JOB_INFO = rproc_empty();
+end
+
+PAR.variance_function_parametric_1=variance_function_parametric_1;
+PAR.variance_function_parametric_2=variance_function_parametric_2;
+
+%%% Perform the test
+% configuration
+if not(CFG.use_rproc)
+    fprintf('Performing parametric testing\n')
+end
+
+%define the splits of the genes for the jobs
+idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+% submit jobs to cluster
+for i = 1:CFG.rproc_num_jobs
+    PAR.genes = genes(idx(idx(:,2)==i,1)); 
+    PAR.Counts_rDiff_parametric=Counts_rDiff_parametric(idx(idx(:,2)==i,1),:);
+    PAR.Gene_expression=Gene_expression(idx(idx(:,2)==i,1),:);
+    CFG.rproc_memreq = 5000;
+    CFG.rproc_par.mem_req_resubmit = [5000 10000 32000];
+    CFG.rproc_par.identifier = sprintf('Pp.%i-',i);  
+    CFG.outfile_prefix=[CFG.out_base_temp 'P_values_parametric_' num2str(i) '_of_' num2str(CFG.rproc_num_jobs)];
+    PAR.CFG=CFG;
+    if CFG.use_rproc
+        fprintf(1, 'Submitting job %i to cluster\n',i);
+        JOB_INFO(JB_NR) = rproc('get_parametric_tests_caller', PAR,CFG.rproc_memreq, CFG.rproc_par, CFG.rproc_time); 
+        JB_NR=JB_NR+1;
+    else
+        get_parametric_tests_caller(PAR);
+    end
+end
+if CFG.use_rproc
+    [JOB_INFO num_crashed] = rproc_wait(JOB_INFO, 60, 1, -1);
+end
+
+% Get the test results
+
+
+
+
+%%% Generate the output files
+fprintf('Reading temporary results\n')
+P_values_rDiff_parametric=ones(size(genes,2),1);
+P_values_rDiff_poisson=ones(size(genes,2),1);
+
+
+P_values_rDiff_parametric_error_flag=cell(size(genes,2),1);
+P_values_rDiff_poisson_error_flag=cell(size(genes,2),1);
+NAMES=cell(size(genes,2),1);
+%Field containing the errors
+ERRORS_NR=[];
+idx=[(1:size(genes,2))',ceil((1:size(genes,2))*CFG.rproc_num_jobs/size(genes,2))']; 
+% Iterate over the result files to load the data from the count files
+for j = 1:CFG.rproc_num_jobs
+    IN_FILENAME=[CFG.out_base_temp 'P_values_parametric_' num2str(j) '_of_' num2str(CFG.rproc_num_jobs)];
+    
+    IDX=idx(idx(:,2)==j,1);
+    try
+        load(IN_FILENAME)
+        for k=1:length(IDX)
+            if isempty(P_VALS{k,1}) %Gene was not tested for
+                                          %some reason
+                P_values_rDiff_parametric_error_flag{IDX(k)}='NOT_TESTED';
+                P_values_rDiff_poisson_error_flag{IDX(k)}='NOT_TESTED';
+            else
+                if not(isempty(P_VALS{k,1}))
+                    NAMES{IDX(k)}=P_VALS{k,1};
+                end
+                COUNTER=2;
+                %Get the results from rDiff.parametric
+                if CFG.perform_parametric
+                    if not(isempty(P_VALS{k,COUNTER}))
+                        P_values_rDiff_parametric(IDX(k))=P_VALS{k,COUNTER}{1};
+                        if not(isempty(P_VALS{k,COUNTER}{2}))
+                            P_values_rDiff_parametric_error_flag{IDX(k)}='NOT_TESTED';
+                        else
+                            P_values_rDiff_parametric_error_flag{IDX(k)}='OK';
+                        end
+                        COUNTER=COUNTER+1;
+                    end
+                end
+                
+                %Get the results from rDiff.poisson
+                if CFG.perform_poisson
+                    if not(isempty(P_VALS{k,COUNTER}))
+                        P_values_rDiff_poisson(IDX(k))=P_VALS{k,COUNTER}{1};
+                        if not(isempty(P_VALS{k,COUNTER}{2}))
+                            P_values_rDiff_poisson_error_flag{IDX(k)}='NOT_TESTED';
+                        else
+                            P_values_rDiff_poisson_error_flag{IDX(k)}='OK';
+                        end
+                    end
+                end
+            end
+        end
+    catch
+        for k=1:length(IDX)
+            P_values_rDiff_parametric_error_flag{IDX(k)}='NOT_TESTED';
+            P_values_rDiff_poisson_error_flag{IDX(k)}='NOT_TESTED';
+        end
+        warning(['There was a problem loading: ' IN_FILENAME ])
+        ERRORS_NR=[ERRORS_NR;j];
+    end
+end
+if not(isempty(ERRORS_NR))
+    warning('There have been problems loading some of the parametric test result files');
+end
+    
+fprintf('Writing output files\n')
+%Generate P-value table for rDiff.nonparametric
+if CFG.perform_parametric
+%Open file handler
+    P_TABLE_FNAME=[CFG.out_base 'P_values_rDiff_parametric.tab'];
+    fid=fopen(P_TABLE_FNAME,'w');
+    
+    %print header
+    fprintf(fid,'gene\tp-value\ttest-status\n');
+    
+    %print lines
+    for j=1:size(genes,2)
+        fprintf(fid,'%s',NAMES{j});
+        fprintf(fid,'\t%f\t%s\n',P_values_rDiff_parametric(j),P_values_rDiff_parametric_error_flag{j});
+    end
+    %close file handler
+    fclose(fid);
+end
+
+
+
+%Generate P-value table for rDiff.poisson
+if CFG.perform_poisson
+    %Open file handler
+    P_TABLE_FNAME=[CFG.out_base 'P_values_rDiff_poisson.tab'];
+    fid=fopen(P_TABLE_FNAME,'w');
+    
+    %print header
+    fprintf(fid,'gene\tp-value\ttest-status\n');
+    
+    %print lines
+    for j=1:size(genes,2)
+        fprintf(fid,'%s',NAMES{j});
+        fprintf(fid,'\t%f\t%s\n',P_values_rDiff_poisson(j),P_values_rDiff_poisson_error_flag{j});
+    end
+    %close file handler
+    fclose(fid);
+end
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/process_command_line_args.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,213 @@
+function [CFG]=process_command_line_args(CFG,ARGS)
+% [CFG]=process_command_line_args(CFG,ARGS)
+
+%This function adds the command line arguments to the CFG config variable
+
+%Parse the ARGS 
+
+%Check wether octave or matlab is used
+if size(ver('Octave'),1)
+  INTERPR = 1;
+else
+  INTERPR = 0;
+end
+
+%turn of warning
+if INTERPR
+    warning('off', 'Octave:precedence-change');
+    warning('off', 'Octave:function-name-clash');
+    warning('off', '');
+    warning('off', 'Octave:num-to-str');
+    warning('off', 'Octave:function-name-clash');
+    warning('off', 'Octave:divide-by-zero');
+    warning('off', 'Octave:future-time-stamp');
+    warning('off', 'solve_qp:constraints');
+    warning('off', 'Octave:assign-as-truth-value');
+    warning('off', 'Octave:matlab-incompatible');
+else
+   warning('off', 'MATLAB:typeaheadBufferOverflow');
+end
+
+%Seperate the Variable Field
+if INTERPR
+    ARGS = strsplit(ARGS,';');
+else
+    ARGS=regexp(ARGS,';','split');
+end
+
+%Assign the local variables
+
+%iterate over Fields
+for i=1:length(ARGS)
+    if isempty(ARGS{i})
+        continue
+    end
+    if INTERPR
+        VALS = strsplit(ARGS{i},':');
+    else
+        VALS=regexp(ARGS{i},':','split');
+    end
+    
+    
+    if length(VALS)>2
+        error([" more than one field for variable: " VALS{1} ":" VALS{:} "\n  Maybe there are colons in the input argument?"])
+    end
+    
+    if strcmp(VALS{1},"RDIFF_RES_DIR"),RDIFF_RES_DIR=VALS{2};continue,end
+    if strcmp(VALS{1},"RDIFF_INPUT_DIR"),RDIFF_INPUT_DIR=VALS{2};continue,end
+    if strcmp(VALS{1},"BAM_INPUT1"),BAM_INPUT1=VALS{2};continue,end
+    if strcmp(VALS{1},"BAM_INPUT2"),BAM_INPUT2=VALS{2};continue,end
+    if strcmp(VALS{1},"GFF_INPUT"),GFF_INPUT=VALS{2};continue,end
+    if strcmp(VALS{1},"READ_LENGTH"),READ_LENGTH=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"MIN_READ_LENGTH"),MIN_READ_LENGTH=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"EST_GENE_EXPR"),EST_GENE_EXPR=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"ONLY_GENE_EXPR"),ONLY_GENE_EXPR=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"VAR_PATH1"),VAR_PATH1=VALS{2};continue,end
+    if strcmp(VALS{1},"VAR_PATH2"),VAR_PATH2=VALS{2};continue,end
+    if strcmp(VALS{1},"SAVE_VAR1"),SAVE_VAR1=VALS{2};continue,end
+    if strcmp(VALS{1},"SAVE_VAR2"),SAVE_VAR2=VALS{2};continue,end
+    if strcmp(VALS{1},"PRED_VAR1"),PRED_VAR1=VALS{2};continue,end
+    if strcmp(VALS{1},"PRED_VAR2"),PRED_VAR2=VALS{2};continue,end
+    if strcmp(VALS{1},"ONLY_GENE_START"),ONLY_GENE_START=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"SUBSAMPLE"),SUBSAMPLE=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"CLIP"),CLIP=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"BOOTSTRAP"),BOOTSTRAP=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"TEST_METH_NAME"),TEST_METH_NAME=VALS{2};continue,end
+    if strcmp(VALS{1},"MERGE_SAMPLE"),MERGE_SAMPLE=str2num(VALS{2});continue,end
+end
+
+%Process Bamfiles
+if INTERPR
+    BAMS1 = strsplit(BAM_INPUT1,',');
+    BAMS2 = strsplit(BAM_INPUT2,',');
+else
+    BAMS1=regexp(BAM_INPUT1,',','split');
+    BAMS2=regexp(BAM_INPUT2,',','split');
+end
+
+CFG.BAM_FILES={BAMS1{:},BAMS2{:}};
+    
+%Name of the experiment. Use the FILENAMES if the entries are empty.
+CFG.NAMES=CFG.BAM_FILES;
+for i=1:length(CFG.NAMES)
+	CFG.NAMES{i}=strrep(CFG.NAMES{i},"/","_");
+end
+
+% Give the directory where the input-files are
+CFG.data_dir = [RDIFF_INPUT_DIR '/'];
+
+% Indicate to which sample the bam-files belong
+CFG.SAMPLES=[repmat(1,1,size(BAMS1,2)),repmat(2,1,size(BAMS2,2))];
+
+%Process directories
+
+
+
+% Location of the gene structure
+CFG.genes_path=GFF_INPUT;
+
+% Output directory
+
+CFG.out_base =  [RDIFF_RES_DIR '/'];
+
+% Output directory for temporary files
+CFG.out_base_temp =   [CFG.out_base '/temp/'];
+mkdir(CFG.out_base_temp);
+
+
+%Check which method to perform
+if strcmp(TEST_METH_NAME,'poisson')
+    CFG.perform_poisson=1;
+end
+if strcmp(TEST_METH_NAME,'param')
+    CFG.perform_parametric=1;
+end
+if strcmp(TEST_METH_NAME,'nonparam')
+    CFG.perform_nonparametric=1;
+end
+if strcmp(TEST_METH_NAME,'mmd')
+    CFG.perform_mmd=1;
+end
+
+
+%Process arguments for gene expression estimation
+CFG.estimate_gene_expression=EST_GENE_EXPR;
+CFG.only_gene_expression=ONLY_GENE_EXPR;
+
+
+%Set options for the variance function
+CFG.merge_sample1=MERGE_SAMPLE;
+CFG.merge_sample2=MERGE_SAMPLE;
+
+%If samples contains leass than one sample, merge replicates
+if length(BAMS1)<2
+    CFG.merge_sample1=1;
+end
+if length(BAMS2)<2
+    CFG.merge_sample2=1;
+end
+
+%Use predefined  parameters
+CFG.predefined_variance_function1=[];
+if not(isempty(PRED_VAR1))
+    if INTERPR
+        VALS = strsplit(PRED_VAR1,',');
+    else
+        VALS=regexp(PRED_VAR1,',','split');
+    end
+    for i=1:length(VALS)
+        CFG.predefined_variance_function1(end+1)=str2num(VALS{i});
+    end
+end
+CFG.predefined_variance_function2=[];
+if not(isempty(PRED_VAR2))
+    if INTERPR
+        VALS = strsplit(PRED_VAR2,',');
+    else
+        VALS=regexp(PRED_VAR2,',','split');
+    end
+    for i=1:length(VALS)
+        CFG.predefined_variance_function2(end+1)=str2num(VALS{i});
+    end
+end
+
+
+if not(isempty(SAVE_VAR1))
+    CFG.save_variance_function_1=SAVE_VAR1;
+else
+    CFG.save_variance_function_1='variance_function_1.mat';
+end
+if not(isempty(SAVE_VAR2))
+    CFG.save_variance_function_2=SAVE_VAR2;
+else
+    CFG.save_variance_function_2='variance_function_2.mat';
+end
+
+if not(isempty(VAR_PATH1))
+    CFG.variance_function_1=VAR_PATH1;
+end
+if not(isempty(VAR_PATH2))
+    CFG.variance_function_2=VAR_PATH2;
+end
+
+%Option not implemented yet
+CFG.compute_variance_function_1=1;
+CFG.compute_variance_function_2=1;
+
+%use only gene starts and stops for rDiff.nonparametric variance
+%function esitmation
+CFG.only_gene_start=ONLY_GENE_START;
+
+%Process read arguments
+CFG.sequenced_length=READ_LENGTH;
+CFG.min_read_length=min(CFG.sequenced_length,MIN_READ_LENGTH);
+
+CFG.rDiff_subsample=SUBSAMPLE;
+CFG.rDiff_nonparametric_subsample_variance_estimation=CFG.rDiff_subsample;	
+
+CFG.bases_to_clip=CLIP;
+
+%Process arguments for rDiff.nonparametric
+CFG.bootstraps=BOOTSTRAP;
+
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/process_configure_rdiff.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,66 @@
+function CFG = process_configure_rdiff(CFG)
+  %  process_configure_rDiff(CFG)
+
+for i=1:length(CFG.BAM_FILES)
+    if isempty(CFG.NAMES{i})
+        CFG.NAMES{i}=CFG.BAM_FILES{i};
+    end
+end
+
+%Get the paths of the filenames
+for i=find(CFG.SAMPLES==1)
+  CFG.BAM_FILES{i}=fullfile(CFG.data_dir,CFG.BAM_FILES{i}); 
+end
+
+for i=find(CFG.SAMPLES==2)
+  CFG.BAM_FILES{i}=fullfile(CFG.data_dir,CFG.BAM_FILES{i}); 
+end
+
+
+%Check that the variance functions are available if necessary
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function1)<3 && isempty(CFG.variance_function_1)
+    CFG.compute_variance_function_1=1;
+end
+    
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function2)<3 && isempty(CFG.variance_function_2)
+    CFG.compute_variance_function_2=1;
+end
+
+%Check that there are sufficient samples to estimate the variance funtions
+if CFG.compute_variance_function_1==1
+  if and(length(find(CFG.SAMPLES==1))<2,not(CFG.merge_sample1))
+        error('Not sufficient samples to estimate variance function for sample 1');
+    end
+end
+
+if CFG.compute_variance_function_2==1
+      if and(length(find(CFG.SAMPLES==2))<2,not(CFG.merge_sample2))
+        error('Not sufficient samples to estimate variance function for sample 2');
+    end
+end
+
+
+
+%If a variance function can be loaded use this function and do not
+%compute a new one
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function1)<3 && not(isempty(CFG.variance_function_1))
+    CFG.compute_variance_function_1=0;
+end
+    
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function2)<3 && not(isempty(CFG.variance_function_2))
+    CFG.compute_variance_function_2=0;
+end
+
+   
+%If a variance function can be loaded use this function and do not
+%compute a new one
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function1)<3 && not(isempty(CFG.variance_function_1))
+    CFG.compute_variance_function_1=0;
+end
+    
+if or(CFG.perform_nonparametric,CFG.perform_parametric) &&  length(CFG.predefined_variance_function2)<3 && not(isempty(CFG.variance_function_2))
+    CFG.compute_variance_function_2=0;
+end
+    
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/rdiff.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,78 @@
+function []=rdiff(ARGS)
+% rdiff()
+%
+
+if isempty(ARGS)
+    usage() ;
+    exit(-1) ;
+end
+%ARGS=[ARGS ':.:.'] ;
+
+%%% Add paths  %%%
+fprintf('Set the paths\n')
+CFG.paths = set_rdiff_paths();
+
+
+%%% Read configuration file %%%
+fprintf('Load configuration\n')
+CFG = configure_rdiff(CFG);
+CFG = process_command_line_args(CFG,ARGS);
+CFG = process_configure_rdiff(CFG);
+
+%%% Get read counts %%%
+
+%load the gene structure
+load(CFG.genes_path , 'genes');
+
+% mask the regions which overlap with other genes
+fprintf('Compute regions common to multiple genes\n')
+[genes]=detect_overlapping_regions(genes);
+
+%Precompute testing regions
+fprintf('Compute alternative regions\n')
+[genes]=compute_testing_region(CFG,genes);
+
+%Get the gene expression
+if CFG.estimate_gene_expression
+    fprintf('Measure gene expression\n')
+    get_read_counts(CFG,genes);
+end
+
+%%% Estimate variance function %%%
+if CFG.perform_nonparametric
+    variance_function_nonparametric_1=[];
+    variance_function_nonparametric_2=[];
+    [variance_function_nonparametric_1, variance_function_nonparametric_2]=estimate_variance_nonparametric(CFG,genes);
+end
+
+if CFG.perform_poisson
+    variance_function_parametric_1=[];
+    variance_function_parametric_2=[];
+end
+if CFG.perform_parametric
+    variance_function_parametric_1=[];
+    variance_function_parametric_2=[];
+    [variance_function_parametric_1, variance_function_parametric_2]=estimate_variance_parametric(CFG,genes); 
+end
+
+%If only gene expression is needed, stop here
+if CFG.only_gene_expression
+    return
+end
+
+
+%%% Perform tests &  Write output %%%
+
+%Run the prametric tests
+if or(CFG.perform_parametric,CFG.perform_poisson)
+    perform_parametric_tests(CFG,genes,variance_function_parametric_1, variance_function_parametric_2)
+end
+%Run the nonparametric tests
+if or(CFG.perform_nonparametric,CFG.perform_mmd)
+    perform_nonparametric_tests(CFG,genes,variance_function_nonparametric_1, variance_function_nonparametric_2)
+end
+
+return
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/rdiff_caller.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,436 @@
+function STAT = rDiff_caller(PAR)
+% genes = opt_transcripts_caller(PAR)
+%
+% -- input --
+% PAR contains
+%     CFG: configuration struct
+%     genes: struct defining genes with start, stops, exons etc.
+%     profile_weights: weights of profile functions
+%     intron_dists: distances to closest intron
+%
+% -- output --
+% genes: struct with additional fields of eg. estimated transcript weights
+addpath ../../tests
+addpath ../../variance/final
+addpath ../../experimental
+
+samtools='/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/samtools/';
+CFG = PAR.CFG;
+SUFF_NAME=CFG.SUFF_NAME; 
+%load(CFG.genes_path , 'genes'); 
+%[genes]=mask_dubl(genes,0); 
+
+load(CFG.genes_path , 'genes');
+[genes]=mask_dubl(genes,0);
+
+%[genes]=remove_transcripts(genes);
+genes=genes(PAR.genes_idx);
+BAM_FILES=CFG.BAM_FILES;
+JB_NR=CFG.JB_NR;
+
+
+
+%clear PAR;
+
+%%%% paths
+addpath(CFG.paths);
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/variance/nbin');
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/experiments/');
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/tests/');
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/read_utils/');
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/tests/sequence_tools/');
+addpath(genpath('/fml/ag-raetsch/home/drewe/svn/tools/chronux/'))
+addpath('/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/tests/functions/');
+
+out_base=CFG.out_base;
+%sim_data_base=CFG.sim_data_base;
+real_data_base=CFG.real_data_base;
+
+expr12_bam=CFG.expr12_bam;
+expr11_bam=CFG.expr11_bam;
+expr22_bam=CFG.expr22_bam;
+expr21_bam=CFG.expr21_bam;
+
+CFG.SEQUENCED_LENGTH=80;
+SEQUENCED_LENGTH=80;
+%make map: gene->file
+
+IDX1=CFG.IDX11;
+IDX2=CFG.IDX22;
+
+%BAM_FILES{IDX1}
+%BAM_FILES{IDX2}
+
+
+%genes=PAR.genes;
+clear PAR
+
+STAT=cell(size(genes));
+do_save = 0;
+out_base = '/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/out';
+save_dir=fullfile(out_base,'cache');
+
+for i=1:size(genes,2)
+  %try
+  RESULT=cell(1,7)
+  gene = genes(i);
+  
+  RESULT{7}=JB_NR;
+  RESULT{1}=gene.name
+  load_only = false;
+   
+  if or(isempty(gene.exons),gene.stop-gene.start<=SEQUENCED_LENGTH)
+    PV=1;
+    RESULT{2}={PV,''};
+    RESULT{3}={PV,''};
+    RESULT{4}={PV,''};
+    RESULT{5}=[Inf,Inf];
+    RESULT{6}=[Inf,Inf];  
+    RESULT{7}={'empty gene exons'};  
+    RESULT{8}={PV,''};
+    continue;
+  end
+  
+  PV1=1;
+  for l=1:size(gene.transcripts,2)
+    EXONS=gene.exons{l}
+    if sum(EXONS(:,2)-EXONS(:,1))<=SEQUENCED_LENGTH
+          PV=1;
+	  RESULT{2}={PV,''};
+	  RESULT{3}={PV,''};
+	  RESULT{4}={PV,''};
+	  RESULT{5}=[Inf,Inf];
+	  RESULT{6}=[Inf,Inf];  
+	  RESULT{7}={'empty gene exons'};  
+	  RESULT{8}={PV,''};
+	  PV1=2;
+	  
+	  continue;
+    end
+  end
+  if PV1==2
+    continue;
+  end
+  gene.name 
+    
+   
+  
+  %adjust start and stop positions on the negative strand
+  if strcmp(gene.strand,'-') 
+    gene.start=gene.start+1;
+    gene.stop=gene.stop+1;
+    [reads11,reads12,intron11,intron12] = get_reads_dual2_intron(expr11_bam,expr12_bam,gene,samtools,false,10);
+    [reads11,FLAG]=remove_reads_from_other_genes(reads11,gene);
+    [reads12,FLAG]=remove_reads_from_other_genes(reads12,gene);
+    
+   
+    [reads21,reads22,intron21,intron22] = get_reads_dual2_intron(expr21_bam,expr22_bam,gene,samtools,false,10);
+    [reads21,FLAG]=remove_reads_from_other_genes(reads21,gene);
+    [reads22,FLAG]=remove_reads_from_other_genes(reads22,gene);
+    gene.start=gene.start-1;
+    gene.stop=gene.stop-1;
+  else
+    [reads11,reads12,intron11,intron12] = get_reads_dual2_intron(expr11_bam,expr12_bam,gene,samtools,false,10);
+    [reads11,FLAG]=remove_reads_from_other_genes(reads11,gene);
+    [reads12,FLAG]=remove_reads_from_other_genes(reads12,gene);
+    
+    [reads21,reads22,intron21,intron22] = get_reads_dual2_intron(expr21_bam,expr22_bam,gene,samtools,false,10);
+    [reads21,FLAG]=remove_reads_from_other_genes(reads21,gene);
+    [reads22,FLAG]=remove_reads_from_other_genes(reads22,gene);
+  end
+  
+  reads11=reads11(sum(reads11,2)>70,:);
+  reads12=reads12(sum(reads12,2)>70,:);
+  reads21=reads21(sum(reads21,2)>70,:);
+  reads22=reads22(sum(reads22,2)>70,:);
+  %% TEST with read cliping
+  
+  READS1={reads11,reads12};
+  READS2={reads21,reads22};
+  reads1=[reads11;reads12]; 
+  reads2=[reads21;reads22]; 
+	  
+  TOTAL_SIZE=(size(reads12,1)+size(reads12,1)+(size(reads21,1)+size(reads22,1)));
+  MIN_SIZE=min(size(reads12,1)+size(reads12,1),(size(reads21,1)+size(reads22,1)));
+  %keyboard
+  
+  CLIP=0;
+  if 1==0
+  if (size(reads1,1)>0)
+    for i=1:size(reads1,1)
+      reads1(i,find(reads1(i,:),2,'first'))=0;
+    end
+    for i=1:size(reads1,1)
+      reads1(i,find(reads1(i,:),2,'last'))=0;
+    end
+  end
+  if (size(reads2,1)>0)
+    for i=1:size(reads2,1)
+      reads2(i,find(reads2(i,:),2,'first'))=0;
+    end    
+    for i=1:size(reads2,1)
+      reads2(i,find(reads2(i,:),2,'last'))=0;
+    end
+  end
+  CLIP=4;
+  end
+  
+ % keybloard
+  %% END TEST
+  
+  COUNTER=3;  
+  FLAG=0;
+  for k=1:size(gene.transcripts,2)
+    if sum(gene.exons{k}(:,2)-gene.exons{k}(:,1))<75
+      FLAG=1;
+    end
+  end
+
+  if FLAG==1
+    RESULT{2}={'gene shorter than 75 bp'};
+    STAT{i}=RESULT;
+    continue
+  end
+ 
+  if 1==0
+      
+      for V_COUNTER=2%:length(CFG.VARIANCES1)
+          if (TOTAL_SIZE>0)
+              if(MIN_SIZE>0)
+                  PV=1;
+                  INFO='';
+                  [PV,INFO] =diff_mmd([reads11;reads12],[reads21;reads22],gene);
+                  PV
+                  RESULT{COUNTER}={PV,INFO};
+                  COUNTER=COUNTER+1;
+              else
+                  PV=1;
+                  RESULT{COUNTER}={PV,2};
+                  COUNTER=COUNTER+1;
+              end
+          else
+              PV=1;
+              RESULT{COUNTER}={PV,1};
+              COUNTER=COUNTER+1;
+          end
+      end 
+  end
+  % keyboard
+  
+  VAR_FACT=1;
+  COV_POS=1;
+  REWEIGHT=0;
+  if 1==1
+  for V_COUNTER=2%:length(CFG.VARIANCES1)
+      if (TOTAL_SIZE>0)
+          if(MIN_SIZE>0)
+              cen_ARR=0.1:0.1:1;
+              REWEIGHT_WEIGHTS=zeros(length( cen_ARR),size(reads1,2));
+              cen_count=1;
+              for censor_frac= cen_ARR
+                  %if strcmp(gene.name,'AT1G01073')
+                  %    keyboard
+                  %end 
+                  censor_frac
+                  temp_reads1=reads1;
+                  temp_reads2=reads2;
+                  %cut to relevant positions
+                  COVERAGE=sum(temp_reads1,1)+sum(temp_reads2,1); 
+                  NONZERO=COVERAGE>0;
+                  SORTED_COVERAGES=sort(COVERAGE(NONZERO));
+                  NR_OF_NONZERO=sum(NONZERO);
+                  CHOSEN_POSITIONS=COVERAGE<=SORTED_COVERAGES(ceil(NR_OF_NONZERO*censor_frac));
+                  REWEIGHT_WEIGHTS(cen_count,CHOSEN_POSITIONS)=1;
+                  cen_count=cen_count+1;
+                  %temp_reads1=temp_reads1(:,CHOSEN_POSITIONS);
+                  %temp_reads2=temp_reads2(:,CHOSEN_POSITIONS);
+                  %remove reads which have no coverage;
+                  %temp_reads1=temp_reads1(sum(temp_reads1,2)>0,:);
+                  %temp_reads2=temp_reads2(sum(temp_reads2,2)>0,:);
+                  %SIZE1=size(temp_reads1,1);
+                  %SIZE2=size(temp_reads2,1);
+                  %MIN_SIZE=min(SIZE1,SIZE2);
+                  %TOTAL_SIZE=SIZE1+SIZE2;
+              end
+              if (TOTAL_SIZE>0)
+                  if(MIN_SIZE>0)
+                      PV=1;
+                      INFO='';
+                      REWEIGHT=1;
+                      [PV,INFO] =diff_mmd_variance_subsample3({reads11,reads12},{reads21,reads22},gene,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER},1,1,REWEIGHT, REWEIGHT_WEIGHTS)
+                      RESULT{COUNTER}={PV,INFO};
+                      COUNTER=COUNTER+1;
+                  else
+                      PV=1;
+                      RESULT{COUNTER}={PV,2};
+                      COUNTER=COUNTER+1;
+                  end
+              else
+                  PV=1;
+                      RESULT{COUNTER}={PV,1};
+                      COUNTER=COUNTER+1;
+              end
+          end 
+      end
+  end
+  end
+
+  if 1==0  
+    VAR_FACT=1;
+    COV_POS=1;
+    REWEIGHT=0;
+    for V_COUNTER=2%:length(CFG.VARIANCES1)
+      for cov_fact_ix=1:length(COV_POS)
+	
+	if (TOTAL_SIZE>0)
+	  if(MIN_SIZE>0)
+	    PV=1;
+	    INFO='';
+	    [PV,INFO] =diff_mmd_variance_subsample2({reads11,reads12},{reads21,reads22},gene,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER},VAR_FACT(var_fact_ix),COV_POS,REWEIGHT);
+	    RESULT{COUNTER}={PV,INFO};
+	    COUNTER=COUNTER+1;
+	  else
+	    PV=1;
+	    RESULT{COUNTER}={PV,2};
+	    COUNTER=COUNTER+1;
+	  end
+	else
+	  PV=1;
+	  RESULT{COUNTER}={PV,1};
+	  COUNTER=COUNTER+1;
+	end
+      end 
+    end
+      
+    if 1==1
+      VAR_FACT=1;
+      COV_POS=1;
+      REWEIGHT=1;
+      for V_COUNTER=2%:length(CFG.VARIANCES1)
+	for var_fact_ix=1:length(VAR_FACT)
+	  
+	  if (TOTAL_SIZE>0)
+	    if(MIN_SIZE>0)
+	      PV=1;
+	      INFO='';
+	      [PV,INFO] =diff_mmd_variance_subsample2({reads11,reads12},{reads21,reads22},gene,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER},VAR_FACT(var_fact_ix),COV_POS,REWEIGHT)
+	      RESULT{COUNTER}={PV,INFO};
+	      COUNTER=COUNTER+1;
+	    else
+	      PV=1;
+	      RESULT{COUNTER}={PV,2};
+	      COUNTER=COUNTER+1;
+	    end
+	  else
+	    PV=1;
+	    RESULT{COUNTER}={PV,1};
+	    COUNTER=COUNTER+1;
+	  end
+	end 
+      end
+    end
+  end
+  
+  %keyboard
+  TOTAL_SIZE=(size(reads12,1)+size(reads12,1)+(size(reads21,1)+size(reads22,1)));
+  MIN_SIZE=min(size(reads12,1)+size(reads12,1),(size(reads21,1)+size(reads22,1)));
+  if 1==0
+    for V_COUNTER=1
+      if (TOTAL_SIZE>0)
+	if(MIN_SIZE>0)
+	  PV=1;
+	  INFO='';
+	  if isempty([intron11,intron12])|isempty([intron21,intron22])
+	    [PV,INFO] =diff_mmd_variance_NB_NB_simple([reads11;reads12],[reads21;reads22],gene,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER});  
+	  else	  
+	    [PV,INFO] =diff_mmd_variance_splice([reads11;reads12],[reads21;reads22],0.5,[intron11,intron12],[intron21,intron22],gene,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER});
+	  end
+	  RESULT{COUNTER}={PV,INFO};
+	  COUNTER=COUNTER+1;
+	else 
+	  PV=1;
+	  RESULT{COUNTER}={PV,2};
+	  COUNTER=COUNTER+1;
+	end
+      else
+	PV=1;
+	RESULT{COUNTER}={PV,1};
+	COUNTER=COUNTER+1;
+      end
+    end 
+  end
+  PV=1;
+  %keyboard
+  for V_COUNTER=length(CFG.VARIANCES1)
+    if (TOTAL_SIZE>0)
+
+      if(MIN_SIZE>0)   
+	[P_VALUE, INFO]= diff_nbin7(READS1,READS2,gene,SEQUENCED_LENGTH,CFG.VARIANCES1{V_COUNTER},CFG.VARIANCES2{V_COUNTER});
+  	RESULT{COUNTER}={P_VALUE,INFO};
+	if not(isempty(INFO))
+	  if iscell(INFO)
+	    RESULT{COUNTER}=INFO{5};
+	    COUNTER=COUNTER+1;
+	  end
+	end
+      else
+	PV=1;
+	RESULT{COUNTER}={PV,2};
+	COUNTER=COUNTER+1;
+      end
+    else
+      PV=1;
+      RESULT{COUNTER}={PV,1};
+      COUNTER=COUNTER+1;
+    end
+  end
+  
+
+  [SPLICINGEVENTS,SEQUENCE,EXONSEQUENCE]=splicingsequence(gene);
+  [UNIQUE_NEW_EXONS,GRAPHNODES,ORDER_OF_GRAPHNODE,EIRS_IN_SEQ]=transform_single_end_reads(SPLICINGEVENTS,SEQUENCE,EXONSEQUENCE,CFG.SEQUENCED_LENGTH-CLIP);
+  [NEW_READS1,UNEXPLAINED_READS1,UNEXPLAINED_INDEX1]= convert_reads_to_region_indicators([reads11;reads12],UNIQUE_NEW_EXONS,GRAPHNODES,ORDER_OF_GRAPHNODE,EIRS_IN_SEQ,gene);
+  [NEW_READS2,UNEXPLAINED_READS2,UNEXPLAINED_INDEX2]= convert_reads_to_region_indicators([reads21;reads22],UNIQUE_NEW_EXONS,GRAPHNODES,ORDER_OF_GRAPHNODE,EIRS_IN_SEQ,gene);
+ % keyboard
+  TOTAL_SIZE=(size(NEW_READS1,1)+(size(NEW_READS2,1)));
+  MIN_SIZE=min(size(NEW_READS1,1),(size(NEW_READS2,1)));
+
+  if (TOTAL_SIZE>0)
+    if(MIN_SIZE>0)
+      [PV,INFO] =  diff_poisson_bonf_3_unequal_segment(NEW_READS1,NEW_READS2,gene,CFG.SEQUENCED_LENGTH-CLIP);
+      RESULT{COUNTER}={PV,INFO};
+      COUNTER=COUNTER+1;
+    else
+      PV=1;
+      RESULT{COUNTER}={PV,2};
+      COUNTER=COUNTER+1;
+    end
+  else
+    PV=1;
+    RESULT{COUNTER}={PV,1};
+    COUNTER=COUNTER+1;
+  end
+  PV=1
+  if 1==0
+  if (TOTAL_SIZE>0)
+      if(MIN_SIZE>0)
+      [PV,INFO] =  diff_poisson_bonf_4_unequal_segment(NEW_READS1,NEW_READS2,gene,CFG.SEQUENCED_LENGTH-CLIP);
+      RESULT{COUNTER}={PV,INFO};
+      COUNTER=COUNTER+1;
+    else
+      PV=1;
+      RESULT{COUNTER}={PV,2};
+      COUNTER=COUNTER+1;
+    end
+  else
+    PV=1;
+    RESULT{COUNTER}={PV,1};
+    COUNTER=COUNTER+1;
+  end
+  %keyboard
+  end
+  STAT{i}=RESULT;
+  
+end;
+%keyboard
+OUT_FILENAME=['/fml/ag-raetsch/home/drewe/svn/projects/RNASeq/difftest/out/analysis_artificial_variance_03_08_2012/' SUFF_NAME '_rep_mmd_07_07_2012_' int2str(JB_NR)   '.mat'];
+save(OUT_FILENAME,'STAT')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/set_rdiff_paths.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,29 @@
+function [rDiff_paths] = set_rdiff_paths()
+% [difftest_paths] = set_rdiff_paths()
+
+%Initialize rDiff_paths
+rDiff_paths='';
+
+%get the path to the source files
+BASEPATH_SRC=getenv('RDIFF_SRC_PATH');
+
+%Determine interpreter
+if size(ver('Octave'),1)
+    INTERPR = 1;
+else
+    INTERPR = 0;
+end
+
+
+%Add paths to rDiff_paths
+if INTERPR
+    rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/octave/']];
+end
+rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/../mex/']];
+rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/tests/']];
+rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/tools/']];
+rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/tools/read_utils/']];
+rDiff_paths=[rDiff_paths ':' [BASEPATH_SRC '/variance/']];
+rDiff_paths=[rDiff_paths ':' genpath([BASEPATH_SRC '/locfit/'])];
+addpath(rDiff_paths);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/calcl_nbin_pdf.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,11 @@
+function [RET]=calcl_nbin_pdf(VAL,R,P)
+%uses formula used by matlab for compatability
+
+RET=zeros(size(VAL,1),size(VAL,2));
+IDX=VAL==round(VAL);
+%RET(IDX) = exp(gammaln(R+VAL(IDX))-gammaln(VAL(IDX)+1)-gammaln(R)+R*log(P)+VAL(IDX)*log1p(-P));
+
+
+nk = (gammaln(R + VAL(IDX)) - gammaln(VAL(IDX) + 1) - gammaln(R));
+RET(IDX) = nk + (R.*log(P)) + (VAL(IDX).*log(1 - P));
+RET(IDX) = exp(RET(IDX));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/comp_nbin_p_value_mean_variance.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,31 @@
+function [P_VALUE,FLAG_ERR]=comp_nbin_p_value_mean_variance(MEAN1,MEAN2,SIGMA1,SIGMA2,COUNTS1,COUNTS2)
+%This function computes the p_value for a negative binomial
+%hypothesis test given the mean and variance of two nbin
+%distributions and counts from the respective distributions
+
+  FLAG_ERR=0;
+  r1=(MEAN1^2)/(SIGMA1-MEAN1);
+  p1=1-(MEAN1/(SIGMA1));
+  r2=(MEAN2^2)/(SIGMA2-MEAN2);
+  p2=1-(MEAN2/(SIGMA2));
+  
+  P_OBS=calcl_nbin_pdf(COUNTS1,r1,1-p1)*calcl_nbin_pdf(COUNTS2,r2,1-p2);
+  
+  
+  P_A=calcl_nbin_pdf(0:(COUNTS1+COUNTS2),r1,1-p1);
+  P_B=calcl_nbin_pdf((COUNTS1+COUNTS2):(-1):0,r2,1-p2);
+  P_COMB=sort(P_A.*P_B);
+
+  if sum(P_COMB)>0
+    POS= find(P_COMB<=P_OBS,1,'last');
+    if isempty(POS)
+      P_VALUE=min(P_COMB);
+    else
+      P_VALUE=sum(P_COMB(1:POS))/sum(P_COMB);
+    end
+  else
+    P_VALUE=1;
+  end
+  
+  
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/get_mean_variance_seg.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,41 @@
+function [COMB_MEAN,COMB_VARIANCE]=get_mean_variance_seg(gene_expression_1,gene_expression_2,region_counts_1,region_counts_2,variance_function_parametric_1, variance_function_parametric_2)
+
+
+COMB_READS_PER_EXON=[region_counts_1;region_counts_2];
+GENE_EXPRESSION=[gene_expression_1';gene_expression_2'];
+IX_SAMPLE1=1:length(gene_expression_1);
+IX_SAMPLE2=(1+length(gene_expression_1)):(length(gene_expression_1)+length(gene_expression_2));
+  
+COMB_VARIANCE=[];
+COMB_MEAN=[];
+for i=1:size(region_counts_1,2)
+    INTEN1=region_counts_1(:,i);
+    INTEN2=region_counts_2(:,i);
+    INTENSITY=[INTEN1;INTEN2];
+    
+    SR_VECT=GENE_EXPRESSION;
+    
+    %Are there any counts at all in the region?
+    if sum(INTENSITY)>0
+        %Compute the means under the null hypothesis
+        Q=(INTENSITY./SR_VECT)/sum(SR_VECT>0);
+        
+        if sum(isnan(SR_VECT))
+            MEAN1=0;
+            MEAN2=0;
+        else
+            MEAN1=mean(sum(Q)*SR_VECT(IX_SAMPLE1));
+            MEAN2=mean(sum(Q)*SR_VECT(IX_SAMPLE2));
+        end
+        
+        COMB_MEAN=[COMB_MEAN,[MEAN1;MEAN2]];
+    else
+        COMB_MEAN=[COMB_MEAN,[0;0]];
+    end
+    
+end
+
+VARIANCE1= predict_variance(COMB_MEAN(1,:)',variance_function_parametric_1)';
+VARIANCE2= predict_variance(COMB_MEAN(2,:)',variance_function_parametric_2)';
+
+COMB_VARIANCE=[VARIANCE1;VARIANCE2];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/get_nonparametric_masks.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,24 @@
+function [MASKS]=get_nonparametric_masks(CFG,reads1,reads2)
+
+%What fracitons should be choosen for the cutoff
+cen_arr=0.1:0.1:1;
+
+% Define the mask which should be used in order to mask high
+% expresse genes
+MASKS=zeros(length(cen_arr),size(reads1,2));
+
+COUNTER=1;
+for censor_frac= cen_arr  
+    temp_reads1=reads1;
+    temp_reads2=reads2;
+    %cut to relvant position
+    read_coverage=sum(reads1,1)+sum(reads2,1); 
+    % get positions with a positive coverage
+    nonzero_position=read_coverage>0;
+    %Determine the cutoff values
+    sorted_coverage=sort(read_coverage(nonzero_position));
+    nr_of_nonzero_positions=sum(nonzero_position);
+    relevant_positions=read_coverage<=sorted_coverage(ceil(nr_of_nonzero_positions*censor_frac));
+    MASKS(COUNTER,relevant_positions)=1;
+    COUNTER=COUNTER+1;
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/rDiff_mmd.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,48 @@
+function [pval,info] = rDiff_mmd(CFG,reads1,reads2)
+% simple application of mmd to test for differential distributions
+% of reads1, reads2
+% reads1: N1 x L
+% reads2: N2 x L
+
+
+bootstraps=CFG.bootstraps;
+
+
+% ensure reads are sparse and remove zero collumns
+%reads1temp = sparse(reads1(:,sum([reads1;reads2],1)>0));
+%reads2 = sparse(reads2(:,sum([reads1;reads2],1)>0));
+%reads1=reads1temp;
+
+statistic = eucl_dist(mean(reads1,1),mean(reads2,1))^2;
+
+allreads = [reads1;reads2];
+
+N1 = size(reads1,1);
+N2 = size(reads2,1);
+N = N1 + N2;
+
+ 
+%Use the transpose to make the selection of columms faster
+all_reads_trans=allreads';
+
+%bootstraping
+for i = 1:bootstraps
+
+  r = randperm(N);
+  
+  sample1 = all_reads_trans(:,r(1:N1));
+  sample2 = all_reads_trans(:,r(N1+1:N));
+  
+  bootstrap_results(i) = eucl_dist(mean(sample1,2), mean(sample2,2))^2;
+   
+end
+
+%Calculate the p-value
+pval =  min(1,double(1+sum(bootstrap_results >= statistic)) / bootstraps);
+info = [];
+
+
+
+function result = eucl_dist(A,B)
+
+result = sqrt(sum( (A - B) .^ 2 ));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/rDiff_nonparametric.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,222 @@
+function [pval,info] = rDiff_nonparametric(CFG,READS1,READS2,variance_function_nonparametric_1, variance_function_nonparametric_2)
+
+bootstraps=CFG.bootstraps;
+
+%Initizialize the reads
+SUMS1=[]; %the readcoverage for sample 1
+SUMS2=[]; %the readcoverage for sample 2
+reads1=[]; %the total of reads in sample 1
+reads2=[]; %the total of reads in sample 2
+NON_EMPTY=[];
+for i=1:length(READS1)
+  if not(isempty(READS1{i}))
+    NON_EMPTY=[NON_EMPTY,i];
+  end
+end
+READS1={READS1{ NON_EMPTY}};
+NON_EMPTY=[];
+for i=1:length(READS2)
+  if not(isempty(READS2{i}))
+    NON_EMPTY=[NON_EMPTY,i];
+  end
+end
+READS2={READS2{NON_EMPTY}};
+for i=1:length(READS1)
+  SUMS1=[SUMS1;sum(READS1{i},1)];
+  reads1=[reads1;READS1{i}];
+end
+for i=1:length(READS2)
+  SUMS2=[SUMS2;sum(READS2{i},1)];
+  reads2=[reads2;READS2{i}];
+end
+
+if size(reads1,1)==0 || size(reads2,1)==0
+  pval=1;
+  info=1;
+  bootstrap_results=1;
+  statistic=1;
+  return
+end
+
+
+%Get masks for the highly covered positions
+[MASKS]=get_nonparametric_masks(CFG,reads1,reads2);
+
+
+%Determine number of masks
+NR_OF_MASKS=size(MASKS,1);
+
+% Predict variance
+VARIANCE1=(1e-8)*ones(size(reads1,2),1);
+for i=1:length(READS1)
+    TEMP_VARIANCE1=predict_variance(sum(READS1{i},1)',variance_function_nonparametric_1);
+    TEMP_VARIANCE1(isnan(TEMP_VARIANCE1))=0;
+    TEMP_VARIANCE1(isinf(TEMP_VARIANCE1))=0;
+    VARIANCE1=VARIANCE1+TEMP_VARIANCE1;
+end
+
+VARIANCE2=(1e-8)*ones(size(reads1,2),1);
+for i=1:length(READS2)
+    TEMP_VARIANCE2=predict_variance(sum(READS2{i},1)',variance_function_nonparametric_2);
+    TEMP_VARIANCE2(isnan(TEMP_VARIANCE2))=0;
+    TEMP_VARIANCE2(isinf(TEMP_VARIANCE2))=0;
+    VARIANCE2=VARIANCE2+TEMP_VARIANCE2;
+end
+
+%Get the mean variance
+VARIANCE1=VARIANCE1/length(READS1);
+VARIANCE2=VARIANCE2/length(READS2);
+
+%Concatenation of all reads
+allreads = [reads1;reads2];
+
+
+%Determine the subsampling rate
+p=sum(allreads,1)/size(allreads,1);
+R=size(reads1,1);
+c=(p.*(1-p))/(size(allreads,1)-1);
+N1s=size(allreads,1)*c./(c+(VARIANCE1'/(R^2)));
+
+p=sum(allreads,1)/size(allreads,1);
+R=size(reads2,1);
+c=(p.*(1-p))/(size(allreads,1)-1);
+N2s=size(allreads,1)*c./(c+(VARIANCE2'/(R^2)));
+
+%Round to get integer values
+N1s=ceil(full(N1s));
+N2s=ceil(full(N2s));
+
+
+%Total number of reads in each replicate
+N1 = size(reads1,1);
+N2 = size(reads2,1);
+N = N1 + N2;
+
+
+bootstrap_results=ones(NR_OF_MASKS,bootstraps);
+COUNTER=0;
+R1s=[];
+R2s=[];
+statistic=ones(NR_OF_MASKS,bootstraps);
+nr_of_slices=CFG.nr_of_slices;
+
+TOTAL_SUM1=sum(reads1,1);
+TOTAL_SUM2=sum(reads2,1);
+TOTAL_SUM=TOTAL_SUM1+TOTAL_SUM2;
+
+clear reads1
+clear reads2
+%Use the transpose to make the selection of columms faster
+all_reads_trans=allreads';
+clear allreads
+if length(unique(TOTAL_SUM))<nr_of_slices+5
+    pval=1;
+    bootstrap_results=[];
+    statistic=[];
+    pval=1;
+    info = 1;
+    return
+end
+
+[SUM_SORTED,SUM_POS]=sort(TOTAL_SUM);
+NR_OF_ZEROS=sum(TOTAL_SUM==0);
+
+%precompute this sum once 
+all_reads_trans_row_sum=sum(all_reads_trans,1);
+
+%These field contain
+STAT_DIST=zeros(NR_OF_MASKS,nr_of_slices);
+TEMP_DIST=zeros(1,nr_of_slices);
+
+%Precompute normalizing constants
+SUM_TOTAL_SUM1=sum(TOTAL_SUM1);
+SUM_TOTAL_SUM2=sum(TOTAL_SUM2);
+SUM_SUM_TOTAL_SUM=SUM_TOTAL_SUM1+SUM_TOTAL_SUM2;
+
+%Precompute the some of the values or the slices
+SLICES=zeros(nr_of_slices,size(TOTAL_SUM,2))==1;
+N1_arr=zeros(nr_of_slices,1);
+N2_arr=zeros(nr_of_slices,1);
+FACT_arr=zeros(nr_of_slices,1);
+V1_cell=cell(nr_of_slices,1);
+V2_cell=cell(nr_of_slices,1);
+
+%Detemine regions wher to match the variances
+for s=nr_of_slices:(-1):1
+        LOWER_POS=min(NR_OF_ZEROS+ceil(((nr_of_slices-s)/nr_of_slices)*(length(TOTAL_SUM)-NR_OF_ZEROS))+1,length(TOTAL_SUM));
+        UPPER_POS=min(NR_OF_ZEROS+ceil(((nr_of_slices-s+1)/nr_of_slices)*(length(TOTAL_SUM)-NR_OF_ZEROS))+1,length(TOTAL_SUM));
+        
+        SLICE_LOWER_BOUND=SUM_SORTED(LOWER_POS);
+        SLICE_UPPER_BOUND=SUM_SORTED(UPPER_POS);
+        if s==nr_of_slices
+	  SLICE=and(TOTAL_SUM>=SLICE_LOWER_BOUND,TOTAL_SUM<=SLICE_UPPER_BOUND);
+	else
+	  SLICE=and(TOTAL_SUM>SLICE_LOWER_BOUND,TOTAL_SUM<=SLICE_UPPER_BOUND);
+        end
+	SLICES(s,:)=SLICE;
+        
+        N1s_temp=ceil(median(N1s(SLICE)));
+        N2s_temp=ceil(median(N2s(SLICE)));
+        N1s_temp=min(N1s_temp,N1);
+        N2s_temp=min(N2s_temp,N2);
+        
+        N1_arr(s)=N1s_temp;
+        N2_arr(s)=N2s_temp;
+        
+        FACT_arr(s)=sum(TOTAL_SUM1(SLICE)+TOTAL_SUM2(SLICE))/(SUM_SUM_TOTAL_SUM);
+        
+        V1_cell{s}=TOTAL_SUM1(SLICE)/SUM_TOTAL_SUM1;%temporary variable to safe time
+        V2_cell{s}=TOTAL_SUM2(SLICE)/SUM_TOTAL_SUM2;%temporary variable to safe time
+        for mask_ix=1:NR_OF_MASKS
+            STAT_DIST(mask_ix,s)=eucl_dist_weigthed(V1_cell{s},V2_cell{s},MASKS(mask_ix,SLICES(s,:)));
+        end
+end
+SUM_SLICES=sum(SLICES,2);
+STAT_DIST(isnan(TEMP_DIST))=0;
+all_reads_trans_slices=cell(nr_of_slices,1);
+for s=nr_of_slices:(-1):1
+    all_reads_trans_slices{s}=all_reads_trans(SLICES(s,:),:);
+end
+
+for i = 1:bootstraps
+    % permutation of the reads
+    read_per = randperm(N);
+     
+    %Peform the computation for each region where the variances are matched
+    for s=nr_of_slices:(-1):1
+        if SUM_SLICES(s)==0;
+            continue;
+        end 
+	%Create random samples 1 and 2
+        sample1 = sum(all_reads_trans_slices{s}(:,read_per(1:N1_arr(s))),2);
+        sample2 = sum(all_reads_trans_slices{s}(:,read_per((N1_arr(s)+1):(N1_arr(s)+N2_arr(s)))),2);
+        
+        W1=sample1/sum(sample1)*FACT_arr(s);%temporary variable to safe time
+        W2=sample2/sum(sample2)*FACT_arr(s);%temporary variable to safe time
+       
+        for mask_ix=1:NR_OF_MASKS
+            TEMP_DIST(mask_ix,s)=eucl_dist_weigthed(W1,W2,MASKS(mask_ix,SLICES(s,:))');
+        end
+        
+    end 
+    
+    %make sure the normalisation doe not intruduces nan's
+    TEMP_DIST(isnan(TEMP_DIST))=0;
+   
+    COUNTER=COUNTER+1;  
+    %Compute the average from the different matching regionon
+    statistic(:,COUNTER)=mean(STAT_DIST,2);
+    bootstrap_results(:,COUNTER)=mean(TEMP_DIST,2);
+end
+
+bootstrap_results=bootstrap_results(:,1:COUNTER);
+statistic=statistic(:,1:COUNTER);
+
+pval=double(sum(bootstrap_results>=statistic,2)) / COUNTER;
+
+info = {bootstrap_results,statistic,pval};
+pval=min(pval)*10;
+
+function result = eucl_dist_weigthed(A,B,W)
+
+result = sqrt(sum( W.*((A - B) .^ 2) ));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/rDiff_parametric.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,82 @@
+function [P_VALUE, RET_STRUCT]= rDiff_parametric(CFG,gene,Counts_rDiff_parametric,Gene_expression,variance_function_parametric_1, variance_function_parametric_2)
+ 
+% Calculates the p-Values of a negative binomial test on each
+% alternative regions and combines the p-values using Bonferroni's correction
+
+
+%Initialize gene.name
+NR_OF_TRANS=size(gene.transcripts,2);
+if NR_OF_TRANS<=1
+  RET_STRUCT='NR_OF_TRANS too small';
+  P_VALUE=1;
+  return
+end
+
+
+%get the samples that are expressed (have more than 10 reads)
+TEMP_SAMPLE1=and(CFG.SAMPLES==1,Gene_expression>=10);
+TEMP_SAMPLE2=and(CFG.SAMPLES==2,Gene_expression>=10);
+SAMPLE1=find(TEMP_SAMPLE1);
+SAMPLE2=find(TEMP_SAMPLE2);
+
+%Check wether Counts_rDiff_parametric is nonempty
+for j=1:length(TEMP_SAMPLE1)
+  TEMP_SAMPLE1(j)=and(not(isempty(Counts_rDiff_parametric{j})),TEMP_SAMPLE1(j));
+end
+for j=1:length(TEMP_SAMPLE2)
+  TEMP_SAMPLE2(j)=and(not(isempty(Counts_rDiff_parametric{j})),TEMP_SAMPLE2(j));
+end
+
+SAMPLE1=find(TEMP_SAMPLE1);
+SAMPLE2=find(TEMP_SAMPLE2);
+
+
+SAMPLE_LENGTH1=length(SAMPLE1);
+SAMPLE_LENGTH2=length(SAMPLE2);
+
+if min(SAMPLE_LENGTH1,SAMPLE_LENGTH2)==0
+    RET_STRUCT='SAMPLE_LENGTH too small';
+    P_VALUE=1;
+    return
+end
+ 
+% Get the region counts
+region_counts_1=zeros(SAMPLE_LENGTH1,length(Counts_rDiff_parametric{1,1}));
+for j=1:SAMPLE_LENGTH1
+    region_counts_1(j,:)=Counts_rDiff_parametric{1,SAMPLE1(j)};
+end
+region_counts_2=zeros(SAMPLE_LENGTH2,length(Counts_rDiff_parametric{1,1}));
+for j=1:SAMPLE_LENGTH2
+    region_counts_2(j,:)=Counts_rDiff_parametric{1,SAMPLE2(j)};
+end
+
+% Get the gene expression
+gene_expression_1=Gene_expression(SAMPLE1);
+gene_expression_2=Gene_expression(SAMPLE2);
+
+% compute the expected mean and the variance under the null
+% hypothesis
+[EXPECTED_MEAN,EXPECTED_VARIANCE]=get_mean_variance_seg(gene_expression_1,gene_expression_2,region_counts_1,region_counts_2,variance_function_parametric_1, variance_function_parametric_2);
+
+%compute the p-values
+OBSERVED_COUNTS=round([mean(region_counts_1,1);mean(region_counts_2,1)]);
+
+P_LIST=ones(1,size(EXPECTED_MEAN,2));
+%Iterate over the regions
+SKIPPED_TESTS=0;
+for i=1:length(P_LIST)
+    if sum(OBSERVED_COUNTS(:,i))==0
+        SKIPPED_TESTS=SKIPPED_TESTS+1;
+        continue
+    end
+    
+    [P_VALUE,FL]=comp_nbin_p_value_mean_variance(EXPECTED_MEAN(1,i),EXPECTED_MEAN(2,i),EXPECTED_VARIANCE(1,i),EXPECTED_VARIANCE(2,i),OBSERVED_COUNTS(1,i),OBSERVED_COUNTS(2,i));
+    P_LIST(i)=P_VALUE;
+end
+if length(P_LIST)-SKIPPED_TESTS<=0
+  P_VALUE=1;
+else
+  P_VALUE=min(P_LIST)*(length(P_LIST)-SKIPPED_TESTS);
+end
+RET_STRUCT={};
+return
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tests/rDiff_poisson.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,96 @@
+function [P_VALUE, RET_STRUCT]= rDiff_poisson(CFG,gene,Counts_rDiff_parametric,Gene_expression)
+
+% Calculates the p-Values of a poisson test on each
+% alternative regions and combines the p-values using Bonferroni's correction
+
+
+%Initialize gene.name
+NR_OF_TRANS=size(gene.transcripts,2);
+if NR_OF_TRANS<=1
+    RET_STRUCT='NR_OF_TRANS too small';
+    P_VALUE=1;
+    return
+end
+
+
+%get the samples that are expressed (have more than 10 reads)
+TEMP_SAMPLE1=and(CFG.SAMPLES==1,Gene_expression>=10);
+TEMP_SAMPLE2=and(CFG.SAMPLES==2,Gene_expression>=10);
+SAMPLE1=find(TEMP_SAMPLE1);
+SAMPLE2=find(TEMP_SAMPLE2);
+
+%Check wether Counts_rDiff_parametric is nonempty
+for j=1:length(TEMP_SAMPLE1)
+  TEMP_SAMPLE1(j)=and(not(isempty(Counts_rDiff_parametric{j})), ...
+		      TEMP_SAMPLE1(j));
+end
+for j=1:length(TEMP_SAMPLE2)
+  TEMP_SAMPLE2(j)=and(not(isempty(Counts_rDiff_parametric{j})), ...
+		      TEMP_SAMPLE2(j));
+end
+
+SAMPLE1=find(TEMP_SAMPLE1);
+SAMPLE2=find(TEMP_SAMPLE2);
+
+
+
+SAMPLE_LENGTH1=length(SAMPLE1);
+SAMPLE_LENGTH2=length(SAMPLE2);
+
+if min(SAMPLE_LENGTH1,SAMPLE_LENGTH2)==0
+    RET_STRUCT='SAMPLE_LENGTH too small';
+    P_VALUE=1;
+    return
+end
+ 
+% Get the region counts
+region_counts_1=zeros(SAMPLE_LENGTH1,length(Counts_rDiff_parametric{1,1}));
+for j=1:SAMPLE_LENGTH1
+    region_counts_1(j,:)=Counts_rDiff_parametric{1,SAMPLE1(j)};
+end
+region_counts_2=zeros(SAMPLE_LENGTH2,length(Counts_rDiff_parametric{1,1}));
+for j=1:SAMPLE_LENGTH2
+    region_counts_2(j,:)=Counts_rDiff_parametric{1,SAMPLE2(j)};
+end
+
+% Get the gene expression
+gene_expression_1=sum(Gene_expression(SAMPLE1));
+gene_expression_2=sum(Gene_expression(SAMPLE2));
+
+%compute the p-values
+OBSERVED_COUNTS=[sum(region_counts_1,1);sum(region_counts_2,1)];
+TOTAL_COUNTS=sum(OBSERVED_COUNTS,1);
+
+%calculate gene expression ratio
+LAMBDA=gene_expression_1/(gene_expression_2+gene_expression_1);
+
+
+P_LIST=ones(1,size(TOTAL_COUNTS,2));
+%Iterate over the regions
+SKIPPED_TESTS=0;
+for i=1:length(P_LIST)
+    if sum(TOTAL_COUNTS(i))==0
+        SKIPPED_TESTS=SKIPPED_TESTS+1;
+        continue
+    end
+    
+    MEAN=LAMBDA*TOTAL_COUNTS(i);
+    VARIANCE=(TOTAL_COUNTS(i)*LAMBDA*(1-LAMBDA)).^0.5;      
+    Y=sum(((MEAN-OBSERVED_COUNTS(1,i))./VARIANCE).^2).^0.5;
+    
+    %Calculate the p-value
+    P_VALUE=1-gammainc((Y^2)/2,1/2);
+    
+    P_LIST(i)=P_VALUE;
+end
+if length(P_LIST)-SKIPPED_TESTS<=0
+  P_VALUE=1;
+else
+  P_VALUE=min(P_LIST)*(length(P_LIST)-SKIPPED_TESTS);
+end
+
+RET_STRUCT={};
+return
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/compute_testing_region.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,17 @@
+function [genes]=compute_testing_region(CFG,genes)
+
+%Iterate over gene
+
+for i=1:size(genes,2)
+    [SPLICINGEVENTS,SEQUENCE,EXONSEQUENCE]=splicingsequence(genes(i));
+    genes(i).splicingevents=SPLICINGEVENTS;
+    genes(i).sequence=SEQUENCE;
+    genes(i).exonsequence=EXONSEQUENCE;
+    
+    [UNIQUE_NEW_EXONS,GRAPHNODES,ORDER_OF_GRAPHNODE,EIRS_IN_SEQ]=transform_single_end_reads(genes(i),CFG.sequenced_length-CFG.bases_to_clip*2);
+    genes(i).unique_new_exons=UNIQUE_NEW_EXONS;
+    genes(i).graphnodes=GRAPHNODES;
+    genes(i).order_of_graphnodes=ORDER_OF_GRAPHNODE;
+    genes(i).eirs_in_seq=EIRS_IN_SEQ;
+ 
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/convert_reads_to_region_indicators.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,36 @@
+function [NEW_READS,UNEXPLAINED_READS,UNEXPLAINED_INDEX] = convert_reads_to_region_indicators(READS, gene)
+% Convert the reads into counts of EIRS 
+
+%UNEXPLAINED_REGIONS
+UNEXPLAINED_REGIONS = 1:(length(gene.splicingevents) - 1);
+UNEXPLAINED_REGIONS(gene.sequence == 0);
+
+%Extend GRAPHNODES to also include introns
+EXT_GRAPHNODES = zeros(size(gene.graphnodes,1), length(gene.splicingevents) - 1);
+EXT_GRAPHNODES(:, gene.unique_new_exons) = gene.graphnodes;
+% This puts gene.graphnodes into the exonic positions of EXT_GRAPHNODES
+
+%Mark for each read into which region it falls
+TEMP_READS = sparse(zeros(size(READS,1), length(gene.splicingevents) - 1));
+for i = 1:(length(gene.splicingevents) - 1)
+  TEMP_READS(:,i) = sum(READS(:, gene.splicingevents(i):(gene.splicingevents(i + 1) - 1)), 2) > 0;
+end
+
+%UNEXPLAINED_INDEX = (((sum(EXT_GRAPHNODES,1) == 0) * TEMP_READS1') > 0);
+UNEXPLAINED_INDEX = ((( gene.sequence== 0) * TEMP_READS') > 0);
+UNEXPLAINED_READS = TEMP_READS(UNEXPLAINED_INDEX,:);
+
+TEMP_READS = TEMP_READS(not(UNEXPLAINED_INDEX),:);
+
+%find the row of EXT_GRAPHNODES minimizing the mismatch between the rows of EXT_GRAPHNODES
+%and the reads
+%[MAX_VAL,MAX_NODE] = max( (1+diag(1./sum(EXT_GRAPHNODES,2))) * (EXT_GRAPHNODES * TEMP_READS'),[],1);
+[MAX_VAL,MAX_NODE] = max(EXT_GRAPHNODES*TEMP_READS'+diag(1./sum(EXT_GRAPHNODES,2))*EXT_GRAPHNODES*TEMP_READS',[],1);
+
+%Create sparse read matrix
+NEW_READS = spconvert([[1,1,1; size(EXT_GRAPHNODES,1),2,1]; [MAX_NODE',(3:(length(MAX_NODE)+2))', ones(size(MAX_VAL))']])';
+NEW_READS = NEW_READS(3:end,:);
+
+
+return
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/detect_overlapping_regions.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,83 @@
+function [new_genes]=detect_overlapping_regions(genes);
+% this function determines regions in a gene which overlapp with
+% other genes. Those regons are then saved in the field "non_unique_regions"
+
+CHROMOSOMES={};
+COUNTER=1;
+for i=1:size(genes,2)
+  CHROMOSOMES{COUNTER}=genes(i).chr;
+  COUNTER=COUNTER+1;
+end
+CHROMOSOMES=unique(CHROMOSOMES);
+
+
+INFO=zeros(size(genes,2),4);
+for i=1:size(genes,2)
+  CHR_VAL=0;
+  for chr= 1:length(CHROMOSOMES)	
+    if  strcmp(genes(i).chr,CHROMOSOMES(chr))
+      CHR_VAL=chr;
+    end
+  end	
+  INFO(i,:)=[i,genes(i).start,genes(i).stop, CHR_VAL];
+end
+
+COUNTER=1;
+new_genes=genes;
+for chr= 1:length(CHROMOSOMES)	
+  GENES_ON_CHR=INFO(INFO(:,4)==chr,:);
+  [TEMP,POS]=sort(GENES_ON_CHR(:,2));
+  GENES_ON_CHR=GENES_ON_CHR(POS,:);
+  STARTS=GENES_ON_CHR(:,2);
+  STOPS=GENES_ON_CHR(:,3);
+  for i=1:(size(GENES_ON_CHR,1))
+    MIN_START=find(STOPS>=STARTS(i),1,'first');
+    MAX_STOP=find(STARTS<=STOPS(i),1,'last');
+    if MIN_START==i
+      MIN_START=[];
+    end
+    if MAX_STOP==i
+      MAX_STOP=[];
+    end
+    EXONS=[];
+    if not (isempty(MIN_START))
+      for CURR=MIN_START:(i-1)
+	if(not(isempty(genes(GENES_ON_CHR(CURR,1)).transcripts)))
+	  for tra=1:size(genes(GENES_ON_CHR(CURR,1)).transcripts,2)
+	    if(not(isempty(genes(GENES_ON_CHR(CURR,1)).exons)))
+	      EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).exons{tra}];
+	    else
+	      EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).start,genes(GENES_ON_CHR(CURR,1)).stop];
+	    end	  
+	  end
+	else
+	  EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).start,genes(GENES_ON_CHR(CURR,1)).stop];
+	end	  
+      end
+    end
+    if not (isempty(MAX_STOP))
+      for CURR=(i+1):MAX_STOP
+	if(not(isempty(genes(GENES_ON_CHR(CURR,1)).transcripts)))
+	  for tra=1:size(genes(GENES_ON_CHR(CURR,1)).transcripts,2)
+	    if(not(isempty(genes(GENES_ON_CHR(CURR,1)).exons)))
+	      EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).exons{tra}];
+	    else
+	      EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).start,genes(GENES_ON_CHR(CURR,1)).stop];	    
+	    end
+	  end
+	else
+	  EXONS=[EXONS;genes(GENES_ON_CHR(CURR,1)).start,genes(GENES_ON_CHR(CURR,1)).stop];
+	end
+	
+      end
+    end
+    if  not (isempty([MAX_STOP,MIN_START]))
+      EXONS=EXONS(EXONS(:,2)>=STARTS(i),:);
+      EXONS=EXONS(EXONS(:,1)<=STOPS(i),:);
+      new_genes(GENES_ON_CHR(i,1)).non_unique_regions=EXONS;    
+    else
+        new_genes(GENES_ON_CHR(i,1)).non_unique_regions=[];    
+    end
+  end
+  COUNTER=COUNTER+1;
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/intersect.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,67 @@
+%## Copyright (C) 2000-2012 Paul Kienzle
+%## Copyright (C) 2008-2009 Jaroslav Hajek
+%##
+%## This file is part of Octave.
+%##
+%## Octave is free software; you can redistribute it and/or modify it
+%## under the terms of the GNU General Public License as published by
+%## the Free Software Foundation; either version 3 of the License, or (at
+%## your option) any later version.
+%##
+%## Octave is distributed in the hope that it will be useful, but
+%## WITHOUT ANY WARRANTY; without even the implied warranty of
+%## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the ...
+%    GNU
+%## General Public License for more details.
+%##
+%## You should have received a copy of the GNU General Public ...
+%    License
+%## along with Octave; see the file COPYING.  If not, see
+%## <http://www.gnu.org/licenses/>.
+
+function [c, ia, ib] = intersect (a, b, varargin)
+
+if (nargin < 2 || nargin > 3)
+  print_usage ();
+end
+
+
+if (isempty (a) || isempty (b))
+  c = ia = ib = [];
+else
+  ## form a and b into sets
+  if (nargout > 1)
+    [a, ja] = unique (a, varargin{:});
+    [b, jb] = unique (b, varargin{:});
+  else
+    a = unique (a, varargin{:});
+    b = unique (b, varargin{:});
+  end
+  
+  if (nargin > 2)
+    c = [a; b];
+    [c, ic] = sortrows (c);
+    ii = find (all (c(1:end-1,:) == c(2:end,:), 2));
+    c = c(ii,:);
+    len_a = rows (a);
+  else
+    c = [a(:); b(:)];
+    [c, ic] = sort (c);               ## [a(:);b(:)](ic) == c
+    if (iscellstr (c))
+      ii = find (strcmp (c(1:end-1), c(2:end)));
+    else
+      ii = find (c(1:end-1) == c(2:end));
+    end
+    c = c(ii);
+    len_a = length (a);
+  end
+  
+  if (nargout > 1)
+    ia = ja(ic(ii));                  ## a(ia) == c
+    ib = jb(ic(ii+1) - len_a);        ## b(ib) == c
+  end
+  
+  if (nargin == 2 && (size (b, 1) == 1 || size (a, 1) == 1))
+    c = c.';
+  end
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/clip_reads.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,19 @@
+function [reads1]=clip_reads(reads1,CLIP_NUCL)
+% This function clips the first CLIP_NUCL bases from reads1
+if or(size(reads1,1)==0,size(reads1,2)==0)
+  return
+end
+
+for C_ITER=1:CLIP_NUCL
+  %Clip the first bases
+  [TEMP,FIRST_VECT]=max(reads1,[],2);
+  FIRST_MASK=sparse((1:length(FIRST_VECT))',FIRST_VECT,ones(length(FIRST_VECT),1),size(reads1,1),size(reads1,2));
+  reads1(FIRST_MASK>0)=0;
+  
+  %Clip the last bases 
+  [TEMP,FIRST_VECT]=max(reads1(:,end:(-1):1),[],2);
+  FIRST_VECT=size(reads1,2)-FIRST_VECT+1;
+  FIRST_MASK=sparse((1:length(FIRST_VECT))',FIRST_VECT,ones(length(FIRST_VECT),1),size(reads1,1),size(reads1,2));
+  reads1(FIRST_MASK>0)=0;
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/get_reads.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,346 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#include <stdio.h>
+#include <string.h>
+#include <signal.h>
+#include <mex.h>
+#include <algorithm>
+#include <vector>
+	using std::vector;
+#include "get_reads_direct.h"
+#include "mex_input.h"
+#include "read.h"
+
+#define MAXLINE 10000
+
+/*
+ * input: 
+ * 1 bam file
+ * 2 chromosome
+ * 3 region start (1-based index)
+ * 4 region end (1-based index)
+ * 5 strand (either '+' or '-' or '0')
+ * [6] collapse flag: if true the reads are collapsed to a coverage track
+ * [7] subsample percentage: percentage of reads to be subsampled (in per mill)
+ * [8] intron length filter
+ * [9] exon length filter
+ * [10] mismatch filter
+ * [11] bool: use mapped reads for coverage
+ * [12] bool: use spliced reads for coverage
+ * [13] return maxminlen
+ * [14] return pair coverage and pair index list
+ * [15] only_clipped 
+ * [15] switch of pair filter
+ *
+ * output: 
+ * 1 coverage
+ * [2] intron cell array
+ * [3] pair coverage
+ * [4] pair list
+ *
+ * example call: 
+ * [cov introns] = get_reads('polyA_left_I+_el15_mm1_spliced.bam', 'I', 10000, 12000, '-', 1, 30);
+ */
+void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
+	
+	if (nrhs<5 || nrhs>16 || (nlhs<1 || nlhs>4)) {
+		fprintf(stderr, "usage: [x [introns] [pair]] = get_reads(fname, chr, start, end, strand, [collapse], [subsample], [max intron length], [min exonlength], [max mismatches], [mapped], [spliced], [maxminlen], [pair], [only clipped], [all pairs]);\n");
+		return; 
+	}
+	
+	/* obligatory arguments
+	 * **********************/
+	char *fname = get_string(prhs[0]);
+	//fprintf(stdout, "arg1: %s\n", fname);
+	char *chr = get_string(prhs[1]);
+	//fprintf(stdout, "arg2: %s\n", chr);
+	int from_pos = get_int(prhs[2]);
+	//fprintf(stdout, "arg3: %d\n", from_pos);
+	int to_pos = get_int(prhs[3]);
+	//fprintf(stdout, "arg4: %d\n", to_pos);
+	char *strand = get_string(prhs[4]);
+	//fprintf(stdout, "arg5: %s\n", strand);
+
+	if (from_pos>to_pos)
+		 mexErrMsgTxt("Start (arg 3) must be <= end (arg 4)\n");
+
+	if (strand[0]!='+' && strand[0]!='-' && strand[0]!='0') 
+		mexErrMsgTxt("Unknown strand (arg 5): either + or - or 0");
+
+	/* optional arguments
+	 * ******************/	
+	int collapse = 0;
+	if (nrhs>=6)
+		collapse = get_int(prhs[5]);
+	
+	int subsample = 1000;	
+	if (nrhs>=7)
+		subsample = get_int(prhs[6]);
+		
+	int intron_len_filter = 1e9;
+	if (nrhs>=8)
+		intron_len_filter = get_int(prhs[7]);
+
+	int exon_len_filter = -1;
+	if (nrhs>=9)
+		exon_len_filter = get_int(prhs[8]);
+
+	int filter_mismatch = 1e9;
+	if (nrhs>=10)
+		filter_mismatch = get_int(prhs[9]);
+
+	int mapped = 1;
+	if (nrhs>=11)
+		mapped = get_int(prhs[10]);
+
+	int spliced = 1;
+	if (nrhs>=12)
+		spliced = get_int(prhs[11]);
+
+	int maxminlen = 0;
+	if (nrhs>=13)
+		maxminlen = get_int(prhs[12]);
+
+	int pair_cov = 0;
+	if (nrhs>=14)
+		pair_cov = get_int(prhs[13]);
+
+	int only_clipped = 0;
+	if (nrhs>=15)
+		only_clipped = get_int(prhs[14]);
+
+	int no_pair_filter = 0;
+	if (nrhs>=16)
+		no_pair_filter = get_int(prhs[15]);
+
+
+	/* call function to get reads
+	 * **************************/	
+	char region[MAXLINE];
+	sprintf(region, "%s:%i-%i", chr, from_pos, to_pos);
+
+	vector<CRead*> all_reads;
+	
+	get_reads_from_bam(fname, region, &all_reads, strand[0], subsample);
+
+	for (int i=0; i<all_reads.size(); i++) {
+		all_reads[i]->strip_leftright_tag() ;
+	}
+	
+	/* filter reads
+	 * **************/	
+	int left = 0;
+	int right = 0;
+	
+	vector<CRead*> reads;
+	for (int i=0; i<all_reads.size(); i++) {
+		if (all_reads[i]->left)
+			left++;
+		if (all_reads[i]->right)
+			right++;
+		//if (all_reads[i]->max_intron_len()<intron_len_filter && all_reads[i]->min_exon_len()>exon_len_filter && all_reads[i]->get_mismatches()<=filter_mismatch && all_reads[i]->multiple_alignment_index==0)
+		if (all_reads[i]->max_intron_len()<intron_len_filter && all_reads[i]->min_exon_len()>exon_len_filter && all_reads[i]->get_mismatches()<=filter_mismatch && (only_clipped==0 || all_reads[i]->is_clipped))
+			reads.push_back(all_reads[i]);
+	}
+
+ 
+	/* prepare output
+	 * **************/	
+	int num_rows = reads.size();
+	int num_pos = to_pos-from_pos+1;
+ 
+	if (pair_cov==1 && nlhs>=3) {
+		// sort reads by read_id
+		//printf("\n\nleft:%i right:%i \n\n", left, right);
+		//printf("\nreads[0]->read_id: %s\n", reads[0]->read_id);
+		sort(reads.begin(), reads.end(), CRead::compare_by_read_id);
+	}
+	
+	// read coverages collapsed 
+	if (collapse) {
+		plhs[0] = mxCreateNumericMatrix(1, num_pos, mxUINT32_CLASS, mxREAL);
+		uint32_t *mask_ret = (uint32_t*) mxGetData(plhs[0]);
+		if (num_pos>0 && mask_ret==NULL)
+			mexErrMsgTxt("Error allocating memory\n");
+		if (mapped && spliced) {
+			for (int i=0; i<reads.size(); i++) {
+				reads[i]->get_coverage(from_pos, to_pos, mask_ret);
+			}
+		} else {
+			for (int i=0; i<reads.size(); i++) {
+				ssize_t num_exons = reads[i]->block_starts.size();
+				if ((num_exons==1 && mapped) || (num_exons>1 && spliced))
+					reads[i]->get_coverage(from_pos, to_pos, mask_ret);
+			}
+		}
+	}
+	// reads not collapsed
+	else {
+		uint32_t nzmax = 0; // maximal number of nonzero elements 
+		int len = to_pos-from_pos+1;
+		for (uint i=0; i<reads.size(); i++) 
+		{
+			ssize_t num_exons = reads[i]->block_starts.size();
+			if (!((mapped && spliced) || (num_exons==1 && mapped) || (num_exons>1 && spliced)))
+			{
+				continue;
+			}
+			for (uint n = 0; n < reads[i]->block_starts.size(); n++) 
+			{
+				uint32_t from, to;
+				if (reads[i]->block_starts[n]+reads[i]->start_pos-from_pos >= 0)
+					from = reads[i]->block_starts[n]+reads[i]->start_pos-from_pos;
+				else
+					from = 0;
+				if (reads[i]->block_starts[n]+reads[i]->start_pos-from_pos+reads[i]->block_lengths[n] >= 0)
+					to = reads[i]->block_starts[n]+reads[i]->start_pos-from_pos+reads[i]->block_lengths[n];
+				else
+					to = 0;
+				for (int bp=from; bp<to&bp<len; bp++)
+				{
+					nzmax++;
+				}
+			}
+		}
+		// 1st row: row indices
+		// 2nd row: column indices
+		plhs[0] = mxCreateDoubleMatrix(2, nzmax, mxREAL);
+		double *mask_ret = (double*) mxGetData(plhs[0]);
+		if (nzmax>0 && mask_ret==NULL)
+			mexErrMsgTxt("Error allocating memory\n");
+		uint32_t mask_ret_c = 0; // counter
+		for (uint i=0; i<reads.size(); i++) 
+		{
+			ssize_t num_exons = reads[i]->block_starts.size();
+			if (!((mapped && spliced) || (num_exons==1 && mapped) || (num_exons>1 && spliced)))
+			{
+				continue;
+			}
+			reads[i]->get_reads_sparse(from_pos, to_pos, mask_ret, mask_ret_c, i);
+		}
+		if (mask_ret_c!=2*nzmax)
+			mexErrMsgTxt("Error filling index arrays for sparse matrix\n");
+	}
+	// introns
+	if (maxminlen==0 && nlhs>=2) {
+			vector<int> intron_list;
+			for (int i=0; i<reads.size(); i++) {
+				reads[i]->get_introns(&intron_list);
+			}
+			
+			plhs[1] = mxCreateNumericMatrix(2, intron_list.size()/2, mxUINT32_CLASS, mxREAL);
+			uint32_t *p_intron_list = (uint32_t*) mxGetData(plhs[1]);
+			for (int p = 0; p<intron_list.size(); p++) {
+				p_intron_list[p] = intron_list[p];
+			}
+			intron_list.clear();	
+		} else if (nlhs>=2) {
+			vector<uint32_t> intron_starts;
+			vector<uint32_t> intron_ends;
+			vector<uint32_t> block_len1;
+			vector<uint32_t> block_len2;
+			for (int i=0; i<reads.size(); i++) {
+				reads[i]->get_introns(&intron_starts, &intron_ends, &block_len1, &block_len2);
+			}
+			
+			plhs[1] = mxCreateNumericMatrix(4, intron_starts.size(), mxINT32_CLASS, mxREAL);
+			uint32_t *p_intron_list = (uint32_t*) mxGetData(plhs[1]);
+			for (int p = 0; p<intron_starts.size(); p++) {	
+				p_intron_list[4*p] = intron_starts[p];
+				p_intron_list[(4*p)+1] = intron_ends[p];
+				p_intron_list[(4*p)+2] = block_len1[p];
+				p_intron_list[(4*p)+3] = block_len2[p];
+			}	 
+			intron_starts.clear() ; 
+			intron_ends.clear() ;
+			block_len1.clear() ;
+			block_len2.clear() ;
+	}
+	if (pair_cov==1 && nlhs>=3) {
+		plhs[2] = mxCreateNumericMatrix(1, num_pos, mxUINT32_CLASS, mxREAL);
+		uint32_t *p_pair_map = (uint32_t*) mxGetData(plhs[2]);
+		if (num_pos>0 && p_pair_map==NULL)
+			mexErrMsgTxt("Error allocating memory\n");
+		
+		vector<int> pair_ids;
+		
+		int take_cnt = 0;
+		int discard_cnt = 0; 
+		int discard_strand_cnt = 0; 
+		//printf("reads.size(): %i\n", reads.size());
+		// find consecutive reads with the same id
+		for (int i=0; i<((int) reads.size())-1; i++) 
+		{
+			//printf("reads[%i]->read_id: %s\n", i, reads[i]->read_id);
+			int j = i+1;
+			while(j<reads.size() && strcmp(reads[i]->read_id, reads[j]->read_id) == 0) 
+			{
+				if ((reads[i]->left && reads[j]->right) || (reads[j]->left && reads[i]->right) && (reads[i]->reverse != reads[j]->reverse)) 
+				{
+					if (reads[i]->get_last_position()==-1 || reads[j]->get_last_position()==-1)
+						break;
+					if (false)//(reads[i]->strand[0]=='0' && reads[j]->strand[0]=='0' )
+					{ 
+						// discard pairs without strand information
+						discard_strand_cnt++;
+					}
+					else if (reads[i]->get_last_position()<reads[j]->start_pos && reads[j]->start_pos-reads[i]->get_last_position()<60000) 
+					{
+						int from = std::max(0, reads[i]->get_last_position()-from_pos);
+						int to = std::min(num_pos-1, reads[j]->start_pos-from_pos);
+						pair_ids.push_back(i);
+						pair_ids.push_back(j);
+						for (int k=from; k<to; k++)
+							p_pair_map[k]++;
+						take_cnt++;
+					}
+					else if (reads[i]->start_pos>reads[j]->get_last_position() && reads[j]->get_last_position()-reads[i]->start_pos<60000)
+					{
+						int from = std::max(0, reads[j]->get_last_position()-from_pos);
+						int to = std::min(num_pos-1, reads[i]->start_pos-from_pos);
+						pair_ids.push_back(i);
+						pair_ids.push_back(j);
+						for (int k=from; k<to; k++)
+							p_pair_map[k]++;
+						take_cnt++;
+					}
+					else
+					{
+						if (no_pair_filter>0 && reads[i]->start_pos<reads[j]->start_pos)
+						{
+							pair_ids.push_back(i);
+							pair_ids.push_back(j);
+							take_cnt++;
+						}
+						else if (no_pair_filter>0)
+						{
+							pair_ids.push_back(j);
+							pair_ids.push_back(i);
+							take_cnt++;
+						}
+						else
+							discard_cnt++;
+						//printf("istart:%i, ilast:%i  jstart:%i, jlast: %i\n", reads[i]->start_pos, reads[i]->get_last_position(), reads[j]->start_pos, reads[j]->get_last_position());
+					}
+				}
+				else
+					discard_cnt++;
+				j++;
+			}
+		}
+		//printf("take:%i, discard:%i discard_strand_cnt:%i\n", take_cnt, discard_cnt+discard_strand_cnt, discard_strand_cnt);
+		
+		if (nlhs>=4) {
+			plhs[3] = mxCreateNumericMatrix(2, pair_ids.size()/2, mxUINT32_CLASS, mxREAL);
+			uint32_t *pair_ids_ret = (uint32_t*) mxGetData(plhs[3]);
+			if (pair_ids.size()>0 && pair_ids_ret==NULL)
+				mexErrMsgTxt("Error allocating memory\n");
+			for (int i=0; i<pair_ids.size(); i++) {
+				pair_ids_ret[i] = pair_ids[i];
+			}
+		}
+	}
+	for (int i=0; i<all_reads.size(); i++)
+		delete all_reads[i];
+}
+
Binary file rDiff/src/tools/read_utils/get_reads.mex has changed
Binary file rDiff/src/tools/read_utils/get_reads.mexa64 has changed
Binary file rDiff/src/tools/read_utils/get_reads.mexmaci has changed
Binary file rDiff/src/tools/read_utils/get_reads.o has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/get_reads_direct.cpp	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,299 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#include <stdio.h>
+#include <assert.h>
+#include "sam.h"
+#include "get_reads_direct.h"
+
+#include <vector>
+  using std::vector;
+#include <string>
+  using std::string;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+	int beg, end;
+	samfile_t *in;
+} tmpstruct_t;
+
+typedef struct {
+    uint64_t u, v;
+} pair64_t;
+
+static inline int is_overlap(uint32_t beg, uint32_t end, const bam1_t *b)
+{
+    uint32_t rbeg = b->core.pos;
+    uint32_t rend = b->core.n_cigar? bam_calend(&b->core, bam1_cigar(b)) : b->core.pos + 1;
+    return (rend > beg && rbeg < end);
+}
+
+pair64_t * get_chunk_coordinates(const bam_index_t *idx, int tid, int beg, int end, int* cnt_off);
+
+  int bam_fetch_reads(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_header_t* header, vector<CRead*>* reads, char strand);
+
+// callback for bam_plbuf_init()
+static int pileup_func(uint32_t tid, uint32_t pos, int n, const bam_pileup1_t *pl, void *data)
+{
+	//tmpstruct_t *tmp = (tmpstruct_t*)data;
+	//if ((int)pos >= tmp->beg && (int)pos < tmp->end)
+	//	printf("%s\t%d\t%d\n", tmp->in->header->target_name[tid], pos + 1, n);
+	return 0;
+}
+#ifdef __cplusplus
+}
+#endif
+int parse_sam_line(char* line, CRead* read);
+//int set_strand(char c);
+//void parse_cigar(bam1_t* b, CRead* read);
+
+
+int get_reads_from_bam(char* filename, char* region, vector<CRead*>* reads, char strand, int lsubsample)
+{
+	subsample = lsubsample;
+	//set_strand(strand);
+
+	srand (time(NULL));
+	//srand (1234);
+	tmpstruct_t tmp;
+	tmp.in = samopen(filename, "rb", 0);
+	if (tmp.in == 0) {
+		fprintf(stderr, "Fail to open BAM file %s\n", filename);
+		return 1;
+	}
+	int ref;
+	bam_index_t *idx;
+	bam_plbuf_t *buf;
+	idx = bam_index_load(filename); // load BAM index
+	if (idx == 0) {
+		fprintf(stderr, "BAM indexing file is not available.\n");
+		samclose(tmp.in);
+		return 1;
+	}
+	bam_parse_region(tmp.in->header, region, &ref,
+	                 &tmp.beg, &tmp.end); // parse the region
+	if (ref < 0) {
+		fprintf(stderr, "Invalid region %s\n", region);
+		bam_index_destroy(idx);
+		samclose(tmp.in);
+		return 1;
+	}
+
+	buf = bam_plbuf_init(pileup_func, &tmp); // initialize pileup
+
+	bam_fetch_reads(tmp.in->x.bam, idx, ref, tmp.beg, tmp.end, buf, tmp.in->header, reads, strand);
+	//fprintf(stdout, "intron_list: %d \n", intron_list->size());
+
+	bam_plbuf_push(0, buf); // finalize pileup
+	bam_index_destroy(idx);
+	bam_plbuf_destroy(buf);
+	samclose(tmp.in);
+	return 0;
+}
+
+
+int bam_fetch_reads(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_header_t* header, vector<CRead*>* reads, char strand)
+{
+	int n_off;
+	pair64_t *off = get_chunk_coordinates(idx, tid, beg, end, &n_off);
+	if (off == 0) return 0;
+	{
+		// retrive alignments
+		uint64_t curr_off;
+		int i, ret, n_seeks;
+		n_seeks = 0; i = -1; curr_off = 0;
+		bam1_t *b = (bam1_t*)calloc(1, sizeof(bam1_t));
+		for (;;) {
+			if (curr_off == 0 || curr_off >= off[i].v) { // then jump to the next chunk
+				if (i == n_off - 1) break; // no more chunks
+				if (i >= 0) assert(curr_off == off[i].v); // otherwise bug
+				if (i < 0 || off[i].v != off[i+1].u) { // not adjacent chunks; then seek
+					bam_seek(fp, off[i+1].u, SEEK_SET);
+					curr_off = bam_tell(fp);
+					++n_seeks;
+				}
+				++i;
+			}
+			if ((ret = bam_read1(fp, b)) > 0) {
+				curr_off = bam_tell(fp);
+				if (b->core.tid != tid || b->core.pos >= end) break; // no need to proceed
+				else if (is_overlap(beg, end, b)) 
+				{
+					int rr = rand();
+					if ((rr%1000 < subsample))
+					{
+						CRead* read = new CRead();
+						parse_cigar(b, read, header);
+
+						if (strand == '0' || strand==read->strand[0] || read->strand[0]=='0')
+						{
+								reads->push_back(read);
+						}
+						else 
+						{
+							delete read;
+						}
+						//else if (read->strand[0]=='0'&&((b->core.flag & g_flag_off) >0))
+						//{
+						//	//fprintf(stdout, "(-)-strand; read->strand[0]==0, num_exons: %i \n", read->block_starts.size());
+						//	// this flag means that the read has been reversed for alignment
+						//	// flag bit set and (-)-strand requested
+						//	reads->push_back(read);
+						//}  
+						//else if (read->strand[0]=='0'&&(g_flag_on>0&&(b->core.flag & g_flag_on)==0))
+						//{
+						//	//fprintf(stdout, "(+)-strand; read->strand[0]==0, num_exons: %i \n", read->block_starts.size());
+						//	// (+)-strand requested and flag bit not set
+						//	reads->push_back(read);
+						//}  
+					}
+				}
+			} else break; // end of file
+		}
+//		fprintf(stderr, "[bam_fetch] # seek calls: %d\n", n_seeks);
+		bam_destroy1(b);
+	}
+	free(off);
+	return 0;
+}
+
+void parse_cigar(bam1_t* b, CRead* read, bam_header_t* header)
+{
+	read->left = (b->core.flag & left_flag_mask) >0;
+	read->right = (b->core.flag & right_flag_mask) >0;
+	read->reverse = (b->core.flag & reverse_flag_mask) >0;
+
+	read->start_pos = b->core.pos+1;
+	read->set_strand('0');
+	read->read_id = new char[1000];
+	//sprintf(read->read_id, "%s\0", bam1_qname(b));
+	sprintf(read->read_id, "%s", bam1_qname(b));
+
+	for (int k = 0; k < b->core.n_cigar; ++k) 
+	{
+		int op = bam1_cigar(b)[k] & BAM_CIGAR_MASK; // operation
+		int l = bam1_cigar(b)[k] >> BAM_CIGAR_SHIFT; // length
+		//int op = bam_cigar_op(bam1_cigar(b)[k]); // operation
+		//int l = bam_cigar_oplen(bam1_cigar(b)[k]); // length
+		//fprintf(stdout, "op:%d l:%d\n", op, l);
+		if (op == BAM_CMATCH) 
+		{
+			if (k==0)
+			{
+				read->block_lengths.push_back(l);
+				read->block_starts.push_back(0);
+			}
+			else
+			{
+				int op_prev = bam1_cigar(b)[k-1] & BAM_CIGAR_MASK; 
+				int l_prev = bam1_cigar(b)[k-1] >> BAM_CIGAR_SHIFT;
+				if (op_prev==BAM_CREF_SKIP)// intron before
+				{
+					if (read->block_lengths.size()>=1)
+					{
+						int last_block_start = (*(read->block_starts.end()-1));
+						int intron_start = last_block_start+(*(read->block_lengths.end()-1));
+						read->block_lengths.push_back(l);
+						read->block_starts.push_back(intron_start+l_prev);
+					}
+					else
+					{
+						// start of first block was not a match
+						read->block_lengths.push_back(l);
+						read->block_starts.push_back(0);
+					}
+				}
+				else
+				{
+					if (read->block_lengths.size()>=1)
+						(*(read->block_lengths.end()-1))+=l;
+					else
+					{
+						read->block_lengths.push_back(l);
+						read->block_starts.push_back(0);
+					}
+				}
+			}
+		}
+		else if (op == BAM_CDEL) 
+		{
+			if (k>0 && read->block_lengths.size()>=1)
+				(*(read->block_lengths.end()-1))+=l;
+		} 
+		else if (op == BAM_CREF_SKIP)//intron
+		{}
+		else if (op == BAM_CINS)
+		{}
+		else if (op == BAM_CSOFT_CLIP || op == BAM_CHARD_CLIP)
+		{
+			read->is_clipped = true;
+		}
+	}
+	// parse auxiliary data
+    uint8_t* s = bam1_aux(b);
+	uint8_t* end = b->data + b->data_len; 
+	while (s < end) 
+	{
+		 uint8_t type, key[2];
+		 key[0] = s[0]; key[1] = s[1];
+		 s += 2; type = *s; ++s;
+		 //fprintf(stdout, "\n%c%c:%c\n", key[0], key[1], type);
+		 if (type == 'A')
+		 {
+			if ( key[0] =='X' && key[1] == 'S')
+			{
+				read->set_strand((char) *s);
+			}
+		 	++s;
+		 }
+		else if (type == 'C')
+		{ 
+			if ( key[0] =='H' && key[1] == '0')
+			{
+				uint8_t matches = *s;
+				read->matches = (int) matches;
+			}
+			if ( key[0] =='N' && key[1] == 'M')
+			{
+				uint8_t mismatches = *s;
+				read->mismatches = (int) mismatches;
+			}
+			if ( key[0] =='H' && key[1] == 'I')
+			{
+				uint8_t mai = *s;
+				read->multiple_alignment_index = (int) mai;
+			}
+
+			++s;
+		}
+		else if (type == 'c') { ++s; }
+		else if (type == 'S') { s += 2;	}
+		else if (type == 's') { s += 2;	}
+		else if (type == 'I') { s += 4; }
+		else if (type == 'i') { s += 4; }
+		else if (type == 'f') { s += 4;	}
+		else if (type == 'd') { s += 8;	}
+		else if (type == 'Z') { ++s; }
+		else if (type == 'H') { ++s; }
+	}
+}
+
+//int set_strand(char c)
+//{
+//	if (c=='+')
+//	{
+//		char* fl = (char*) "0x0010";
+//		g_flag_on = strtol(fl, 0, 0);
+//		g_flag_off = 0;
+//	}
+//	else if (c=='-')
+//	{
+//		char* fl = (char*) "0x0010";
+//		g_flag_off = strtol(fl, 0, 0);
+//		g_flag_on = 0;
+//	}
+//	return 0;
+//}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/get_reads_direct.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,23 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#ifndef __GET_READS_DIRECT_H__
+#define __GET_READS_DIRECT_H__
+
+#include <vector>
+  using std::vector;
+#include "read.h"
+#include <stdlib.h>
+#include "sam.h"
+
+//static int g_flag_on = 0, g_flag_off = 0;
+static int left_flag_mask = strtol((char*) "0x40", 0, 0);
+static int right_flag_mask = strtol((char*) "0x80", 0, 0);
+static int reverse_flag_mask = strtol((char*) "0x10", 0, 0);
+
+static int subsample = 1000; 
+//static int collapse = 0;
+
+int get_reads_from_bam(char* filename, char* region, vector<CRead*>* reads, char strand, int lsubsample);
+void parse_cigar(bam1_t* b, CRead* read, bam_header_t* header);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/get_reads_direct.h.old	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,17 @@
+/* written by Jonas Behr, Regina Bohnert and Gunnar Raetsch, FML Tuebingen, Germany, 2010 */
+
+#ifndef __GET_READS_DIRECT_H__
+#define __GET_READS_DIRECT_H__
+
+#include <vector>
+  using std::vector;
+#include "read.h"
+
+static int g_flag_on = 0, g_flag_off = 0;
+
+static int subsample = 100; 
+static int collapse = 0;
+
+int get_reads_from_bam(char* filename, char* region, vector<CRead*>* reads, char strand, int lsubsample);
+
+#endif
Binary file rDiff/src/tools/read_utils/get_reads_direct.o has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/get_reads_for_gene.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,47 @@
+function [reads1] = get_reads_for_gene(CFG,gene)
+  
+
+% Get the reads from the bam-file
+if strcmp(gene.strand,'-')
+    [mask1, read_intron_list] = get_reads(CFG.curr_bamfile, [CFG.chr_prefix gene.chr],gene.start+1,gene.stop+1, '0');
+else 
+    [mask1, read_intron_list] = get_reads(CFG.curr_bamfile, [CFG.chr_prefix gene.chr],gene.start,gene.stop, '0');
+end
+
+% Bring the reads into a matrix form
+if isempty(mask1)
+    reads1=zeros(0,gene.stop-gene.start+1);
+    return
+else
+    reads1=sparse(mask1(1,:)',mask1(2,:)',ones(size(mask1,2),1),max(mask1(1,:)),gene.stop-gene.start+1);
+end
+
+% remove reads which are shorter than CFG.min_read_length
+reads1=reads1(sum(reads1,2)>CFG.min_read_length,:);
+
+if isempty(reads1)
+    return
+end
+%remove reads which could stem from other genes
+[reads1,FLAG]=remove_reads_from_other_genes(reads1,gene); 
+
+%Subsample reads
+if isempty(reads1)
+    return
+end
+if CFG.rDiff_subsample>0
+    if size(reads1,1)>CFG.rDiff_subsample
+        RP=randperm(size(reads1,1));
+        reads1=reads1(RP(1:CFG.rDiff_subsample),:);
+    end
+end
+
+%Clip reads
+if isempty(reads1)
+    return
+end
+if CFG.bases_to_clip>0
+    CFG.bases_to_clip=3;
+    [reads1]=clip_reads(reads1,CFG.bases_to_clip); 
+end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/remove_reads_from_other_genes.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,24 @@
+function [READS_OUT,FLAG]=remove_reads_from_other_genes(READS,GENE,OFFSET)
+if nargin==2
+  OFFSET=0;
+end
+%This funtion removes the reads in READS which could ome from other
+%annotated genes. FLAG is 1 if this was sucsesfull and 0 otherwise
+READS_IN=READS;
+if isfield(GENE,'non_unique_regions')
+  EXONS=GENE.non_unique_regions;
+  IDX=zeros(1,size(READS,2));
+  
+  for i=1:size(EXONS,1)
+    START=max(EXONS(i,1),GENE.start-OFFSET)-GENE.start+1+OFFSET;
+    STOP=min(EXONS(i,2),GENE.stop+OFFSET)-GENE.start+1+OFFSET;
+    IDX(START:STOP)=1;
+  end  
+  READS=READS(not(sum(READS(:,IDX>0),2)==sum(READS,2)),:); 
+  FLAG=1;
+  READS_OUT=READS;
+else
+  READS_OUT=READS_IN;
+  FLAG=0;  
+end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/read_utils/splicingsequence.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,37 @@
+function [SPLICINGEVENTS, SEQUENCE, EXONSEQUENCE, IDENTIFICATIONLENGTH] = splicingsequence(GENE)
+% This function generates all sequence of all splicesites
+% SPLICINGEVENTS, a SEQUENCE marking which elements in
+% SPLICINGEVENTS are introns and exons and a sequence for each
+% transcript which indicates which Exons are in cluded in this transcript
+% SEQUENCE contains indices of SPLICINGEVENTS, containing 1, if the position right to the idx in the transcript
+% are exonic, 0 otherwise
+
+  EXONS = GENE.exons;
+  START = GENE.start;
+  STOP = GENE.stop;
+  
+  NB_OF_TRANSCR = size(EXONS,2);
+  
+  SPLICINGEVENTS = [];
+  for i = 1:NB_OF_TRANSCR
+    SPLICINGEVENTS = [SPLICINGEVENTS, EXONS{i}(:,1)', EXONS{i}(:,2)' ];
+  end
+  SPLICINGEVENTS = SPLICINGEVENTS - START + 1;
+  SPLICINGEVENTS = unique(SPLICINGEVENTS);
+  
+  EXONSEQUENCE = zeros(NB_OF_TRANSCR, length(SPLICINGEVENTS) - 1);
+  
+  for i = 1:NB_OF_TRANSCR
+    %%% for every exon in transcript i
+    for j = 1:size(EXONS{i}, 1)
+      POS_START = find(SPLICINGEVENTS == EXONS{i}(j,1) - START + 1, 1, 'first');
+      POS_STOP = find(SPLICINGEVENTS < EXONS{i}(j,2) - START + 1, 1, 'last');
+      %%% set splicing events active in transcript i to 1
+      EXONSEQUENCE(i, POS_START:POS_STOP) = 1;
+    end 
+  end
+
+  %%% merge active splicing events of all transcripts
+  SEQUENCE = max(EXONSEQUENCE, [], 1);
+  IDENTIFICATIONLENGTH = [];
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/sanitize_genes.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,95 @@
+function [genes]=sanitize_genes(genes,CFG)
+%This function removes trnascript and genes which have a invalid
+%structure and recomputes the splicegraph
+
+
+%Mark genes with eronous exon definitions
+RM_GENES_IDX=[]; %genes to keep
+for i=1:size(genes,2)
+  %remove transcripts which have a length smaller than
+  %readlength
+  RM_TR_IDX=[];
+  START_MIN=inf;
+  STOP_MAX=0;
+  for j=1:size(genes(i).transcripts,2)
+    if sum(genes(i).exons{j}(:,2)-genes(i).exons{j}(:,1))< CFG.sequenced_length
+      RM_TR_IDX=[RM_TR_IDX,j];
+    else
+      START_MIN=min(START_MIN,genes(i).exons{j}(1,1));
+      STOP_MAX=max(STOP_MAX,genes(i).exons{j}(end,2));
+    end 
+  end
+  if ~isempty(RM_TR_IDX)
+     genes(i).exons(RM_TR_IDX)=[];
+    genes(i).transcripts(RM_TR_IDX)=[];
+    genes(i).start=START_MIN;
+    genes(i).stop=STOP_MAX;
+  end
+  if genes(i).start>START_MIN
+      genes(i).start=START_MIN;
+  end
+  if genes(i).stop<STOP_MAX
+      genes(i).stop=STOP_MAX;
+  end
+  
+  
+  %Check if exons are eronous
+  CHECK=1;
+  
+  if size(genes(i).transcripts,2)==0
+    CHECK=0;
+  end
+  
+  for j=1:size(genes(i).transcripts,2)
+    for k=1:(size(genes(i).exons{j},1)-1)
+      if (genes(i).exons{j}(k,2)> genes(i).exons{j}(k+1,1))
+	CHECK=0;
+	break;
+      end
+    end
+    
+    if isempty(genes(i).exons{j})
+	CHECK=0;
+	break;
+    end
+    if CHECK==0
+      break
+    end
+  end
+  
+  if genes(i).stop-genes(i).start<=CFG.sequenced_length
+    CHECK=0;
+  end
+  if CHECK==0
+    RM_GENES_IDX=[RM_GENES_IDX;i];
+    genes(i).do_not_quant=1;
+  else
+      genes(i).do_not_quant=0;
+  end
+end
+%genes(RM_GENES_IDX)=[];
+
+% Create splicegraph 
+for i=1:size(genes,2)
+  gene=genes(i);
+  ALL_EXO=[];
+  
+  for j=1:size(gene.exons,2)
+    ALL_EXO=[ALL_EXO;gene.exons{j}];          
+  end
+  ALL_EXO=unique(ALL_EXO,'rows');
+  GRAPH=zeros(size(ALL_EXO,1),size(ALL_EXO,1));
+  for j=1:size(gene.exons,2)
+    for k=1:(size(gene.exons{j},1)-1)
+      [A,B]=intersect(ALL_EXO,gene.exons{j}(k,:),'rows');
+      [A,C]=intersect(ALL_EXO,gene.exons{j}(k+1,:),'rows');
+      GRAPH(B,C)=1;
+    end
+  end
+  GRAPH=GRAPH+GRAPH';
+  genes(i).splicegraph{1}=ALL_EXO';
+  genes(i).splicegraph{2}=GRAPH;
+end
+
+
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/tools/transform_single_end_reads.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,94 @@
+function [UNIQUE_NEW_EXONS, GRAPHNODES, ORDER_OF_GRAPHNODE, EIRS_IN_SEQ] = transform_single_end_reads(gene, SEQUENCED_LENGTH)
+% This function calculates all regions onto which a read may fall. 
+% SEQUENCED_LENGTH is the length of a read.
+
+    SPLICINGEVENTS=gene.splicingevents;
+    SEQUENCE=gene.sequence;
+    EXONSEQUENCE=gene.exonsequence;
+    
+    NB_OF_TRANS = size(EXONSEQUENCE,1);
+    
+    NEWEXONS = 1:(length(SPLICINGEVENTS) - 1);
+    UNIQUE_NEW_EXONS = NEWEXONS(SEQUENCE>0);
+    
+    NB_OF_EXONS = length(UNIQUE_NEW_EXONS);
+    MAX_EXON_NB_TO_POS = cumsum((NEWEXONS .* SEQUENCE) > 0);
+ 
+    % NB_EXONSEQUENCE is for each transcript the position in
+    % SPLICINGEVENTS where one of its exonic region starts and 0 if it
+    % is intronic
+    
+    NB_EXONSEQUENCE = EXONSEQUENCE .* repmat(NEWEXONS,NB_OF_TRANS,1);
+    
+    %%% This contains all exons
+    GRAPHNODES = []; 
+    
+    %%% This is the array where a 1 is in column j if that EIR (Exons in
+    %a region covered by a read) is contained in the transcript 
+    EIRS_IN_SEQ = [];
+        
+    CURRENT_NODE = 0;% To catch errors with non-initalized variable		  
+    
+    EIR_TRANSCRIPTS = cell(1,NB_OF_TRANS);
+    ORDER_OF_GRAPHNODE = cell(1,NB_OF_TRANS);
+    LENGTHS_OF_GRAPHNODE = cell(1,NB_OF_TRANS);
+    
+    SPLICING_LENGTHS = SPLICINGEVENTS(2:end) - SPLICINGEVENTS(1:end-1);
+    
+    for i = 1:NB_OF_TRANS
+        
+        %%% remove zero positions, adjust splicing positions
+        CURRENT_EXONS = NB_EXONSEQUENCE(i, EXONSEQUENCE(i,:) > 0);
+        
+        SPLICING_CORRECT = cumsum(SPLICING_LENGTHS .* (NB_EXONSEQUENCE(i,:) == 0));
+        %SPLICING_CORRECT contains the position of SPLICINGSEQUENCE in
+        %the transcript when all introns are spliced out
+        SPLICING_CORRECT = [1, SPLICINGEVENTS(2:end) - SPLICING_CORRECT];
+        
+        %This ensures that the end of the transcript is also in CURRENT_SPLICINGEVENTS
+        IDX = EXONSEQUENCE(i,:) == 1 ;
+        IDX(find(EXONSEQUENCE(i,:) == 1, 1, 'last') + 1) = true;
+        CURRENT_SPLICINGEVENTS = SPLICING_CORRECT(IDX);
+        if length(CURRENT_SPLICINGEVENTS) == 0
+            continue
+        end
+        LASTPOS = CURRENT_SPLICINGEVENTS(end);
+        if LASTPOS <= SEQUENCED_LENGTH
+            warning('CURRENT_SPLICINGEVENTS(end) > SEQUENCED_LENGTH') 
+        end
+        %assert(LASTPOS > SEQUENCED_LENGTH,'CURRENT_SPLICINGEVENTS(end) > SEQUENCED_LENGTH')
+        % Calculate the positions when the EIRS can change
+        
+        % Determine positions which start SEQUENCED_LENGTH positions before a splicing event
+        % defines a window of size SEQUENCED_LENGTH around the CURRENT_SPLICINGEVENTS
+        READEVENTS_START = max([CURRENT_SPLICINGEVENTS(1:end - 1) - SEQUENCED_LENGTH + 1; ones(1,length(CURRENT_SPLICINGEVENTS)-1)],[],1);
+        READEVENTS_END = min([CURRENT_SPLICINGEVENTS(2:end); repmat(LASTPOS - SEQUENCED_LENGTH,1,length(CURRENT_SPLICINGEVENTS(2:end)))],[],1);
+        
+        % Calculate EIRS 
+        % CHANGE_POINTS are those points in a transcript where a EIR changes, namly the splicesites of that transcript plus and
+        % minus the SEQUENCED_LENGTH - the above descibed window
+        CHANGE_POINTS = unique([READEVENTS_START, READEVENTS_END]);
+        
+        for j = 1:(length(CHANGE_POINTS) - 1)
+            
+            POINTS_OF_INTEREST = ( READEVENTS_START(1,:) <= CHANGE_POINTS(j)) & (READEVENTS_END(1,:) > CHANGE_POINTS(j));
+            
+            % MAX_EXON_NB_TO_POS is mapping back to the unspliced coordinates
+            CURRENT_EIRS = zeros(1,NB_OF_EXONS);
+            CURRENT_EIRS( MAX_EXON_NB_TO_POS(CURRENT_EXONS(POINTS_OF_INTEREST))) = 1;
+            
+            %%% Already seen such exon composition in sliding
+            %%% window?
+            [TEMP, CURRENT_NODE] = intersect(GRAPHNODES, CURRENT_EIRS, 'rows');
+            if isempty(TEMP)
+		GRAPHNODES = [GRAPHNODES; CURRENT_EIRS];  %Add Key
+		EIRS_IN_SEQ = [EIRS_IN_SEQ, zeros(NB_OF_TRANS,1)];
+		CURRENT_NODE = size(GRAPHNODES,1);
+            end
+            
+            EIRS_IN_SEQ(i,CURRENT_NODE) = 1;
+            ORDER_OF_GRAPHNODE{i} = [ORDER_OF_GRAPHNODE{i}, CURRENT_NODE];
+            LENGTHS_OF_GRAPHNODE{i} = [LENGTHS_OF_GRAPHNODE{i}, [CHANGE_POINTS(j); CHANGE_POINTS(j+1)]]; 
+        end
+    end
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/estimate_variance.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,7 @@
+function [VARIANCE]=estimate_variance(MEANS,VARS) 
+%estimates the variance using the locfit package
+
+IDX_ZERO=and(VARS>=0,MEANS>0);
+VARIANCE =locfit(log(MEANS(IDX_ZERO)),VARS(IDX_ZERO),'family','gamma','acri','cp','deg',2,'maxk',1000);
+
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/estimate_variance_helper.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,77 @@
+function [VARIANCE]=estimate_variance_helper(CFG,SAMPLE_IX,COUNTS_PER_GENE,GENE_EXPRESSION_MATRIX)
+
+
+%compute means and variances
+%Get the number of of positions to be used in MEANS and VARS
+LENGTH=0;
+for i=1:size(COUNTS_PER_GENE,1)
+    try
+        TEMP_SUM=COUNTS_PER_GENE{i, SAMPLE_IX(1)};
+        for j=2:length(SAMPLE_IX)
+            TEMP_SUM=TEMP_SUM+COUNTS_PER_GENE{i,SAMPLE_IX(j)};
+        end
+        LENGTH=LENGTH+sum(TEMP_SUM>0);
+    catch
+        LENGTH=LENGTH;
+    end
+end
+
+%Compute the means and variances, normalizing for gene expression
+MEANS=zeros(1,LENGTH);
+VARS=zeros(1,LENGTH);
+COUNTER=1;
+for i=1:size(COUNTS_PER_GENE,1)
+    try
+        TS=GENE_EXPRESSION_MATRIX(i, SAMPLE_IX);
+        S=length(TS)*TS/sum(TS);
+        
+        TEMP_SUM=sparse(zeros(length(SAMPLE_IX),size(COUNTS_PER_GENE{i, SAMPLE_IX(1)},2)));
+	%if S(1)==0
+	%  TEMP_SUM(1,:)=0;
+	%else
+	%  TEMP_SUM(1,:)=COUNTS_PER_GENE{i, SAMPLE_IX(1)}/S(1);
+        %end
+	for j=1:length(SAMPLE_IX)
+	  if S(j)==0
+	    TEMP_SUM(j,:)=0;
+	  else
+            TEMP_SUM(j,:)=COUNTS_PER_GENE{i,SAMPLE_IX(j)}/S(j);
+	  end
+	end
+        TEMP_SUM=TEMP_SUM(:,sum(TEMP_SUM,1)>0);
+        MEANS(COUNTER:(COUNTER+size(TEMP_SUM,2)-1))=mean(TEMP_SUM(:,sum(TEMP_SUM,1)>0),1);
+        VARS(COUNTER:(COUNTER+size(TEMP_SUM,2)-1))=var(TEMP_SUM(:,sum(TEMP_SUM,1)>0));
+        COUNTER=COUNTER+size(TEMP_SUM,2);
+    catch
+        LENGTH=LENGTH;
+    end
+end
+
+%filter those which have a zeros mean
+NONZERO_IDX=MEANS>0;
+MEANS=MEANS(NONZERO_IDX);
+VARS=VARS(NONZERO_IDX);
+% Subsample the mean variance pairs to reduce the number of
+% samples which have a low mean
+[MEANS,POS]=sort(MEANS);
+MAX_VAL=max(MEANS);
+MIN_VAL=min(MEANS);
+BOUNDS=exp(linspace(log(MIN_VAL),log(MAX_VAL), CFG.variance_samplebins+1));
+SAMPLE=[];
+for i=1:CFG.variance_samplebins
+    NR_IN_BIN=length((find(MEANS>=BOUNDS(i),1,'first'):find(MEANS<BOUNDS(i+1),1,'last')));
+    if NR_IN_BIN==0
+        continue;
+    elseif NR_IN_BIN<= CFG.variance_samples_per_bin
+        SAMPLE=[SAMPLE find(MEANS>=BOUNDS(i),1,'first'):find(MEANS<BOUNDS(i+1),1,'last')];
+    else
+        CHUNK_SAMPLE=find(MEANS>=BOUNDS(i),1,'first'):find(MEANS<BOUNDS(i+1),1,'last');
+        TEMP_SAMPLE=randperm(NR_IN_BIN);
+        SAMPLE=[SAMPLE CHUNK_SAMPLE(TEMP_SAMPLE(1:CFG.variance_samples_per_bin))];
+    end
+end
+VARS=VARS(POS);
+
+%estimate variance function
+[VARIANCE]=estimate_variance(full(MEANS(SAMPLE))',full(VARS(SAMPLE)'));
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/estimate_variance_nonparametric.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,90 @@
+function [VARIANCE1, VARIANCE2]=estimate_variance_nonparametric(CFG,genes)
+
+fprintf('Estimating variance function for rDiff.nonparametric\n')
+
+VARIANCE1=[];
+VARIANCE2=[];
+
+%Getthe gene expression
+fprintf('Loading gene expression\n')
+
+if isempty(CFG.Counts_gene_expression)
+    EXPR_TAB_FILENAME=[CFG.out_base 'Gene_expression.tab'];
+else
+    EXPR_TAB_FILENAME=CFG.Counts_gene_expression;
+end
+try
+    Gene_expression=importdata(EXPR_TAB_FILENAME,'\t',1);
+catch
+    error(['Could not open: ' EXPR_TAB_FILENAME])
+end
+%C=importdata('../out/release_test/Gene_expression.tab','\t',1);
+  
+
+%Get the counts
+fprintf('Loading alternative region counts\n')
+if isempty(CFG.Counts_rDiff_nonparametric)
+    IN_FILENAME=[CFG.out_base 'Nonparametric_region_counts.mat'];
+    load(IN_FILENAME,'Counts_rDiff_nonparametric')
+else
+    IN_FILENAME=[CFG.out_base CFG.Counts_rDiff_nonparametric];
+    load(IN_FILENAMEc,'Counts_rDiff_nonparametric') 
+end
+
+
+
+%Iterate over the functions to be generated
+%compute means and variances
+
+if CFG.compute_variance_function_1
+    fprintf('estimating variance function for sample 1\n')
+    %Get the samples to use for the for estimation the variance function
+    if CFG.merge_sample1
+        SAMPLE_IX=find(CFG.SAMPLES);
+    else
+        SAMPLE_IX=find(CFG.SAMPLES==1);
+    end
+    VARIANCE1=estimate_variance_helper(CFG,SAMPLE_IX,Counts_rDiff_nonparametric,Gene_expression.data);
+    if not(isempty(CFG.save_variance_function_1))
+        VARIANCE_FUNTION_OUTPATH=[CFG.out_base CFG.save_variance_function_1];
+        save(VARIANCE_FUNTION_OUTPATH,'VARIANCE1');
+    else
+        %Use previously estimated variance function
+        if not(isempty(CFG.variance_function_1))
+            try
+                VARIANCE_FUNTION_INPATH=[CFG.out_base CFG.variance_function_1];
+                VARIANCE1=load(VARIANCE_FUNTION_INPATH);
+            catch
+                error(['Could not load variance function for sample 1 from: ' VARIANCE_FUNTION_INPATH])
+            end
+        end
+    end
+end
+
+if CFG.compute_variance_function_2
+    fprintf('estimating variance function for sample 2\n')
+   %Get the samples to use for the for estimation the variance function
+    if CFG.merge_sample2
+        SAMPLE_IX=find(CFG.SAMPLES)
+    else
+        SAMPLE_IX=find(CFG.SAMPLES==2);
+    end
+    VARIANCE2=estimate_variance_helper(CFG,SAMPLE_IX,Counts_rDiff_nonparametric,Gene_expression.data);
+    if not(isempty(CFG.save_variance_function_2))
+        VARIANCE_FUNTION_OUTPATH=[CFG.out_base CFG.save_variance_function_2];
+        save(VARIANCE_FUNTION_OUTPATH,'VARIANCE2');
+    else
+        %Use previously estimated variance function
+        if not(isempty(CFG.variance_function_2))
+            try
+                VARIANCE_FUNTION_INPATH=[CFG.out_base CFG.variance_function_2];
+                VARIANCE2=load(VARIANCE_FUNTION_INPATH);
+            catch
+                error(['Could not load variance function for sample 2 from: ' VARIANCE_FUNTION_INPATH])
+            end
+        end
+    end
+end
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/estimate_variance_parametric.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,88 @@
+function [VARIANCE1, VARIANCE2]=estimate_variance_parametric(CFG,genes)
+
+fprintf('Estimating variance function for rDiff.parametric\n')
+
+VARIANCE1=[];
+VARIANCE2=[];
+
+%Get the gene expression
+fprintf('Loading gene expression\n')
+if isempty(CFG.Counts_gene_expression)
+    EXPR_TAB_FILENAME=[CFG.out_base 'Gene_expression.tab'];
+else
+    EXPR_TAB_FILENAME=CFG.Counts_gene_expression;
+end
+
+try
+    Gene_expression=importdata(EXPR_TAB_FILENAME,'\t',1);
+catch
+    error(['Could not open: ' EXPR_TAB_FILENAME])
+end
+%C=importdata('../out/release_test/Gene_expression.tab','\t',1);
+  
+
+%Get the counts
+fprintf('Loading alternative region counts\n')
+if isempty(CFG.Counts_rDiff_parametric)
+    IN_FILENAME=[CFG.out_base 'Alternative_region_counts.mat'];
+    load(IN_FILENAME,'Counts_rDiff_parametric')
+else
+    IN_FILENAME=[CFG.out_base CFG.Counts_rDiff_parametric];
+    load(IN_FILENAMEc,'Counts_rDiff_parametric') 
+end
+
+%Iterate over the functions to be generated
+%compute means and variances
+
+if CFG.compute_variance_function_1
+    fprintf('estimating variance function for sample 1\n')
+    %Get the samples to use for the for estimation the variance function
+    if CFG.merge_sample1
+        SAMPLE_IX=find(CFG.SAMPLES);
+    else
+        SAMPLE_IX=find(CFG.SAMPLES==1);
+    end
+    VARIANCE1=estimate_variance_helper(CFG,SAMPLE_IX,Counts_rDiff_parametric,Gene_expression.data);
+    if not(isempty(CFG.save_variance_function_1))
+        VARIANCE_FUNTION_OUTPATH=[CFG.out_base CFG.save_variance_function_1];
+        save(VARIANCE_FUNTION_OUTPATH,'VARIANCE1');
+    else
+        %Use previously estimated variance function
+        if not(isempty(CFG.variance_function_1))
+            try
+                VARIANCE_FUNTION_INPATH=[CFG.out_base CFG.variance_function_1];
+                VARIANCE1=load(VARIANCE_FUNTION_INPATH);
+            catch
+                error(['Could not load variance function for sample 1 from: ' VARIANCE_FUNTION_INPATH])
+            end
+        end
+    end
+end
+
+if CFG.compute_variance_function_2
+    fprintf('estimating variance function for sample 2\n')
+    %Get the samples to use for the for estimation the variance function
+    if CFG.merge_sample2
+        SAMPLE_IX=find(CFG.SAMPLES);
+    else
+        SAMPLE_IX=find(CFG.SAMPLES==2);
+    end
+    VARIANCE2=estimate_variance_helper(CFG,SAMPLE_IX,Counts_rDiff_parametric,Gene_expression.data);
+    if not(isempty(CFG.save_variance_function_2))
+        VARIANCE_FUNTION_OUTPATH=[CFG.out_base CFG.save_variance_function_2];
+        save(VARIANCE_FUNTION_OUTPATH,'VARIANCE2');
+    else
+        %Use previously estimated variance function
+        if not(isempty(CFG.variance_function_2))
+            try
+                VARIANCE_FUNTION_INPATH=[CFG.out_base CFG.variance_function_2];
+                VARIANCE2=load(VARIANCE_FUNTION_INPATH);
+            catch
+                error(['Could not load variance function for sample 2 from: ' VARIANCE_FUNTION_INPATH])
+            end
+        end
+    end
+end
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/plot_variance_fit.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,47 @@
+function []=plot_variance_fit(VARIANCE,MEANS,VARS,MAX_X,MAX_Y)
+
+if nargin<=3
+    MAX_X=1000;
+    MAX_Y=1000;
+end
+
+%values for which to plot the variance function
+pp=0.1:1:MAX_X;
+
+%Define the legend entries
+LEG={};
+FIG_HANDLES=[];
+figure;
+if and(not(isempty(MEANS)),not(isempty(VARS)))
+    LEG{end+1}='Observation';
+    FIG_HANDLES(end+1)=plot(MEANS,VARS,'.');
+end
+hold on
+%plot the predicted variances
+FIG_HANDLES(end+1)=plot(pp',predict_variance(pp',VARIANCE),'r');
+LEG{end+1}='Variance fit';
+
+plot(pp,pp,'g')
+
+%Plot sliding window
+RR=zeros(1,MAX_X);
+for i=1:MAX_X
+    TIDX=and(MEANS>i,MEANS<i*1.1+1);
+    RR(i)= mean(VARS(TIDX));
+end 
+FIG_HANDLES(end+1)=plot(1:MAX_X,RR,'k');
+LEG{end+1}='Sliding window';
+
+%Plot poisson
+FIG_HANDLES(end+1)=plot(pp,pp,'g');
+LEG{end+1}='Poisson variance';
+
+legend(FIG_HANDLES,LEG)
+xlabel('mean')
+ylabel('variance')
+
+% Change window
+xlim([0,MAX_X])
+ylim([0,MAX_Y])
+
+return
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/variance/predict_variance.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,19 @@
+function [VARIANCE]=predict_variance(MEANS,VARIANCE_FCT)
+%predict the variances for the means
+if isstruct(VARIANCE_FCT)
+    %use the estimated variance function
+    VARIANCE=exp(predict(VARIANCE_FCT,log(full(MEANS))));
+else
+    %use parmeters a,b,c to compute the variance function
+    a=VARIANCE_FCT(1);
+    b=VARIANCE_FCT(2);
+    c=VARIANCE_FCT(3);
+    VARIANCE=a+MEANS*b+(MEANS.^2)*c;
+end
+
+%Make sure the variance is bigger than the poisson
+%variance. Otherwise the NB cannot be definied
+
+VARIANCE=max([VARIANCE,MEANS*(1e-8)],[],2);
+
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/tools/ParseGFF.py	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,532 @@
+#!/usr/bin/env python
+"""
+Extract genome annotation from a GFF3 (a tab delimited 
+format for storing sequence features and annotations:
+http://www.sequenceontology.org/gff3.shtml) file.
+
+Usage: ParseGFF.py in.gff3 out.mat 
+
+Requirements: 
+    Scipy :- http://scipy.org/ 
+    Numpy :- http://numpy.org/ 
+
+Copyright (C)	2009-2012 Friedrich Miescher Laboratory of the Max Planck Society, Tubingen, Germany 
+		2012- Memorial Sloan-Kettering Cancer Center, New York City, USA 
+"""
+
+import re, sys
+import scipy.io as sio
+import numpy as np
+
+def addCDSphase(strand, cds):
+    """Add CDS phase to the CDS exons
+    """
+    cds_region, cds_flag = [], 0
+    if strand == '+':
+        for cdspos in cds:
+            if cds_flag == 0:
+                cdspos = (cdspos[0], cdspos[1], 0)
+                diff = (cdspos[1]-(cdspos[0]-1))%3
+            else:
+                xy = 0
+                if diff == 0:
+                    cdspos = (cdspos[0], cdspos[1], 0)
+                elif diff == 1:
+                    cdspos = (cdspos[0], cdspos[1], 2)
+                    xy = 2
+                elif diff == 2:
+                    cdspos = (cdspos[0], cdspos[1], 1)
+                    xy = 1
+                diff = ((cdspos[1]-(cdspos[0]-1))-xy)%3
+            cds_region.append(cdspos)
+            cds_flag = 1
+    elif strand == '-':
+        cds.reverse()
+        for cdspos in cds:
+            if cds_flag == 0:
+                cdspos = (cdspos[0], cdspos[1], 0)
+                diff = (cdspos[1]-(cdspos[0]-1))%3
+            else:
+                xy = 0
+                if diff == 0:
+                    cdspos = (cdspos[0], cdspos[1], 0)
+                elif diff == 1:
+                    cdspos = (cdspos[0], cdspos[1], 2)
+                    xy = 2
+                elif diff == 2:
+                    cdspos = (cdspos[0], cdspos[1], 1)
+                    xy = 1
+                diff = ((cdspos[1]-(cdspos[0]-1))-xy)%3
+            cds_region.append(cdspos)
+            cds_flag = 1
+        cds_region.reverse()
+    return cds_region
+
+def createExon(strand_p, five_p_utr, cds_cod, three_p_utr):
+    """Create exon cordinates from UTR's and CDS region
+    """
+    exon_pos = []
+    if strand_p == '+':        
+        utr5_start, utr5_end = 0, 0
+        if five_p_utr != []:
+            utr5_start, utr5_end = five_p_utr[-1][0], five_p_utr[-1][1] 
+        cds_5start, cds_5end = cds_cod[0][0], cds_cod[0][1]
+        jun_exon = []
+        if cds_5start-utr5_end == 0 or cds_5start-utr5_end == 1:
+            jun_exon = [utr5_start, cds_5end]    
+        if len(cds_cod) == 1:
+            five_prime_flag = 0
+            if jun_exon != []:
+                five_p_utr = five_p_utr[:-1]
+                five_prime_flag = 1
+            for utr5 in five_p_utr:
+                exon_pos.append(utr5)
+            jun_exon = []
+            utr3_start, utr3_end = 0, 0
+            if three_p_utr != []: 
+                utr3_start = three_p_utr[0][0]
+                utr3_end = three_p_utr[0][1]
+            if utr3_start-cds_5end == 0 or utr3_start-cds_5end == 1:
+                jun_exon = [cds_5start, utr3_end]
+            three_prime_flag = 0
+            if jun_exon != []: 
+                cds_cod = cds_cod[:-1]
+                three_p_utr = three_p_utr[1:]
+                three_prime_flag = 1
+            if five_prime_flag == 1 and three_prime_flag == 1:
+                exon_pos.append([utr5_start, utr3_end])
+            if five_prime_flag == 1 and three_prime_flag == 0:
+                exon_pos.append([utr5_start, cds_5end])
+                cds_cod = cds_cod[:-1]
+            if five_prime_flag == 0 and three_prime_flag == 1:
+                exon_pos.append([cds_5start, utr3_end])
+            for cds in cds_cod:
+                exon_pos.append(cds)
+            for utr3 in three_p_utr:
+                exon_pos.append(utr3)
+        else:    
+            if jun_exon != []:
+                five_p_utr = five_p_utr[:-1]
+                cds_cod = cds_cod[1:]
+            for utr5 in five_p_utr:
+                exon_pos.append(utr5)
+            exon_pos.append(jun_exon) if jun_exon != [] else ''
+            jun_exon = []
+            utr3_start, utr3_end = 0, 0
+            if three_p_utr != []:
+                utr3_start = three_p_utr[0][0]
+                utr3_end = three_p_utr[0][1]
+            cds_3start = cds_cod[-1][0]
+            cds_3end = cds_cod[-1][1]
+            if utr3_start-cds_3end == 0 or utr3_start-cds_3end == 1:       
+                jun_exon = [cds_3start, utr3_end]
+            if jun_exon != []:
+                cds_cod = cds_cod[:-1]
+                three_p_utr = three_p_utr[1:]
+            for cds in cds_cod:
+                exon_pos.append(cds)
+            exon_pos.append(jun_exon) if jun_exon != [] else ''
+            for utr3 in three_p_utr:
+                exon_pos.append(utr3)
+    elif strand_p == '-':
+        utr3_start, utr3_end = 0, 0        
+        if three_p_utr != []:
+            utr3_start = three_p_utr[-1][0]
+            utr3_end = three_p_utr[-1][1]
+        cds_3start = cds_cod[0][0]
+        cds_3end = cds_cod[0][1]
+        jun_exon = []
+        if cds_3start-utr3_end == 0 or cds_3start-utr3_end == 1:
+            jun_exon = [utr3_start, cds_3end]  
+        if len(cds_cod) == 1:    
+            three_prime_flag = 0
+            if jun_exon != []:
+                three_p_utr = three_p_utr[:-1]
+                three_prime_flag = 1
+            for utr3 in three_p_utr:
+                exon_pos.append(utr3)
+            jun_exon = []
+            (utr5_start, utr5_end) = (0, 0)
+            if five_p_utr != []:
+                utr5_start = five_p_utr[0][0]
+                utr5_end = five_p_utr[0][1]
+            if utr5_start-cds_3end == 0 or utr5_start-cds_3end == 1:
+                jun_exon = [cds_3start, utr5_end]
+            five_prime_flag = 0
+            if jun_exon != []:
+                cds_cod = cds_cod[:-1]
+                five_p_utr = five_p_utr[1:]
+                five_prime_flag = 1
+            if three_prime_flag == 1 and five_prime_flag == 1:
+                exon_pos.append([utr3_start, utr5_end])
+            if three_prime_flag == 1 and five_prime_flag == 0:
+                exon_pos.append([utr3_start, cds_3end])
+                cds_cod = cds_cod[:-1]
+            if three_prime_flag == 0 and five_prime_flag == 1:
+                exon_pos.append([cds_3start, utr5_end])        
+            for cds in cds_cod:
+                exon_pos.append(cds)
+            for utr5 in five_p_utr:
+                exon_pos.append(utr5)
+        else:
+            if jun_exon != []:
+                three_p_utr = three_p_utr[:-1]
+                cds_cod = cds_cod[1:]
+            for utr3 in three_p_utr:
+                exon_pos.append(utr3)   
+            if jun_exon != []:
+                exon_pos.append(jun_exon)
+            jun_exon = []
+            (utr5_start, utr5_end) = (0, 0)
+            if five_p_utr != []:
+                utr5_start = five_p_utr[0][0]
+                utr5_end = five_p_utr[0][1]    
+            cds_5start = cds_cod[-1][0]
+            cds_5end = cds_cod[-1][1]
+            if utr5_start-cds_5end == 0 or utr5_start-cds_5end == 1:
+                jun_exon = [cds_5start, utr5_end]
+            if jun_exon != []:
+                cds_cod = cds_cod[:-1]
+                five_p_utr = five_p_utr[1:]
+            for cds in cds_cod:
+                exon_pos.append(cds)
+            if jun_exon != []:
+                exon_pos.append(jun_exon)    
+            for utr5 in five_p_utr:
+                exon_pos.append(utr5)
+    return exon_pos
+
+def init_gene():
+    """Initializing the gene structure
+    """
+    gene_details=dict(
+                    id = '', 
+                    anno_id = [],
+                    confgenes_id = [],
+                    name = '',
+                    source = '',
+                    gene_info = {},
+                    alias = '',
+                    name2 = [],
+                    strand = '',
+                    chr = '',
+                    chr_num = [],
+                    paralogs = [],
+                    start = '',
+                    stop = '',
+                    transcripts = [],
+                    transcript_info = [],
+                    transcript_status = [],
+                    transcript_valid = [],
+                    exons = [],
+                    exons_confirmed = [],
+                    cds_exons = [],
+                    utr5_exons = [],
+                    utr3_exons = [],
+                    tis = [],
+                    tis_conf = [],
+                    tis_info = [],
+                    cdsStop = [],
+                    cdsStop_conf = [],
+                    cdsStop_info = [],
+                    tss = [],
+                    tss_info = [],
+                    tss_conf = [],
+                    cleave = [],
+                    cleave_info = [],
+                    cleave_conf = [],
+                    polya = [],
+                    polya_info = [],
+                    polya_conf = [],
+                    is_alt = [],
+                    is_alt_spliced = 0,
+                    is_valid = [],
+                    transcript_complete = [],
+                    is_complete = [],
+                    is_correctly_gff3_referenced = '',
+                    splicegraph = []
+                    )
+    return gene_details
+
+def FeatureValueFormat(singlegene):
+    """Make feature value compactable to write in a .mat format
+    """
+    comp_exon = np.zeros((len(singlegene['exons']),), dtype=np.object)
+    for i in range(len(singlegene['exons'])):
+        comp_exon[i]= np.array(singlegene['exons'][i])
+    singlegene['exons'] = comp_exon
+    comp_cds = np.zeros((len(singlegene['cds_exons']),), dtype=np.object)
+    for i in range(len(singlegene['cds_exons'])):
+        comp_cds[i]= np.array(singlegene['cds_exons'][i])
+    singlegene['cds_exons'] = comp_cds
+    comp_utr3 = np.zeros((len(singlegene['utr3_exons']),), dtype=np.object)
+    for i in range(len(singlegene['utr3_exons'])):
+        comp_utr3[i]= np.array(singlegene['utr3_exons'][i])
+    singlegene['utr3_exons'] = comp_utr3
+    comp_utr5 = np.zeros((len(singlegene['utr5_exons']),), dtype=np.object)
+    for i in range(len(singlegene['utr5_exons'])):
+        comp_utr5[i]= np.array(singlegene['utr5_exons'][i])
+    singlegene['utr5_exons'] = comp_utr5
+    comp_transcripts = np.zeros((len(singlegene['transcripts']),), dtype=np.object)
+    for i in range(len(singlegene['transcripts'])):
+        comp_transcripts[i]= np.array(singlegene['transcripts'][i])
+    singlegene['transcripts'] = comp_transcripts
+    comp_tss = np.zeros((len(singlegene['tss']),), dtype=np.object)
+    for i in range(len(singlegene['tss'])):
+        comp_tss[i]= np.array(singlegene['tss'][i])
+    singlegene['tss'] = comp_tss
+    comp_tis = np.zeros((len(singlegene['tis']),), dtype=np.object)
+    for i in range(len(singlegene['tis'])):
+        comp_tis[i]= np.array(singlegene['tis'][i])
+    singlegene['tis'] = comp_tis
+    comp_cleave = np.zeros((len(singlegene['cleave']),), dtype=np.object)
+    for i in range(len(singlegene['cleave'])):
+        comp_cleave[i]= np.array(singlegene['cleave'][i])
+    singlegene['cleave'] = comp_cleave
+    comp_cdsStop = np.zeros((len(singlegene['cdsStop']),), dtype=np.object)
+    for i in range(len(singlegene['cdsStop'])):
+        comp_cdsStop[i]= np.array(singlegene['cdsStop'][i])
+    singlegene['cdsStop'] = comp_cdsStop
+
+    return singlegene 
+
+def CreateGeneModels(genes_cmpt, transcripts_cmpt, exons_cmpt, utr3_cmpt, utr5_cmpt, cds_cmpt):
+    """Creating Coding/Non-coding gene models from parsed GFF objects.
+    """
+    gene_counter, gene_models = 1, []
+    for gene_entry in genes_cmpt: ## Figure out the genes and transcripts associated feature 
+        if gene_entry in transcripts_cmpt:
+            gene=init_gene() 
+            gene['id']=gene_counter
+            gene['name']=gene_entry[1]
+            gene['chr']=genes_cmpt[gene_entry]['chr']
+            gene['source']=genes_cmpt[gene_entry]['source']
+            gene['start']=genes_cmpt[gene_entry]['start']
+            gene['stop']=genes_cmpt[gene_entry]['stop']
+            gene['strand']=genes_cmpt[gene_entry]['strand']
+            if not gene['strand'] in ['+', '-']:
+                gene['strand']='.' # Strand info not known replaced with a dot symbol instead of None, ?, . etc.
+            if len(transcripts_cmpt[gene_entry])>1:
+                gene['is_alt_spliced'] = 1
+                gene['is_alt'] = 1
+	    gtype=[]
+            for tids in transcripts_cmpt[gene_entry]: ## transcript section related tags 
+                gene['transcripts'].append(tids['ID'])
+		gtype.append(tids['type'])
+                exon_cod, utr5_cod, utr3_cod, cds_cod = [], [], [], []
+                if (gene['chr'], tids['ID']) in exons_cmpt:
+                    exon_cod = [[feat_exon['start'], feat_exon['stop']] for feat_exon in exons_cmpt[(gene['chr'], tids['ID'])]]
+                if (gene['chr'], tids['ID']) in utr5_cmpt:
+                    utr5_cod = [[feat_utr5['start'], feat_utr5['stop']] for feat_utr5 in utr5_cmpt[(gene['chr'], tids['ID'])]]
+                if (gene['chr'], tids['ID']) in utr3_cmpt:
+                    utr3_cod = [[feat_utr3['start'], feat_utr3['stop']] for feat_utr3 in utr3_cmpt[(gene['chr'], tids['ID'])]]
+                if (gene['chr'], tids['ID']) in cds_cmpt:
+                    cds_cod = [[feat_cds['start'], feat_cds['stop']] for feat_cds in cds_cmpt[(gene['chr'], tids['ID'])]]
+                if len(exon_cod) == 0: ## build exon coordinates from UTR3, UTR5 and CDS
+                    if cds_cod != []:
+                        exon_cod=createExon(gene['strand'], utr5_cod, cds_cod, utr3_cod) 
+
+                if gene['strand']=='-': ## general order to coordinates
+                    if len(exon_cod) >1:
+                        if exon_cod[0][0] > exon_cod[-1][0]:
+                            exon_cod.reverse()
+                    if len(cds_cod) >1:
+                        if cds_cod[0][0] > cds_cod[-1][0]: 
+                            cds_cod.reverse()
+                    if len(utr3_cod) >1:
+                        if utr3_cod[0][0] > utr3_cod[-1][0]: 
+                            utr3_cod.reverse()
+                    if len(utr5_cod) >1:
+                        if utr5_cod[0][0] > utr5_cod[-1][0]:
+                            utr5_cod.reverse()
+
+                tis, cdsStop, tss, cleave = [], [], [], [] ## speacial sited in the gene region 
+                if cds_cod != []:
+                    if gene['strand'] == '+':
+                        tis = [cds_cod[0][0]]
+                        cdsStop = [cds_cod[-1][1]-3]
+                    elif gene['strand'] == '-':
+                        tis = [cds_cod[-1][1]]
+                        cdsStop = [cds_cod[0][0]+3]
+                if utr5_cod != []:
+                    if gene['strand'] == '+':
+                        tss = [utr5_cod[0][0]]
+                    elif gene['strand'] == '-':
+                        tss = [utr5_cod[-1][1]]
+                if utr3_cod != []:
+                    if gene['strand'] == '+':
+                        cleave = [utr3_cod[-1][1]]
+                    elif gene['strand'] == '-':
+                        cleave = [utr3_cod[0][0]]
+
+                cds_status, exon_status, utr_status = 0, 0, 0 ## status of the complete elements of the gene
+                if cds_cod != []: ## adding phase to the CDS region 
+                    cds_cod_phase = addCDSphase(gene['strand'], cds_cod)
+                    cds_status = 1
+                    gene['cds_exons'].append(cds_cod_phase)
+
+                if exon_cod != []: 
+                    exon_status = 1
+                if utr5_cod != [] or utr3_cod != []: 
+                    utr_status = 1
+                if cds_status != 0 and exon_status != 0 and utr_status != 0:
+                    gene['transcript_status'].append(1)
+                else:
+                    gene['transcript_status'].append(0)
+
+                if exon_cod: ## final check point for a valid gene model 
+                    gene['exons'].append(exon_cod)
+                    gene['utr3_exons'].append(utr3_cod)
+                    gene['utr5_exons'].append(utr5_cod)
+                    gene['tis'].append(tis)
+                    gene['cdsStop'].append(cdsStop)
+                    gene['tss'].append(tss)
+                    gene['cleave'].append(cleave)    
+	    
+	    gtype=list(set(gtype)) ## different types  
+            gene['gene_info']=dict(ID=gene_entry[1],
+				Source=genes_cmpt[gene_entry]['source'],
+				Type=gtype)
+            gene=FeatureValueFormat(gene) ## get prepare for MAT writing 
+            gene_counter+=1
+            gene_models.append(gene)
+    return gene_models    
+
+def GFFParse(gff_file):
+    """Parsing GFF file based on feature relationship.
+    """
+    genes, utr5, exons=dict(), dict(), dict()
+    transcripts, utr3, cds=dict(), dict(), dict()
+    # TODO Include growing key words of different non-coding/coding transcripts 
+    features=['mrna', 'transcript', 'ncRNA', 'mirna', 'pseudogenic_transcript', 'rrna', 'snorna', 'snrna', 'trna', 'scrna']
+    gff_handle=open(gff_file, "rU")
+    for gff_line in gff_handle:
+        gff_line=gff_line.strip('\n\r').split('\t')
+        if re.match(r'#|>', gff_line[0]): # skip commented line or fasta identifier line 
+            continue
+        if len(gff_line)==1: # skip fasta sequence/empty line if present 
+            continue 
+        assert len(gff_line)==9, '\t'.join(gff_line) # not found 9 tab-delimited fields in this line     
+        if '' in gff_line: # skip this line if there any field with an empty value
+            print 'Skipping..', '\t'.join(gff_line)
+            continue
+        if gff_line[-1][-1]==';': # trim the last ';' character 
+            gff_line[-1]=gff_line[-1].strip(';')
+        if gff_line[2].lower() in ['gene', 'pseudogene']:
+            gid, gene_info=None, dict()
+            gene_info['start']=int(gff_line[3])
+            gene_info['stop']=int(gff_line[4])
+            gene_info['chr']=gff_line[0]
+            gene_info['source']=gff_line[1]
+            gene_info['strand']=gff_line[6]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=') # gff attributes are separated by key=value pair 
+                if attb[0]=='ID':
+                    gid=attb[1]
+                    break
+            genes[(gff_line[0], gid)]=gene_info # store gene information based on the chromosome and gene symbol.
+        elif gff_line[2].lower() in features: 
+            gid, mrna_info=None, dict() 
+            mrna_info['start']=int(gff_line[3])
+            mrna_info['stop']=int(gff_line[4])
+            mrna_info['chr']=gff_line[0]
+            mrna_info['strand']=gff_line[6]
+            mrna_info['type'] = gff_line[2]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=')
+                if attb[0]=='Parent':
+                    gid=attb[1]
+                elif attb[0]=='ID':
+                    mrna_info[attb[0]]=attb[1]
+            for fid in gid.split(','): # child may be mapped to multiple parents ex: Parent=AT01,AT01-1-Protein 
+                if (gff_line[0], fid) in transcripts:
+                    transcripts[(gff_line[0], fid)].append(mrna_info)
+                else:
+                    transcripts[(gff_line[0], fid)]=[mrna_info]
+        elif gff_line[2].lower() in ['exon']:
+            tids, exon_info=None, dict()
+            exon_info['start']=int(gff_line[3])
+            exon_info['stop']=int(gff_line[4])
+            exon_info['chr']=gff_line[0]
+            exon_info['strand']=gff_line[6]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=')
+                if attb[0]=='Parent':
+                    tids=attb[1]
+                    break
+            for tid in tids.split(','):
+                if (gff_line[0], tid) in exons:
+                    exons[(gff_line[0], tid)].append(exon_info)
+                else:
+                    exons[(gff_line[0], tid)]=[exon_info]
+        elif gff_line[2].lower() in ['five_prime_utr']:
+            utr5_info, tids=dict(), None
+            utr5_info['start']=int(gff_line[3])
+            utr5_info['stop']=int(gff_line[4])
+            utr5_info['chr']=gff_line[0]
+            utr5_info['strand']=gff_line[6]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=')
+                if attb[0]=='Parent':
+                    tids=attb[1]
+                    break
+            for tid in tids.split(','):
+                if (gff_line[0], tid) in utr5:
+                    utr5[(gff_line[0], tid)].append(utr5_info)
+                else:
+                    utr5[(gff_line[0], tid)]=[utr5_info]
+        elif gff_line[2].lower() in ['cds']:
+            cds_info, tids=dict(), None
+            cds_info['start']=int(gff_line[3])
+            cds_info['stop']=int(gff_line[4])
+            cds_info['chr']=gff_line[0]
+            cds_info['strand']=gff_line[6]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=')
+                if attb[0]=='Parent':
+                    tids=attb[1]
+                    break
+            for tid in tids.split(','):
+                if (gff_line[0], tid) in cds:
+                    cds[(gff_line[0], tid)].append(cds_info)
+                else:
+                    cds[(gff_line[0], tid)]=[cds_info]
+        elif gff_line[2].lower() in ['three_prime_utr']:
+            utr3_info, tids=dict(), None
+            utr3_info['start']=int(gff_line[3])
+            utr3_info['stop']=int(gff_line[4])
+            utr3_info['chr']=gff_line[0]
+            utr3_info['strand']=gff_line[6]
+            for attb in gff_line[-1].split(';'):
+                attb=attb.split('=')
+                if attb[0]=='Parent':
+                    tids=attb[1]
+                    break
+            for tid in tids.split(','):
+                if (gff_line[0], tid) in utr3:
+                    utr3[(gff_line[0], tid)].append(utr3_info)
+                else:
+                    utr3[(gff_line[0], tid)]=[utr3_info]
+    gff_handle.close()
+    return genes, transcripts, exons, utr3, utr5, cds
+
+def __main__():
+    """extract genome feature information 
+    """
+    try:
+        gff_file = sys.argv[1]
+        mat_file = sys.argv[2]
+    except:
+        print __doc__
+        sys.exit(-1)
+
+    genes, transcripts, exons, utr3, utr5, cds = GFFParse(gff_file) 
+    gene_models = CreateGeneModels(genes, transcripts, exons, utr3, utr5, cds)
+    # TODO Write to matlab/octave struct instead of cell arrays.
+    sio.savemat(mat_file, 
+                    mdict=dict(genes=gene_models), 
+                    format='5', 
+                    oned_as='row')
+
+if __name__=='__main__':
+    __main__()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/tools/determine_engine.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,57 @@
+function [engine, environment, basedir, mccdir, license_type] = determine_engine()
+% DETERMINES_ENGINE   Determines used interpreter.
+%
+%   [engine, environment, basedir, mccdir, license_type] = determine_engine() ;
+% 
+%   returns either 'matlab' or 'octave' in variable engine
+%   and 'internal' or 'galaxy' in variable environment
+%   basedir is the directory of the matlab or octave instance
+%   mccdir is the directory of the matlab compiler (does not yet exist for octave)
+%
+%
+%   This program is free software; you can redistribute it and/or modify
+%   it under the terms of the GNU General Public License as published by
+%   the Free Software Foundation; either version 3 of the License, or
+%   (at your option) any later version.
+%
+%   Written (W) 2009-2010 Gunnar Raetsch
+%   Copyright (C) 2009-2010 Max Planck Society
+%
+
+
+global g_license_type ;
+
+if isempty(g_license_type),
+  g_license_type = 'academic' ;
+end ;
+license_type = g_license_type ;
+
+lic=license ;
+if ~isequal(lic, 'GNU General Public License'),
+  engine='matlab' ;
+else
+  engine='octave' ;
+end ;
+
+environment='internal' ;
+if isequal(whoami, 'galaxy'),
+  environment='galaxy' ;
+end ;
+
+if isequal(engine, 'matlab') && isequal(environment,  'internal'),
+  basedir = '' ;
+elseif isequal(engine, 'matlab') && isequal(environment,  'galaxy'),
+  basedir = '' ;
+elseif isequal(engine, 'octave') && isequal(environment,  'internal'),
+  basedir = '' ;
+elseif isequal(engine, 'octave') && isequal(environment,  'galaxy'),
+  basedir = '' ;
+end ;
+
+if isequal(environment,  'internal'),
+  mccdir = '' ;
+elseif isequal(environment,  'galaxy'),
+  mccdir = '' ;
+end ;
+
+return
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/tools/whoami.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,32 @@
+function user_name = whoami
+% WHOAMI   Determines user name.
+%
+%   user_name = whoami
+%
+%
+%   This program is free software; you can redistribute it and/or modify
+%   it under the terms of the GNU General Public License as published by
+%   the Free Software Foundation; either version 3 of the License, or
+%   (at your option) any later version.
+%
+%   Written (W) 2009-2010 Gunnar Raetsch
+%   Copyright (C) 2009-2010 Max Planck Society
+%
+
+
+global whoami_user_name  
+  
+if isempty(whoami_user_name)
+  
+  [ret, whoami_user_name]=unix('whoami') ; 
+  if ret~=0,
+    if keyboard_allowed(),
+      keyboard ;
+    end ;
+    whoami_user_name='unknown' ;
+  end ;
+end ;
+
+user_name= whoami_user_name ;
+idx=find(user_name<30, 1, 'first') ;
+user_name = user_name(1:idx-1) ;