# HG changeset patch # User vipints # Date 1360903116 18000 # Node ID 0f80a51417048abb60dccb042ec0a6f899df374f version 0.3 uploaded diff -r 000000000000 -r 0f80a5141704 rDiff/INSTALL --- /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 : + +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 diff -r 000000000000 -r 0f80a5141704 rDiff/Makefile --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/README --- /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, AndrĖ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 diff -r 000000000000 -r 0f80a5141704 rDiff/bin/genarglist.sh --- /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 + diff -r 000000000000 -r 0f80a5141704 rDiff/bin/genes_cell2struct --- /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 $@`" diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff --- /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" + diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff_config.sh --- /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= diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff_config.sh.bak --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff_config.sh.sample --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff_gendata --- /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 $@`" diff -r 000000000000 -r 0f80a5141704 rDiff/bin/rdiff_wrapper.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 $@`" diff -r 000000000000 -r 0f80a5141704 rDiff/bin/start_interpreter.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 + + diff -r 000000000000 -r 0f80a5141704 rDiff/configure --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/examples/Makefile --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/examples/get_data.sh --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/Alternative_region_counts.mat Binary file rDiff/examples/results/Alternative_region_counts.mat has changed diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/Gene_expression.tab --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/Nonparametric_region_counts.mat Binary file rDiff/examples/results/Nonparametric_region_counts.mat has changed diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/P_values_rDiff_parametric.tab --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/genes.mat --- /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 +# name: genes +# type: struct +# ndims: 2 + 1 100 +# length: 45 +# name: confgenes_id +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: polya_conf +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: utr5_exons +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 923426 + 923492 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 923426 + 923492 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 404600 + 404627 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 404600 + 404757 + 404670 + 404915 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 404600 + 404627 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 404600 + 404757 + 404670 + 404915 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 630505 + 630569 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 630505 + 630569 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 630505 + 630569 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 630505 + 630569 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 630505 + 630569 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 626741 + 626913 + 626829 + 626918 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 626780 + 626913 + 626829 + 626918 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 626741 + 626917 + 626829 + 626918 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 643972 + 644349 + 644256 + 644521 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 644476 + 644605 + 644478 + 644903 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 644485 + 644539 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 643921 + 644159 + 644349 + 643949 + 644261 + 644532 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389568 + 389647 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389568 + 389647 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389568 + 389647 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 316187 + 316204 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 316128 + 316204 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1261411 + 1261426 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1261411 + 1261425 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 46789 + 47019 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 46789 + 47019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 37061 + 37372 + 37568 + 37203 + 37398 + 37840 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 37061 + 37372 + 37203 + 37780 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 37061 + 37372 + 37568 + 37203 + 37398 + 37757 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 37061 + 37372 + 37568 + 37203 + 37398 + 37780 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 36836 + 37022 + 37372 + 36921 + 37203 + 37871 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 40877 + 40944 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 40597 + 40927 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 562382 + 562424 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 813471 + 813929 + 813582 + 813975 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 813486 + 813929 + 813605 + 813975 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1080321 + 1080630 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1080321 + 1080630 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 513573 + 513624 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 513573 + 513611 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 907642 + 907699 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 907651 + 907699 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1375128 + 1375382 + 1375211 + 1375742 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1375598 + 1375762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 365209 + 365625 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 365567 + 365625 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 130099 + 130371 + 130149 + 130570 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 130099 + 130371 + 130149 + 130577 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 711763 + 711803 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 711763 + 711803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 237647 + 237817 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 236537 + 236672 + 237503 + 236548 + 237023 + 237817 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 1219325 + 1219578 + 1219793 + 1219352 + 1219633 + 1219914 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 2 + 1219325 + 1219578 + 1219793 + 1219998 + 1219352 + 1219633 + 1219906 + 1220137 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 52869 + 53022 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 50954 + 51063 + 50963 + 51108 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 50954 + 51125 + 50963 + 51199 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 50954 + 51125 + 50963 + 51197 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 50954 + 51122 + 50963 + 51187 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 175782 + 175862 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 176141 + 176592 + 176339 + 176607 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 415079 + 415154 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 415079 + 415154 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 410748 + 410803 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 410748 + 410803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 944595 + 944772 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 944572 + 944772 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 944595 + 944772 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 729935 + 730140 + 730024 + 730148 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 729901 + 730140 + 730057 + 730148 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 918299 + 918308 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 918299 + 918308 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 602497 + 602673 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 602601 + 602673 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1153895 + 1154495 + 1153940 + 1154652 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 1153095 + 1153717 + 1154495 + 1153345 + 1153940 + 1154652 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1153895 + 1154495 + 1153940 + 1154652 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1153895 + 1154495 + 1153940 + 1154596 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 231915 + 232397 + 231928 + 232508 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 231915 + 232246 + 231928 + 232322 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 662191 + 662427 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 662191 + 662333 + 662253 + 662456 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 686884 + 687114 + 687009 + 687315 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 686884 + 687114 + 687009 + 687315 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 686996 + 687114 + 687009 + 687315 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 72339 + 72583 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 72357 + 72583 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 933512 + 934055 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 933512 + 934055 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 109032 + 109595 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 109076 + 109413 + 109331 + 109595 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 108946 + 109406 + 109331 + 109595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 795159 + 795368 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 795159 + 795376 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 300441 + 300602 + 300515 + 300729 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 300441 + 300602 + 300751 + 300515 + 300665 + 300846 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 2 + 300441 + 300602 + 300751 + 301487 + 302053 + 300515 + 300665 + 300826 + 301544 + 302315 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 293342 + 293396 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 293342 + 293500 + 293410 + 293595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 666420 + 666451 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 666420 + 666452 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 666420 + 666451 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 666244 + 666350 + 666262 + 666451 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 418767 + 418987 + 419297 + 418878 + 419211 + 419650 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 418767 + 418818 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 418748 + 418818 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1361844 + 1361981 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1361844 + 1362019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389812 + 389876 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389821 + 389876 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 389823 + 389876 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 99922 + 100657 + 100032 + 100683 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 100031 + 100657 + 100221 + 100683 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 99894 + 100683 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 635144 + 635474 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 635144 + 635474 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 347891 + 348046 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 347974 + 348046 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 996115 + 996426 + 996218 + 996432 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 996115 + 996426 + 996218 + 996432 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 199639 + 199890 + 200511 + 199764 + 199960 + 200526 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 199791 + 200511 + 199960 + 200526 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 195812 + 195980 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 195780 + 195980 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 773411 + 773543 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 773411 + 773989 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 202136 + 202345 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 202136 + 202345 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1142960 + 1143053 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1142960 + 1143051 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 227176 + 227302 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 226960 + 227078 + 227049 + 227302 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1070396 + 1070687 + 1070494 + 1070927 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1070396 + 1070687 + 1070494 + 1071047 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1036537 + 1036610 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1036537 + 1036610 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 867493 + 867625 + 867520 + 867733 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 867493 + 867629 + 867511 + 867674 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 143564 + 143764 + 143677 + 143773 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 143715 + 143773 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 864019 + 864125 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 864019 + 864075 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1333426 + 1333567 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1333426 + 1333534 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 879553 + 880158 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 879286 + 879931 + 879300 + 880158 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 981157 + 981772 + 981160 + 981885 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 980870 + 981772 + 981160 + 981868 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 981157 + 981562 + 981160 + 981762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 325379 + 325473 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 325379 + 325473 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 325379 + 325473 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1187901 + 1188186 + 1188006 + 1188517 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1187901 + 1188186 + 1188073 + 1188276 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 951696 + 951730 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 951696 + 951810 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 951696 + 951827 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 651797 + 651907 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 651797 + 651907 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 970058 + 970130 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 977685 + 977761 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 977685 + 977761 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 182066 + 182358 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 182066 + 182252 + 182135 + 182293 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 167798 + 167842 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 167798 + 167842 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 114286 + 114299 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 114286 + 114299 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 518251 + 519036 + 518379 + 519037 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 518254 + 519033 + 518379 + 519037 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 807396 + 807951 + 807511 + 807970 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 807361 + 807951 + 807632 + 807970 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1226575 + 1226749 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1226575 + 1226749 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 966622 + 966757 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 274239 + 274383 + 274249 + 274569 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 274239 + 274383 + 274289 + 274569 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 354845 + 354969 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 354845 + 354969 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1013715 + 1014085 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 1013715 + 1014621 + 1014767 + 1014544 + 1014677 + 1014824 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1051343 + 1051769 + 1051492 + 1051803 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1053126 + 1053171 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1051312 + 1051769 + 1051492 + 1051803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 8666 + 8737 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 8666 + 8737 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 67512 + 67625 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 67512 + 67625 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 67512 + 67625 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 74443 + 74660 + 74455 + 74737 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 74443 + 74660 + 74449 + 74731 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 315831 + 315902 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 315831 + 315902 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 315831 + 315902 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 315831 + 315902 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 315644 + 315902 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 739679 + 739715 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 739679 + 739715 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 706457 + 706631 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 706457 + 706630 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 591826 + 592115 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 591826 + 592115 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 135118 + 135322 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 135216 + 135707 + 135269 + 135831 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1198118 + 1198788 + 1198327 + 1198860 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1198508 + 1198788 + 1198638 + 1198860 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 584260 + 584397 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 584260 + 584397 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 450246 + 450360 + 450258 + 450425 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 450246 + 450360 + 450251 + 450426 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1292080 + 1292538 + 1292156 + 1292541 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1292111 + 1292541 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 373501 + 373694 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 775527 + 775808 + 775650 + 775822 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 775622 + 775822 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 761282 + 761321 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 761282 + 761321 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 23146 + 23519 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 23416 + 23519 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 308991 + 309109 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 308991 + 309109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1240375 + 1240582 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1240375 + 1240582 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 669773 + 669837 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 669773 + 669837 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 669773 + 669805 + + + + + + + + +# name: transcript_valid +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: is_alt_spliced +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + + + +# name: id +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: scalar +1 + + + +# name: +# type: scalar +2 + + + +# name: +# type: scalar +3 + + + +# name: +# type: scalar +4 + + + +# name: +# type: scalar +5 + + + +# name: +# type: scalar +6 + + + +# name: +# type: scalar +7 + + + +# name: +# type: scalar +8 + + + +# name: +# type: scalar +9 + + + +# name: +# type: scalar +10 + + + +# name: +# type: scalar +11 + + + +# name: +# type: scalar +12 + + + +# name: +# type: scalar +13 + + + +# name: +# type: scalar +14 + + + +# name: +# type: scalar +15 + + + +# name: +# type: scalar +16 + + + +# name: +# type: scalar +17 + + + +# name: +# type: scalar +18 + + + +# name: +# type: scalar +19 + + + +# name: +# type: scalar +20 + + + +# name: +# type: scalar +21 + + + +# name: +# type: scalar +22 + + + +# name: +# type: scalar +23 + + + +# name: +# type: scalar +24 + + + +# name: +# type: scalar +25 + + + +# name: +# type: scalar +26 + + + +# name: +# type: scalar +27 + + + +# name: +# type: scalar +28 + + + +# name: +# type: scalar +29 + + + +# name: +# type: scalar +30 + + + +# name: +# type: scalar +31 + + + +# name: +# type: scalar +32 + + + +# name: +# type: scalar +33 + + + +# name: +# type: scalar +34 + + + +# name: +# type: scalar +35 + + + +# name: +# type: scalar +36 + + + +# name: +# type: scalar +37 + + + +# name: +# type: scalar +38 + + + +# name: +# type: scalar +39 + + + +# name: +# type: scalar +40 + + + +# name: +# type: scalar +41 + + + +# name: +# type: scalar +42 + + + +# name: +# type: scalar +43 + + + +# name: +# type: scalar +44 + + + +# name: +# type: scalar +45 + + + +# name: +# type: scalar +46 + + + +# name: +# type: scalar +47 + + + +# name: +# type: scalar +48 + + + +# name: +# type: scalar +49 + + + +# name: +# type: scalar +50 + + + +# name: +# type: scalar +51 + + + +# name: +# type: scalar +52 + + + +# name: +# type: scalar +53 + + + +# name: +# type: scalar +54 + + + +# name: +# type: scalar +55 + + + +# name: +# type: scalar +56 + + + +# name: +# type: scalar +57 + + + +# name: +# type: scalar +58 + + + +# name: +# type: scalar +59 + + + +# name: +# type: scalar +60 + + + +# name: +# type: scalar +61 + + + +# name: +# type: scalar +62 + + + +# name: +# type: scalar +63 + + + +# name: +# type: scalar +64 + + + +# name: +# type: scalar +65 + + + +# name: +# type: scalar +66 + + + +# name: +# type: scalar +67 + + + +# name: +# type: scalar +68 + + + +# name: +# type: scalar +69 + + + +# name: +# type: scalar +70 + + + +# name: +# type: scalar +71 + + + +# name: +# type: scalar +72 + + + +# name: +# type: scalar +73 + + + +# name: +# type: scalar +74 + + + +# name: +# type: scalar +75 + + + +# name: +# type: scalar +76 + + + +# name: +# type: scalar +77 + + + +# name: +# type: scalar +78 + + + +# name: +# type: scalar +79 + + + +# name: +# type: scalar +80 + + + +# name: +# type: scalar +81 + + + +# name: +# type: scalar +82 + + + +# name: +# type: scalar +83 + + + +# name: +# type: scalar +84 + + + +# name: +# type: scalar +85 + + + +# name: +# type: scalar +86 + + + +# name: +# type: scalar +87 + + + +# name: +# type: scalar +88 + + + +# name: +# type: scalar +89 + + + +# name: +# type: scalar +90 + + + +# name: +# type: scalar +91 + + + +# name: +# type: scalar +92 + + + +# name: +# type: scalar +93 + + + +# name: +# type: scalar +94 + + + +# name: +# type: scalar +95 + + + +# name: +# type: scalar +96 + + + +# name: +# type: scalar +97 + + + +# name: +# type: scalar +98 + + + +# name: +# type: scalar +99 + + + +# name: +# type: scalar +100 + + + + + +# name: exons +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 923426 923756 + 923828 923978 + 924093 924313 + 924470 924727 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 923426 923756 + 923828 923978 + 924093 924356 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 5 +# name: +# 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: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 642751 643208 + 643304 643554 + 643643 643745 + 643876 644256 + 644349 644521 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 642751 643208 + 643304 643554 + 643643 643745 + 643876 643949 + 644159 644256 + 644349 644478 + 644605 644903 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 642751 643208 + 643304 643554 + 643643 643745 + 643876 643949 + 644159 644256 + 644349 644539 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 642751 643208 + 643304 643554 + 643643 643745 + 643876 643949 + 644159 644261 + 644349 644532 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# type: matrix +# rows: 8 +# columns: 2 + 387280 387503 + 387583 388406 + 388538 388609 + 388715 388760 + 388850 388940 + 389049 389138 + 389225 389301 + 389409 389647 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 45295 45559 + 45645 45954 + 46043 46145 + 46375 47019 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 45295 45559 + 45645 45954 + 46043 46145 + 46372 47019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# 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: +# type: matrix +# rows: 8 +# columns: 2 + 33665 34327 + 34400 35474 + 35566 35647 + 35729 35963 + 36623 36685 + 36809 36921 + 37022 37203 + 37372 37780 + + + +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 6 +# columns: 2 + 38751 39054 + 39135 39287 + 39408 39814 + 40212 40329 + 40472 40535 + 40674 40944 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 38751 39054 + 39135 39287 + 39408 39814 + 40212 40329 + 40472 40927 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 560609 561695 + 561901 562424 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 560609 561320 + 561452 561695 + 561901 562382 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 813471 813582 + 813929 816750 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 813486 813605 + 813929 816750 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 511764 511990 + 512073 512121 + 512213 512262 + 512377 512430 + 512524 512620 + 513146 513246 + 513331 513624 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 511764 511990 + 512073 512121 + 512213 512262 + 512377 512430 + 512524 512620 + 513146 513249 + 513331 513611 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 907642 907756 + 907849 907948 + 908033 908571 + 908655 909011 + 909090 909377 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 907651 907756 + 907849 907948 + 908039 908571 + 908655 909011 + 909090 909377 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 1373233 1373661 + 1373750 1373834 + 1373916 1374102 + 1374247 1374437 + 1374741 1374847 + 1375028 1375211 + 1375382 1375742 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 1373233 1373661 + 1373750 1373834 + 1373916 1374102 + 1374247 1374437 + 1374741 1374847 + 1375028 1375221 + 1375382 1375762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 365209 366326 + 366723 366860 + 366986 367341 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 365567 366860 + 366986 367341 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 710017 710136 + 710240 710333 + 710694 710801 + 710954 711016 + 711091 711184 + 711262 711408 + 711504 711803 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 710062 710136 + 710240 710333 + 710694 711016 + 711091 711184 + 711262 711408 + 711504 711803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 1218004 1218181 + 1218281 1219352 + 1219578 1219633 + 1219793 1219914 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1217947 1218181 + 1218281 1219352 + 1219578 1219633 + 1219793 1219906 + 1219998 1220137 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 52869 53184 + 53484 53625 + 53703 54686 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 52239 52347 + 52434 52731 + 52938 53184 + 53484 53625 + 53703 54693 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 50089 50337 + 50418 50631 + 50882 50963 + 51063 51108 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 50074 50337 + 50418 50631 + 50882 50963 + 51125 51199 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 50089 50337 + 50418 50447 + 50495 50631 + 50882 50963 + 51125 51197 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 50089 50337 + 50418 50631 + 50882 50963 + 51122 51187 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 175782 176033 + 176207 176339 + 176592 176753 + 177025 178401 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 176141 176339 + 176592 176753 + 177025 178401 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 415079 415671 + 415742 415962 + 416045 416436 + 416731 416839 + 416962 417163 + 417248 417521 + 417623 418011 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 415079 415671 + 415742 415962 + 416045 416436 + 416743 416839 + 416962 417163 + 417248 417521 + 417623 418011 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 410748 410894 + 411177 411254 + 411336 411598 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 410748 410894 + 411177 411598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 729935 730024 + 730140 730416 + 730497 730611 + 730916 731074 + 731176 731558 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 729901 730057 + 730140 730416 + 730497 730611 + 730916 731074 + 731176 731526 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 8 +# columns: 2 + 918299 918602 + 918868 919009 + 919096 919189 + 919267 919394 + 919503 919610 + 919737 919818 + 919913 919996 + 920087 920508 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 918299 918602 + 918868 919009 + 919096 919189 + 919267 919394 + 919503 919610 + 919737 919818 + 919913 920489 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 602497 602755 + 602980 603126 + 603601 603679 + 603775 604293 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 602601 602755 + 602980 603126 + 603601 603640 + 603784 604273 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 230993 231655 + 231783 231928 + 232397 232508 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 230993 231655 + 231783 231928 + 232246 232322 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 661176 661790 + 661900 661949 + 662041 662427 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 661308 661790 + 661900 661949 + 662041 662253 + 662333 662456 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 72339 72670 + 73087 73164 + 73287 73396 + 73488 73741 + 73822 74097 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 72357 72670 + 72915 73017 + 73087 73164 + 73287 73396 + 73488 73741 + 73822 74097 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 933512 934709 + 934785 935070 + 935164 935482 + 935570 935798 + 935882 936098 + 936189 936573 + 936655 937044 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 933512 934709 + 934785 935070 + 935164 935482 + 935570 935798 + 935882 936098 + 936189 937044 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 1 +# columns: 2 + 109032 111610 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 109076 109331 + 109413 111536 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 108946 109331 + 109406 111598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 793352 793731 + 793828 793930 + 794021 794180 + 794327 794410 + 794541 794650 + 794898 794969 + 795101 795368 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 793358 793731 + 793828 793930 + 794021 794198 + 794327 794410 + 794541 794650 + 794898 794969 + 795101 795376 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 298534 300515 + 300602 300729 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 298534 300515 + 300602 300665 + 300751 300846 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 298534 300515 + 300602 300665 + 300751 300826 + 301487 301544 + 302053 302315 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 293342 293410 + 293500 293753 + 294055 294121 + 294210 294387 + 294511 295041 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 293342 293410 + 293500 293757 + 294055 294121 + 294210 294387 + 294511 295041 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 665167 665777 + 665861 665910 + 666113 666256 + 666350 666451 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 665167 665777 + 665861 665910 + 666113 666262 + 666350 666452 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 665151 665234 + 665249 665777 + 665861 665910 + 666113 666256 + 666350 666451 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 665167 665777 + 665857 665910 + 666113 666262 + 666350 666451 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 99922 100032 + 100657 101835 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 100031 100221 + 100657 101835 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 99894 101835 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 6 +# columns: 2 + 635144 635652 + 635739 635987 + 636081 636360 + 636592 636730 + 636828 636887 + 636978 637263 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 635144 635652 + 635739 635987 + 636081 636360 + 636592 636730 + 636828 636887 + 636984 637263 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 199639 199764 + 199890 199960 + 200511 201776 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 199791 199960 + 200511 201776 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 6 +# columns: 2 + 195812 196543 + 197115 197220 + 197300 197423 + 197501 197672 + 197775 198184 + 198267 198636 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 195780 196543 + 197115 197220 + 197300 197423 + 197501 197672 + 197775 197905 + 197974 198184 + 198267 198685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 773411 773692 + 774096 774154 + 774231 774540 + 774652 774701 + 774785 774880 + 774968 775048 + 775122 775345 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 773411 774154 + 774231 774540 + 774652 774701 + 774785 774880 + 774968 775048 + 775122 775345 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 202136 202509 + 202782 202912 + 202991 203129 + 203267 204336 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 202136 202509 + 202782 202912 + 202991 203129 + 203267 203600 + 203760 203944 + 204029 204190 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 1141603 1142100 + 1142575 1142633 + 1142720 1142869 + 1142957 1143053 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 1141603 1142100 + 1142578 1142633 + 1142720 1142869 + 1142957 1143051 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 225664 226081 + 226170 226311 + 226395 226691 + 226848 227302 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 225664 226081 + 226170 226311 + 226395 226691 + 226848 227049 + 227078 227302 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 865914 866941 + 867408 867520 + 867625 867733 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 865914 866941 + 867408 867511 + 867629 867674 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1331465 1332000 + 1332136 1332199 + 1332388 1332509 + 1332588 1332730 + 1333236 1333567 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1331573 1332000 + 1332136 1332199 + 1332388 1332509 + 1332588 1332730 + 1333350 1333534 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 4 +# columns: 2 + 877861 878456 + 878539 878655 + 878734 878810 + 878910 880158 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 877861 878456 + 878539 878655 + 878734 878810 + 878910 879300 + 879931 880158 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 6 +# columns: 2 + 979307 979799 + 979890 980103 + 980184 980355 + 980777 980894 + 980986 981160 + 981772 981885 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 979307 979799 + 979890 980103 + 980184 980355 + 980777 981160 + 981772 981868 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 979307 979799 + 979890 980103 + 980184 980355 + 980777 980894 + 980986 981160 + 981562 981762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1185549 1186306 + 1186451 1187164 + 1187259 1187484 + 1187588 1188006 + 1188186 1188517 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1185555 1186306 + 1186451 1187164 + 1187259 1187484 + 1187588 1188073 + 1188186 1188276 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 967502 968568 + 969314 969711 + 969907 970130 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 967520 968568 + 969314 969705 + 969907 970058 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 976096 976501 + 977279 977761 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 977101 977761 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 180119 180852 + 181346 181422 + 182060 182358 + + + +# name: +# type: matrix +# rows: 4 +# columns: 2 + 180058 180852 + 181346 181422 + 182060 182135 + 182252 182293 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 166588 166871 + 167013 167842 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 166617 167842 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 114286 114434 + 114619 115550 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 114286 114434 + 114619 115340 + 115961 116109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 518251 518379 + 519036 520438 + + + +# name: +# type: matrix +# rows: 2 +# columns: 2 + 518254 518379 + 519033 520438 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 5 +# columns: 2 + 163431 163517 + 163934 164104 + 164225 164687 + 164771 165381 + 165449 166240 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 163432 163517 + 163617 164108 + 164230 164688 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 163419 163517 + 163934 164136 + 164225 164577 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 352636 353162 + 353237 354969 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 352636 354969 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# type: matrix +# rows: 8 +# columns: 2 + 6789 7069 + 7156 7450 + 7563 7649 + 7761 7835 + 7941 7987 + 8235 8325 + 8416 8464 + 8570 8737 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 73930 74250 + 74337 74455 + 74660 74737 + + + +# name: +# type: matrix +# rows: 3 +# columns: 2 + 73930 74250 + 74337 74449 + 74660 74731 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: matrix +# rows: 8 +# columns: 2 + 313214 313418 + 313566 313759 + 313879 313995 + 314086 314225 + 314440 314551 + 314651 314802 + 314890 315015 + 315576 315902 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 313228 313759 + 313879 313995 + 314086 314225 + 314440 314551 + 314651 314802 + 314890 315015 + 315576 315902 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 313209 313752 + 313871 313995 + 314086 314225 + 314440 314551 + 314651 314802 + 314890 315015 + 315576 315902 + + + +# name: +# type: matrix +# rows: 8 +# columns: 2 + 313100 313452 + 313566 313759 + 313879 313995 + 314086 314225 + 314440 314551 + 314651 314802 + 314890 315015 + 315576 315902 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 313228 313759 + 313879 313995 + 314086 314225 + 314440 314551 + 314651 314802 + 315576 315902 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 6 +# columns: 2 + 703905 704494 + 704587 704668 + 705063 705129 + 705301 705367 + 705533 705656 + 706100 706631 + + + +# name: +# type: matrix +# rows: 6 +# columns: 2 + 703905 704494 + 704587 704668 + 705063 705129 + 705301 705367 + 705533 705641 + 706100 706630 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 591826 593230 + 593866 594237 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 591826 593290 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 132327 132744 + 132823 133218 + 133302 133539 + 133640 133752 + 133910 134206 + 134288 134501 + 134581 135322 + + + +# name: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 8 +# columns: 2 + 1198118 1198327 + 1198788 1199115 + 1199197 1199362 + 1199459 1199642 + 1199710 1200305 + 1200424 1200537 + 1200643 1200864 + 1200962 1201528 + + + +# name: +# type: matrix +# rows: 8 +# columns: 2 + 1198508 1198638 + 1198788 1199115 + 1199197 1199362 + 1199459 1199642 + 1199710 1200305 + 1200424 1200537 + 1200643 1200864 + 1200962 1201496 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 8 +# columns: 2 + 448462 448733 + 448811 448973 + 449054 449123 + 449224 449489 + 449713 449838 + 449938 450046 + 450150 450258 + 450360 450425 + + + +# name: +# type: matrix +# rows: 8 +# columns: 2 + 448468 448733 + 448811 448973 + 449054 449123 + 449224 449489 + 449713 449838 + 449938 450046 + 450150 450251 + 450360 450426 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 2 +# columns: 2 + 1292080 1292156 + 1292538 1293358 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 1292111 1293249 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 7 +# columns: 2 + 306479 306800 + 306892 307359 + 307440 307805 + 307888 308070 + 308147 308318 + 308396 308573 + 308796 309109 + + + +# name: +# type: matrix +# rows: 7 +# columns: 2 + 306479 306800 + 306892 307359 + 307440 307805 + 307888 308070 + 308147 308318 + 308399 308573 + 308796 309109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 3 +# columns: 2 + 1240375 1240785 + 1241057 1241678 + 1241761 1242121 + + + +# name: +# type: matrix +# rows: 5 +# columns: 2 + 1240375 1240785 + 1241057 1241344 + 1241425 1241543 + 1241616 1241678 + 1241761 1242122 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 923492 + 923828 + 924093 + 923756 + 923978 + 924288 + 0 + 2 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 923492 + 923828 + 924093 + 923756 + 923978 + 924288 + 0 + 2 + 1 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 5 +# name: +# 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: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 643062 + 643304 + 643643 + 643876 + 643208 + 643554 + 643745 + 643972 + 2 + 1 + 2 + 0 + + + +# name: +# 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: +# 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: +# type: int64 matrix +# ndims: 2 + 4 3 + 643062 + 643304 + 643643 + 643876 + 643208 + 643554 + 643745 + 643921 + 2 + 1 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 45502 + 45645 + 46043 + 46375 + 45559 + 45954 + 46145 + 46789 + 0 + 1 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 45502 + 45645 + 46043 + 46372 + 45559 + 45954 + 46145 + 46789 + 0 + 1 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# 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: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# type: int64 matrix +# ndims: 2 + 5 3 + 38897 + 39135 + 39408 + 40212 + 40472 + 39054 + 39287 + 39814 + 40329 + 40597 + 0 + 0 + 2 + 0 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 561006 + 561901 + 561695 + 562382 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 561006 + 561452 + 561901 + 561320 + 561695 + 562382 + 0 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 813975 + 816624 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 813975 + 816624 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 907699 + 907849 + 908033 + 908655 + 909090 + 907756 + 907948 + 908571 + 909011 + 909246 + 0 + 2 + 1 + 2 + 2 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 907699 + 907849 + 908039 + 908655 + 909090 + 907756 + 907948 + 908571 + 909011 + 909246 + 0 + 2 + 1 + 2 + 2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 365625 + 366723 + 366986 + 366326 + 366860 + 367150 + 0 + 0 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 365625 + 366366 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# type: int64 matrix +# ndims: 2 + 4 3 + 710911 + 711091 + 711262 + 711504 + 711016 + 711184 + 711408 + 711763 + 0 + 1 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 1218019 + 1218281 + 1218181 + 1219325 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 1218019 + 1218281 + 1218181 + 1219325 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 53022 + 53484 + 53703 + 53184 + 53625 + 54495 + 0 + 2 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 52239 + 52434 + 52938 + 53484 + 53703 + 52347 + 52731 + 53184 + 53625 + 54495 + 0 + 2 + 1 + 0 + 2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 50283 + 50418 + 50882 + 50337 + 50631 + 50954 + 1 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 50283 + 50418 + 50882 + 50337 + 50631 + 50954 + 1 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 50283 + 50418 + 50495 + 50882 + 50337 + 50447 + 50631 + 50954 + 0 + 0 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 50283 + 50418 + 50882 + 50337 + 50631 + 50954 + 1 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 175862 + 176207 + 176592 + 177025 + 176033 + 176339 + 176753 + 178052 + 0 + 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 176607 + 177025 + 176753 + 178052 + 0 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 410803 + 411177 + 411336 + 410894 + 411254 + 411384 + 0 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 410803 + 411177 + 410894 + 411362 + 0 + 1 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 730148 + 730497 + 730916 + 731176 + 730416 + 730611 + 731074 + 731380 + 0 + 1 + 0 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 730148 + 730497 + 730916 + 731176 + 730416 + 730611 + 731074 + 731380 + 0 + 1 + 0 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 602673 + 602980 + 603601 + 603775 + 602755 + 603126 + 603679 + 604135 + 0 + 1 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 602673 + 602980 + 603601 + 603784 + 602755 + 603126 + 603640 + 604135 + 0 + 1 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 231163 + 231783 + 231655 + 231915 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 231163 + 231783 + 231655 + 231915 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 661362 + 661900 + 662041 + 661790 + 661949 + 662191 + 0 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 661362 + 661900 + 662041 + 661790 + 661949 + 662191 + 0 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 72583 + 73087 + 73287 + 73488 + 73822 + 72670 + 73164 + 73396 + 73741 + 73884 + 0 + 2 + 2 + 0 + 1 + + + +# name: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 109595 + 111368 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 109595 + 111368 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 109595 + 111368 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 298716 + 300441 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 298716 + 300441 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 298716 + 300441 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 293396 + 293500 + 294055 + 294210 + 294511 + 293410 + 293753 + 294121 + 294387 + 294889 + 0 + 0 + 1 + 0 + 2 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 293595 + 294055 + 294210 + 294511 + 293757 + 294121 + 294387 + 294889 + 0 + 2 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 665307 + 665861 + 666113 + 666350 + 665777 + 665910 + 666256 + 666420 + 2 + 1 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 665307 + 665861 + 666113 + 666350 + 665777 + 665910 + 666262 + 666420 + 2 + 1 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 665307 + 665861 + 666113 + 666350 + 665777 + 665910 + 666256 + 666420 + 2 + 1 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 665307 + 665857 + 666113 + 665777 + 665910 + 666244 + 0 + 0 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 100683 + 101679 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 100683 + 101679 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 100683 + 101679 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 200526 + 201576 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 200526 + 201576 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 195980 + 197115 + 197300 + 197501 + 197775 + 196543 + 197220 + 197423 + 197672 + 197974 + 0 + 0 + 2 + 1 + 0 + + + +# name: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 202345 + 202782 + 202991 + 203267 + 202509 + 202912 + 203129 + 203663 + 0 + 0 + 1 + 0 + + + +# name: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 1141851 + 1142575 + 1142720 + 1142957 + 1142100 + 1142633 + 1142869 + 1142960 + 0 + 2 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 1141851 + 1142578 + 1142720 + 1142957 + 1142100 + 1142633 + 1142869 + 1142960 + 0 + 2 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 225985 + 226170 + 226395 + 226848 + 226081 + 226311 + 226691 + 227176 + 0 + 1 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 225985 + 226170 + 226395 + 226848 + 226081 + 226311 + 226691 + 226960 + 0 + 1 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 866216 + 867408 + 866941 + 867493 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 866216 + 867408 + 866941 + 867493 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 1331856 + 1332136 + 1332388 + 1332588 + 1333236 + 1332000 + 1332199 + 1332509 + 1332730 + 1333426 + 2 + 0 + 2 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 1331856 + 1332136 + 1332388 + 1332588 + 1333350 + 1332000 + 1332199 + 1332509 + 1332730 + 1333426 + 2 + 0 + 2 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 877947 + 878539 + 878734 + 878910 + 878456 + 878655 + 878810 + 879553 + 2 + 2 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 877947 + 878539 + 878734 + 878910 + 878456 + 878655 + 878810 + 879286 + 2 + 2 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 979610 + 979890 + 980184 + 980777 + 980986 + 979799 + 980103 + 980355 + 980894 + 981157 + 2 + 0 + 1 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 979610 + 979890 + 980184 + 980777 + 979799 + 980103 + 980355 + 980870 + 0 + 1 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 979610 + 979890 + 980184 + 980777 + 980986 + 979799 + 980103 + 980355 + 980894 + 981157 + 2 + 0 + 1 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 1185718 + 1186451 + 1187259 + 1187588 + 1186306 + 1187164 + 1187484 + 1187901 + 0 + 0 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 4 3 + 1185718 + 1186451 + 1187259 + 1187588 + 1186306 + 1187164 + 1187484 + 1187901 + 0 + 0 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 967595 + 969314 + 969907 + 968568 + 969711 + 970058 + 2 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 967595 + 969314 + 969907 + 968568 + 969705 + 970058 + 2 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 976427 + 977279 + 976501 + 977685 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 977232 + 977685 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 180400 + 181346 + 182060 + 180852 + 181422 + 182066 + 0 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 3 + 180400 + 181346 + 182060 + 180852 + 181422 + 182066 + 0 + 2 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 166852 + 167013 + 166871 + 167798 + 0 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 166928 + 167798 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 114299 + 114619 + 114434 + 115297 + 0 + 2 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 114299 + 114619 + 114434 + 115297 + 0 + 2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 519037 + 520219 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 519037 + 520219 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 0 +# columns: 0 + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 352841 + 353237 + 353162 + 354845 + 2 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 353213 + 354845 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 74104 + 74337 + 74250 + 74443 + 1 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 74104 + 74337 + 74250 + 74443 + 1 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# 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: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 592115 + 593201 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 592115 + 593201 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1292541 + 1293249 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1292541 + 1293249 + 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 3 + 1240582 + 1241057 + 1240785 + 1241376 + 0 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 5 3 + 1240582 + 1241057 + 1241425 + 1241616 + 1241761 + 1240785 + 1241344 + 1241543 + 1241678 + 1241811 + 0 + 0 + 0 + 1 + 1 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# 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: +# 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: +# 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: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: chr_num +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: transcript_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: tis +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +923492 + + + +# name: +# type: int64 scalar +923492 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +404627 + + + +# name: +# type: int64 scalar +404915 + + + +# name: +# type: int64 scalar +404627 + + + +# name: +# type: int64 scalar +404915 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +630569 + + + +# name: +# type: int64 scalar +630569 + + + +# name: +# type: int64 scalar +630569 + + + +# name: +# type: int64 scalar +630569 + + + +# name: +# type: int64 scalar +630569 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +626918 + + + +# name: +# type: int64 scalar +626918 + + + +# name: +# type: int64 scalar +626918 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +643972 + + + +# name: +# type: int64 scalar +644476 + + + +# name: +# type: int64 scalar +644485 + + + +# name: +# type: int64 scalar +643921 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +389568 + + + +# name: +# type: int64 scalar +389568 + + + +# name: +# type: int64 scalar +389568 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +316204 + + + +# name: +# type: int64 scalar +316204 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1261411 + + + +# name: +# type: int64 scalar +1261411 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +46789 + + + +# name: +# type: int64 scalar +46789 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +37061 + + + +# name: +# type: int64 scalar +37061 + + + +# name: +# type: int64 scalar +37061 + + + +# name: +# type: int64 scalar +37061 + + + +# name: +# type: int64 scalar +36836 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +40877 + + + +# name: +# type: int64 scalar +40597 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +562382 + + + +# name: +# type: int64 scalar +562382 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +813975 + + + +# name: +# type: int64 scalar +813975 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1080321 + + + +# name: +# type: int64 scalar +1080321 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +513573 + + + +# name: +# type: int64 scalar +513573 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +907699 + + + +# name: +# type: int64 scalar +907699 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1375128 + + + +# name: +# type: int64 scalar +1375598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +365625 + + + +# name: +# type: int64 scalar +365625 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +130099 + + + +# name: +# type: int64 scalar +130099 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +711763 + + + +# name: +# type: int64 scalar +711763 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +237647 + + + +# name: +# type: int64 scalar +236537 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1219325 + + + +# name: +# type: int64 scalar +1219325 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +53022 + + + +# name: +# type: int64 scalar +52239 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +50954 + + + +# name: +# type: int64 scalar +50954 + + + +# name: +# type: int64 scalar +50954 + + + +# name: +# type: int64 scalar +50954 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +175862 + + + +# name: +# type: int64 scalar +176607 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +415154 + + + +# name: +# type: int64 scalar +415154 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +410803 + + + +# name: +# type: int64 scalar +410803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +944772 + + + +# name: +# type: int64 scalar +944772 + + + +# name: +# type: int64 scalar +944772 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +730148 + + + +# name: +# type: int64 scalar +730148 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +918308 + + + +# name: +# type: int64 scalar +918308 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +602673 + + + +# name: +# type: int64 scalar +602673 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +1153895 + + + +# name: +# type: int64 scalar +1153095 + + + +# name: +# type: int64 scalar +1153895 + + + +# name: +# type: int64 scalar +1153895 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +231915 + + + +# name: +# type: int64 scalar +231915 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +662191 + + + +# name: +# type: int64 scalar +662191 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +686884 + + + +# name: +# type: int64 scalar +686884 + + + +# name: +# type: int64 scalar +686996 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +72583 + + + +# name: +# type: int64 scalar +72583 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +934055 + + + +# name: +# type: int64 scalar +934055 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +109595 + + + +# name: +# type: int64 scalar +109595 + + + +# name: +# type: int64 scalar +109595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +795159 + + + +# name: +# type: int64 scalar +795159 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +300441 + + + +# name: +# type: int64 scalar +300441 + + + +# name: +# type: int64 scalar +300441 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +293396 + + + +# name: +# type: int64 scalar +293595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +666420 + + + +# name: +# type: int64 scalar +666420 + + + +# name: +# type: int64 scalar +666420 + + + +# name: +# type: int64 scalar +666244 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +419650 + + + +# name: +# type: int64 scalar +418818 + + + +# name: +# type: int64 scalar +418818 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1361844 + + + +# name: +# type: int64 scalar +1361844 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +389876 + + + +# name: +# type: int64 scalar +389876 + + + +# name: +# type: int64 scalar +389876 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +100683 + + + +# name: +# type: int64 scalar +100683 + + + +# name: +# type: int64 scalar +100683 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +635474 + + + +# name: +# type: int64 scalar +635474 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +348046 + + + +# name: +# type: int64 scalar +348046 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +996432 + + + +# name: +# type: int64 scalar +996432 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +200526 + + + +# name: +# type: int64 scalar +200526 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +195980 + + + +# name: +# type: int64 scalar +195980 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +773543 + + + +# name: +# type: int64 scalar +773989 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +202345 + + + +# name: +# type: int64 scalar +202345 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1142960 + + + +# name: +# type: int64 scalar +1142960 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +227176 + + + +# name: +# type: int64 scalar +226960 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1070396 + + + +# name: +# type: int64 scalar +1070396 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1036610 + + + +# name: +# type: int64 scalar +1036610 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +867493 + + + +# name: +# type: int64 scalar +867493 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +143773 + + + +# name: +# type: int64 scalar +143773 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +864019 + + + +# name: +# type: int64 scalar +864019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1333426 + + + +# name: +# type: int64 scalar +1333426 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +879553 + + + +# name: +# type: int64 scalar +879286 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +981157 + + + +# name: +# type: int64 scalar +980870 + + + +# name: +# type: int64 scalar +981157 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +325473 + + + +# name: +# type: int64 scalar +325473 + + + +# name: +# type: int64 scalar +325473 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1187901 + + + +# name: +# type: int64 scalar +1187901 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +951696 + + + +# name: +# type: int64 scalar +951696 + + + +# name: +# type: int64 scalar +951696 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +651797 + + + +# name: +# type: int64 scalar +651797 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +970058 + + + +# name: +# type: int64 scalar +970058 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +977685 + + + +# name: +# type: int64 scalar +977685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +182066 + + + +# name: +# type: int64 scalar +182066 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +167798 + + + +# name: +# type: int64 scalar +167798 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +114299 + + + +# name: +# type: int64 scalar +114299 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +519037 + + + +# name: +# type: int64 scalar +519037 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +807970 + + + +# name: +# type: int64 scalar +807970 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1226749 + + + +# name: +# type: int64 scalar +1226749 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +966622 + + + +# name: +# type: int64 scalar +966622 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +274239 + + + +# name: +# type: int64 scalar +274239 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +354845 + + + +# name: +# type: int64 scalar +354845 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1014085 + + + +# name: +# type: int64 scalar +1014824 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +1051803 + + + +# name: +# type: int64 scalar +1053171 + + + +# name: +# type: int64 scalar +1051803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +8666 + + + +# name: +# type: int64 scalar +8666 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +67512 + + + +# name: +# type: int64 scalar +67512 + + + +# name: +# type: int64 scalar +67512 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +74443 + + + +# name: +# type: int64 scalar +74443 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +315831 + + + +# name: +# type: int64 scalar +315831 + + + +# name: +# type: int64 scalar +315831 + + + +# name: +# type: int64 scalar +315831 + + + +# name: +# type: int64 scalar +315644 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +739715 + + + +# name: +# type: int64 scalar +739715 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +706457 + + + +# name: +# type: int64 scalar +706457 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +592115 + + + +# name: +# type: int64 scalar +592115 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +135118 + + + +# name: +# type: int64 scalar +135216 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1198860 + + + +# name: +# type: int64 scalar +1198860 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +584397 + + + +# name: +# type: int64 scalar +584397 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +450246 + + + +# name: +# type: int64 scalar +450246 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1292541 + + + +# name: +# type: int64 scalar +1292541 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +373335 + + + +# name: +# type: int64 scalar +373694 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +775822 + + + +# name: +# type: int64 scalar +775822 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +761321 + + + +# name: +# type: int64 scalar +761321 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +23519 + + + +# name: +# type: int64 scalar +23519 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +308991 + + + +# name: +# type: int64 scalar +308991 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1240582 + + + +# name: +# type: int64 scalar +1240582 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +669773 + + + +# name: +# type: int64 scalar +669773 + + + +# name: +# type: int64 scalar +669773 + + + + + + + + +# name: source +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + +# name: +# type: sq_string +# elements: 1 +# length: 6 +TAIR10 + + + + + +# name: chr +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 4 +Chr1 + + + + + +# name: is_valid +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: exons_confirmed +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: cdsStop +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +924285 + + + +# name: +# type: int64 scalar +924285 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +408483 + + + +# name: +# type: int64 scalar +408483 + + + +# name: +# type: int64 scalar +408483 + + + +# name: +# type: int64 scalar +408483 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +633083 + + + +# name: +# type: int64 scalar +633083 + + + +# name: +# type: int64 scalar +633083 + + + +# name: +# type: int64 scalar +633083 + + + +# name: +# type: int64 scalar +633083 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +629581 + + + +# name: +# type: int64 scalar +628993 + + + +# name: +# type: int64 scalar +629581 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +643065 + + + +# name: +# type: int64 scalar +643065 + + + +# name: +# type: int64 scalar +643065 + + + +# name: +# type: int64 scalar +643065 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +387481 + + + +# name: +# type: int64 scalar +387649 + + + +# name: +# type: int64 scalar +388225 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +319505 + + + +# name: +# type: int64 scalar +319505 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1258762 + + + +# name: +# type: int64 scalar +1258762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +45505 + + + +# name: +# type: int64 scalar +45505 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +33994 + + + +# name: +# type: int64 scalar +33994 + + + +# name: +# type: int64 scalar +33994 + + + +# name: +# type: int64 scalar +33994 + + + +# name: +# type: int64 scalar +33994 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +38900 + + + +# name: +# type: int64 scalar +38900 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +561009 + + + +# name: +# type: int64 scalar +561009 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +816621 + + + +# name: +# type: int64 scalar +816621 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1075986 + + + +# name: +# type: int64 scalar +1075994 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +511918 + + + +# name: +# type: int64 scalar +511918 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +909243 + + + +# name: +# type: int64 scalar +909243 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1373487 + + + +# name: +# type: int64 scalar +1373487 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +367147 + + + +# name: +# type: int64 scalar +366363 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +121584 + + + +# name: +# type: int64 scalar +121584 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +710104 + + + +# name: +# type: int64 scalar +710914 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +233190 + + + +# name: +# type: int64 scalar +233190 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1218022 + + + +# name: +# type: int64 scalar +1218022 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +54492 + + + +# name: +# type: int64 scalar +54492 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +50286 + + + +# name: +# type: int64 scalar +50286 + + + +# name: +# type: int64 scalar +50286 + + + +# name: +# type: int64 scalar +50286 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +178049 + + + +# name: +# type: int64 scalar +178049 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +417794 + + + +# name: +# type: int64 scalar +417794 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +411381 + + + +# name: +# type: int64 scalar +411359 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +947429 + + + +# name: +# type: int64 scalar +947429 + + + +# name: +# type: int64 scalar +947429 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +731377 + + + +# name: +# type: int64 scalar +731377 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +920304 + + + +# name: +# type: int64 scalar +919997 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +604132 + + + +# name: +# type: int64 scalar +604132 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +1148820 + + + +# name: +# type: int64 scalar +1148820 + + + +# name: +# type: int64 scalar +1148820 + + + +# name: +# type: int64 scalar +1148820 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +231166 + + + +# name: +# type: int64 scalar +231166 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +661365 + + + +# name: +# type: int64 scalar +661365 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +683067 + + + +# name: +# type: int64 scalar +681726 + + + +# name: +# type: int64 scalar +681726 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +73881 + + + +# name: +# type: int64 scalar +73881 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +936790 + + + +# name: +# type: int64 scalar +936579 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +111365 + + + +# name: +# type: int64 scalar +111365 + + + +# name: +# type: int64 scalar +111365 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +793578 + + + +# name: +# type: int64 scalar +793578 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +298719 + + + +# name: +# type: int64 scalar +298719 + + + +# name: +# type: int64 scalar +298719 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +294886 + + + +# name: +# type: int64 scalar +294886 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +665310 + + + +# name: +# type: int64 scalar +665310 + + + +# name: +# type: int64 scalar +665310 + + + +# name: +# type: int64 scalar +665310 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +422152 + + + +# name: +# type: int64 scalar +422152 + + + +# name: +# type: int64 scalar +422152 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1359089 + + + +# name: +# type: int64 scalar +1358784 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +392446 + + + +# name: +# type: int64 scalar +392291 + + + +# name: +# type: int64 scalar +392446 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +101676 + + + +# name: +# type: int64 scalar +101676 + + + +# name: +# type: int64 scalar +101676 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +637081 + + + +# name: +# type: int64 scalar +637081 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +352195 + + + +# name: +# type: int64 scalar +352195 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1000229 + + + +# name: +# type: int64 scalar +1000229 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +201573 + + + +# name: +# type: int64 scalar +201573 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +197971 + + + +# name: +# type: int64 scalar +198381 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +775177 + + + +# name: +# type: int64 scalar +775177 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +203660 + + + +# name: +# type: int64 scalar +204187 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1141854 + + + +# name: +# type: int64 scalar +1141854 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +225988 + + + +# name: +# type: int64 scalar +225988 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1064850 + + + +# name: +# type: int64 scalar +1064850 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1040043 + + + +# name: +# type: int64 scalar +1040043 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +866219 + + + +# name: +# type: int64 scalar +866219 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +145398 + + + +# name: +# type: int64 scalar +145398 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +861111 + + + +# name: +# type: int64 scalar +861111 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1331859 + + + +# name: +# type: int64 scalar +1331859 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +877950 + + + +# name: +# type: int64 scalar +877950 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +979613 + + + +# name: +# type: int64 scalar +979613 + + + +# name: +# type: int64 scalar +979613 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +330401 + + + +# name: +# type: int64 scalar +330401 + + + +# name: +# type: int64 scalar +330401 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1185721 + + + +# name: +# type: int64 scalar +1185721 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +948066 + + + +# name: +# type: int64 scalar +947787 + + + +# name: +# type: int64 scalar +947557 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +645374 + + + +# name: +# type: int64 scalar +645374 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +967598 + + + +# name: +# type: int64 scalar +967598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +976430 + + + +# name: +# type: int64 scalar +977235 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +180403 + + + +# name: +# type: int64 scalar +180403 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +166855 + + + +# name: +# type: int64 scalar +166931 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +115294 + + + +# name: +# type: int64 scalar +115294 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +520216 + + + +# name: +# type: int64 scalar +520216 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +810678 + + + +# name: +# type: int64 scalar +810678 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1230590 + + + +# name: +# type: int64 scalar +1230590 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +962130 + + + +# name: +# type: int64 scalar +962130 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +272113 + + + +# name: +# type: int64 scalar +272113 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +352844 + + + +# name: +# type: int64 scalar +353216 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1017470 + + + +# name: +# type: int64 scalar +1017470 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +1056548 + + + +# name: +# type: int64 scalar +1056548 + + + +# name: +# type: int64 scalar +1056548 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +6917 + + + +# name: +# type: int64 scalar +7317 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +64400 + + + +# name: +# type: int64 scalar +64400 + + + +# name: +# type: int64 scalar +64400 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +74107 + + + +# name: +# type: int64 scalar +74107 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +313597 + + + +# name: +# type: int64 scalar +313597 + + + +# name: +# type: int64 scalar +313748 + + + +# name: +# type: int64 scalar +313597 + + + +# name: +# type: int64 scalar +313597 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +743817 + + + +# name: +# type: int64 scalar +743817 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +704281 + + + +# name: +# type: int64 scalar +704281 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +593198 + + + +# name: +# type: int64 scalar +593198 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +132416 + + + +# name: +# type: int64 scalar +132416 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1201299 + + + +# name: +# type: int64 scalar +1201299 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +587034 + + + +# name: +# type: int64 scalar +587034 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +448667 + + + +# name: +# type: int64 scalar +448667 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1293246 + + + +# name: +# type: int64 scalar +1293246 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +386680 + + + +# name: +# type: int64 scalar +386680 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +779861 + + + +# name: +# type: int64 scalar +779861 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +766051 + + + +# name: +# type: int64 scalar +765089 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +31077 + + + +# name: +# type: int64 scalar +31077 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +306560 + + + +# name: +# type: int64 scalar +306560 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1241373 + + + +# name: +# type: int64 scalar +1241808 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +667004 + + + +# name: +# type: int64 scalar +667004 + + + +# name: +# type: int64 scalar +667327 + + + + + + + + +# name: start +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: scalar +923426 + + + +# name: +# type: scalar +404600 + + + +# name: +# type: scalar +630505 + + + +# name: +# type: scalar +626741 + + + +# name: +# type: scalar +642751 + + + +# name: +# type: scalar +387276 + + + +# name: +# type: scalar +316128 + + + +# name: +# type: scalar +1258576 + + + +# name: +# type: scalar +45295 + + + +# name: +# type: scalar +33378 + + + +# name: +# type: scalar +38751 + + + +# name: +# type: scalar +560609 + + + +# name: +# type: scalar +813471 + + + +# name: +# type: scalar +1075542 + + + +# name: +# type: scalar +511764 + + + +# name: +# type: scalar +907642 + + + +# name: +# type: scalar +1373233 + + + +# name: +# type: scalar +365209 + + + +# name: +# type: scalar +121066 + + + +# name: +# type: scalar +710017 + + + +# name: +# type: scalar +232840 + + + +# name: +# type: scalar +1217947 + + + +# name: +# type: scalar +52239 + + + +# name: +# type: scalar +50074 + + + +# name: +# type: scalar +175782 + + + +# name: +# type: scalar +415079 + + + +# name: +# type: scalar +410748 + + + +# name: +# type: scalar +944572 + + + +# name: +# type: scalar +729901 + + + +# name: +# type: scalar +918299 + + + +# name: +# type: scalar +602497 + + + +# name: +# type: scalar +1148596 + + + +# name: +# type: scalar +230993 + + + +# name: +# type: scalar +661176 + + + +# name: +# type: scalar +681395 + + + +# name: +# type: scalar +72339 + + + +# name: +# type: scalar +933512 + + + +# name: +# type: scalar +108946 + + + +# name: +# type: scalar +793352 + + + +# name: +# type: scalar +298534 + + + +# name: +# type: scalar +293342 + + + +# name: +# type: scalar +665151 + + + +# name: +# type: scalar +418748 + + + +# name: +# type: scalar +1358573 + + + +# name: +# type: scalar +389812 + + + +# name: +# type: scalar +99894 + + + +# name: +# type: scalar +635144 + + + +# name: +# type: scalar +347891 + + + +# name: +# type: scalar +996115 + + + +# name: +# type: scalar +199639 + + + +# name: +# type: scalar +195780 + + + +# name: +# type: scalar +773411 + + + +# name: +# type: scalar +202136 + + + +# name: +# type: scalar +1141603 + + + +# name: +# type: scalar +225664 + + + +# name: +# type: scalar +1064449 + + + +# name: +# type: scalar +1036537 + + + +# name: +# type: scalar +865914 + + + +# name: +# type: scalar +143564 + + + +# name: +# type: scalar +860787 + + + +# name: +# type: scalar +1331465 + + + +# name: +# type: scalar +877861 + + + +# name: +# type: scalar +979307 + + + +# name: +# type: scalar +325379 + + + +# name: +# type: scalar +1185549 + + + +# name: +# type: scalar +947519 + + + +# name: +# type: scalar +645091 + + + +# name: +# type: scalar +967502 + + + +# name: +# type: scalar +976096 + + + +# name: +# type: scalar +180058 + + + +# name: +# type: scalar +166588 + + + +# name: +# type: scalar +114286 + + + +# name: +# type: scalar +518251 + + + +# name: +# type: scalar +807361 + + + +# name: +# type: scalar +1226575 + + + +# name: +# type: scalar +163419 + + + +# name: +# type: scalar +962015 + + + +# name: +# type: scalar +272110 + + + +# name: +# type: scalar +352636 + + + +# name: +# type: scalar +1013715 + + + +# name: +# type: scalar +1051312 + + + +# name: +# type: scalar +5927 + + + +# name: +# type: scalar +64165 + + + +# name: +# type: scalar +73930 + + + +# name: +# type: scalar +313100 + + + +# name: +# type: scalar +739679 + + + +# name: +# type: scalar +703905 + + + +# name: +# type: scalar +591826 + + + +# name: +# type: scalar +132327 + + + +# name: +# type: scalar +1198118 + + + +# name: +# type: scalar +584260 + + + +# name: +# type: scalar +448462 + + + +# name: +# type: scalar +1292080 + + + +# name: +# type: scalar +373335 + + + +# name: +# type: scalar +775527 + + + +# name: +# type: scalar +761282 + + + +# name: +# type: scalar +23146 + + + +# name: +# type: scalar +306479 + + + +# name: +# type: scalar +1240375 + + + +# name: +# type: scalar +666871 + + + + + +# name: tss_conf +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: paralogs +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: stop +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: scalar +924727 + + + +# name: +# type: scalar +408620 + + + +# name: +# type: scalar +633260 + + + +# name: +# type: scalar +629820 + + + +# name: +# type: scalar +644903 + + + +# name: +# type: scalar +389647 + + + +# name: +# type: scalar +319651 + + + +# name: +# type: scalar +1261426 + + + +# name: +# type: scalar +47019 + + + +# name: +# type: scalar +37871 + + + +# name: +# type: scalar +40944 + + + +# name: +# type: scalar +562424 + + + +# name: +# type: scalar +816750 + + + +# name: +# type: scalar +1080630 + + + +# name: +# type: scalar +513624 + + + +# name: +# type: scalar +909377 + + + +# name: +# type: scalar +1375762 + + + +# name: +# type: scalar +367341 + + + +# name: +# type: scalar +130577 + + + +# name: +# type: scalar +711803 + + + +# name: +# type: scalar +237817 + + + +# name: +# type: scalar +1220137 + + + +# name: +# type: scalar +54693 + + + +# name: +# type: scalar +51199 + + + +# name: +# type: scalar +178401 + + + +# name: +# type: scalar +418011 + + + +# name: +# type: scalar +411598 + + + +# name: +# type: scalar +947484 + + + +# name: +# type: scalar +731558 + + + +# name: +# type: scalar +920508 + + + +# name: +# type: scalar +604293 + + + +# name: +# type: scalar +1154652 + + + +# name: +# type: scalar +232508 + + + +# name: +# type: scalar +662456 + + + +# name: +# type: scalar +687315 + + + +# name: +# type: scalar +74097 + + + +# name: +# type: scalar +937044 + + + +# name: +# type: scalar +111610 + + + +# name: +# type: scalar +795376 + + + +# name: +# type: scalar +302315 + + + +# name: +# type: scalar +295041 + + + +# name: +# type: scalar +666452 + + + +# name: +# type: scalar +422439 + + + +# name: +# type: scalar +1362019 + + + +# name: +# type: scalar +392817 + + + +# name: +# type: scalar +101835 + + + +# name: +# type: scalar +637263 + + + +# name: +# type: scalar +352481 + + + +# name: +# type: scalar +1000438 + + + +# name: +# type: scalar +201776 + + + +# name: +# type: scalar +198685 + + + +# name: +# type: scalar +775345 + + + +# name: +# type: scalar +204336 + + + +# name: +# type: scalar +1143053 + + + +# name: +# type: scalar +227302 + + + +# name: +# type: scalar +1071047 + + + +# name: +# type: scalar +1040225 + + + +# name: +# type: scalar +867733 + + + +# name: +# type: scalar +145685 + + + +# name: +# type: scalar +864125 + + + +# name: +# type: scalar +1333567 + + + +# name: +# type: scalar +880158 + + + +# name: +# type: scalar +981885 + + + +# name: +# type: scalar +330620 + + + +# name: +# type: scalar +1188517 + + + +# name: +# type: scalar +951827 + + + +# name: +# type: scalar +651907 + + + +# name: +# type: scalar +970130 + + + +# name: +# type: scalar +977761 + + + +# name: +# type: scalar +182358 + + + +# name: +# type: scalar +167842 + + + +# name: +# type: scalar +116109 + + + +# name: +# type: scalar +520438 + + + +# name: +# type: scalar +810869 + + + +# name: +# type: scalar +1230828 + + + +# name: +# type: scalar +166240 + + + +# name: +# type: scalar +966757 + + + +# name: +# type: scalar +274569 + + + +# name: +# type: scalar +354969 + + + +# name: +# type: scalar +1017930 + + + +# name: +# type: scalar +1056828 + + + +# name: +# type: scalar +8737 + + + +# name: +# type: scalar +67625 + + + +# name: +# type: scalar +74737 + + + +# name: +# type: scalar +315902 + + + +# name: +# type: scalar +744185 + + + +# name: +# type: scalar +706631 + + + +# name: +# type: scalar +594237 + + + +# name: +# type: scalar +135831 + + + +# name: +# type: scalar +1201528 + + + +# name: +# type: scalar +587220 + + + +# name: +# type: scalar +450426 + + + +# name: +# type: scalar +1293358 + + + +# name: +# type: scalar +386848 + + + +# name: +# type: scalar +780063 + + + +# name: +# type: scalar +766159 + + + +# name: +# type: scalar +31228 + + + +# name: +# type: scalar +309109 + + + +# name: +# type: scalar +1242122 + + + +# name: +# type: scalar +669837 + + + + + +# name: is_alt +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + +# name: +# type: int64 scalar +1 + + + + + +# name: cdsStop_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: tss_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: is_correctly_gff3_referenced +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + + + +# name: name2 +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: splicegraph +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: polya +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: strand +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 ++ + + + +# name: +# type: sq_string +# elements: 1 +# length: 1 +- + + + + + +# name: transcript_complete +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: tis_conf +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: cleave +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +924727 + + + +# name: +# type: int64 scalar +924356 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +408620 + + + +# name: +# type: int64 scalar +408620 + + + +# name: +# type: int64 scalar +408620 + + + +# name: +# type: int64 scalar +408620 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +633260 + + + +# name: +# type: int64 scalar +633260 + + + +# name: +# type: int64 scalar +633260 + + + +# name: +# type: int64 scalar +633260 + + + +# name: +# type: int64 scalar +633260 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +629820 + + + +# name: +# type: int64 scalar +629820 + + + +# name: +# type: int64 scalar +629820 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +642751 + + + +# name: +# type: int64 scalar +642751 + + + +# name: +# type: int64 scalar +642751 + + + +# name: +# type: int64 scalar +642751 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +387276 + + + +# name: +# type: int64 scalar +387277 + + + +# name: +# type: int64 scalar +387280 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +319645 + + + +# name: +# type: int64 scalar +319651 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1258576 + + + +# name: +# type: int64 scalar +1258577 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +45295 + + + +# name: +# type: int64 scalar +45295 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +33665 + + + +# name: +# type: int64 scalar +33665 + + + +# name: +# type: int64 scalar +33378 + + + +# name: +# type: int64 scalar +33665 + + + +# name: +# type: int64 scalar +33966 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +38751 + + + +# name: +# type: int64 scalar +38751 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +560609 + + + +# name: +# type: int64 scalar +560609 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +816750 + + + +# name: +# type: int64 scalar +816750 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1075542 + + + +# name: +# type: int64 scalar +1075544 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +511764 + + + +# name: +# type: int64 scalar +511764 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +909377 + + + +# name: +# type: int64 scalar +909377 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1373233 + + + +# name: +# type: int64 scalar +1373233 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +367341 + + + +# name: +# type: int64 scalar +367341 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +121123 + + + +# name: +# type: int64 scalar +121066 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +710017 + + + +# name: +# type: int64 scalar +710062 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +232840 + + + +# name: +# type: int64 scalar +232840 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1218004 + + + +# name: +# type: int64 scalar +1217947 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +54686 + + + +# name: +# type: int64 scalar +54693 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +50089 + + + +# name: +# type: int64 scalar +50074 + + + +# name: +# type: int64 scalar +50089 + + + +# name: +# type: int64 scalar +50089 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +178401 + + + +# name: +# type: int64 scalar +178401 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +418011 + + + +# name: +# type: int64 scalar +418011 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +411598 + + + +# name: +# type: int64 scalar +411598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +947483 + + + +# name: +# type: int64 scalar +947484 + + + +# name: +# type: int64 scalar +947484 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +731558 + + + +# name: +# type: int64 scalar +731526 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +920508 + + + +# name: +# type: int64 scalar +920489 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +604293 + + + +# name: +# type: int64 scalar +604273 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +1148658 + + + +# name: +# type: int64 scalar +1148658 + + + +# name: +# type: int64 scalar +1148658 + + + +# name: +# type: int64 scalar +1148596 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +230993 + + + +# name: +# type: int64 scalar +230993 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +661176 + + + +# name: +# type: int64 scalar +661308 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +681395 + + + +# name: +# type: int64 scalar +681395 + + + +# name: +# type: int64 scalar +681395 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +74097 + + + +# name: +# type: int64 scalar +74097 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +937044 + + + +# name: +# type: int64 scalar +937044 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +111610 + + + +# name: +# type: int64 scalar +111536 + + + +# name: +# type: int64 scalar +111598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +793352 + + + +# name: +# type: int64 scalar +793358 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +298534 + + + +# name: +# type: int64 scalar +298534 + + + +# name: +# type: int64 scalar +298534 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +295041 + + + +# name: +# type: int64 scalar +295041 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +665167 + + + +# name: +# type: int64 scalar +665167 + + + +# name: +# type: int64 scalar +665151 + + + +# name: +# type: int64 scalar +665167 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +422438 + + + +# name: +# type: int64 scalar +422439 + + + +# name: +# type: int64 scalar +422259 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1358916 + + + +# name: +# type: int64 scalar +1358573 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +392817 + + + +# name: +# type: int64 scalar +392797 + + + +# name: +# type: int64 scalar +392812 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +101835 + + + +# name: +# type: int64 scalar +101835 + + + +# name: +# type: int64 scalar +101835 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +637263 + + + +# name: +# type: int64 scalar +637263 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +352481 + + + +# name: +# type: int64 scalar +352304 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 scalar +1000438 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +201776 + + + +# name: +# type: int64 scalar +201776 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +198636 + + + +# name: +# type: int64 scalar +198685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +775345 + + + +# name: +# type: int64 scalar +775345 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +204336 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1141603 + + + +# name: +# type: int64 scalar +1141603 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +225664 + + + +# name: +# type: int64 scalar +225664 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1064453 + + + +# name: +# type: int64 scalar +1064449 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1040225 + + + +# name: +# type: int64 scalar +1040225 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +865914 + + + +# name: +# type: int64 scalar +865914 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +145651 + + + +# name: +# type: int64 scalar +145685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +860787 + + + +# name: +# type: int64 scalar +860787 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1331465 + + + +# name: +# type: int64 scalar +1331573 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +877861 + + + +# name: +# type: int64 scalar +877861 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +979307 + + + +# name: +# type: int64 scalar +979307 + + + +# name: +# type: int64 scalar +979307 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +330620 + + + +# name: +# type: int64 scalar +330620 + + + +# name: +# type: int64 scalar +330620 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1185549 + + + +# name: +# type: int64 scalar +1185555 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +947657 + + + +# name: +# type: int64 scalar +947643 + + + +# name: +# type: int64 scalar +947519 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +645091 + + + +# name: +# type: int64 scalar +645091 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +967502 + + + +# name: +# type: int64 scalar +967520 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +976096 + + + +# name: +# type: int64 scalar +977101 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +180119 + + + +# name: +# type: int64 scalar +180058 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +166588 + + + +# name: +# type: int64 scalar +166617 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +115550 + + + +# name: +# type: int64 scalar +116109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +520438 + + + +# name: +# type: int64 scalar +520438 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +810691 + + + +# name: +# type: int64 scalar +810869 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1230828 + + + +# name: +# type: int64 scalar +1230828 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +962032 + + + +# name: +# type: int64 scalar +962015 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +352636 + + + +# name: +# type: int64 scalar +352636 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1017930 + + + +# name: +# type: int64 scalar +1017930 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +1056752 + + + +# name: +# type: int64 scalar +1056752 + + + +# name: +# type: int64 scalar +1056828 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +5927 + + + +# name: +# type: int64 scalar +6789 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +64165 + + + +# name: +# type: int64 scalar +64166 + + + +# name: +# type: int64 scalar +64166 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +73930 + + + +# name: +# type: int64 scalar +73930 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +313214 + + + +# name: +# type: int64 scalar +313228 + + + +# name: +# type: int64 scalar +313209 + + + +# name: +# type: int64 scalar +313100 + + + +# name: +# type: int64 scalar +313228 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +744185 + + + +# name: +# type: int64 scalar +744185 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +703905 + + + +# name: +# type: int64 scalar +703905 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +594237 + + + +# name: +# type: int64 scalar +593290 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +132327 + + + +# name: +# type: int64 scalar +132329 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1201528 + + + +# name: +# type: int64 scalar +1201496 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +587220 + + + +# name: +# type: int64 scalar +587220 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +448462 + + + +# name: +# type: int64 scalar +448468 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1293358 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +386848 + + + +# name: +# type: int64 scalar +386847 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +780028 + + + +# name: +# type: int64 scalar +780063 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +766154 + + + +# name: +# type: int64 scalar +766159 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +31228 + + + +# name: +# type: int64 scalar +31121 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +306479 + + + +# name: +# type: int64 scalar +306479 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1242121 + + + +# name: +# type: int64 scalar +1242122 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +666871 + + + +# name: +# type: int64 scalar +666871 + + + +# name: +# type: int64 scalar +666871 + + + + + + + + +# name: name +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + + + +# name: anno_id +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: polya_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: transcript_status +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 4 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 5 + 1 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 4 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 5 + 1 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 4 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 4 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 4 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 0 + 0 + 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 5 + 1 + 1 + 1 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1 + 1 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 3 + 1 + 1 + 1 + + + + + +# name: gene_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 924288 + 924470 + 924313 + 924727 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 924288 + 924356 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 408486 + 408620 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 408486 + 408620 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 408486 + 408620 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 408486 + 408620 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 633086 + 633260 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 633086 + 633260 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 633086 + 633260 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 633086 + 633260 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 633086 + 633260 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 629584 + 629820 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 628996 + 629418 + 629580 + 629322 + 629495 + 629820 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 629584 + 629820 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 642751 + 643062 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 642751 + 643062 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 642751 + 643062 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 642751 + 643062 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 387276 + 387478 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 387277 + 387583 + 387503 + 387646 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 387280 + 387583 + 387503 + 388222 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 319508 + 319645 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 319508 + 319651 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1258576 + 1258759 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1258577 + 1258759 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 45295 + 45502 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 45295 + 45502 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 33665 + 33991 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 33665 + 33991 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 33378 + 33980 + 33589 + 33991 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 33665 + 33991 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 33966 + 33991 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 38751 + 38897 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 38751 + 38897 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 560609 + 561006 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 560609 + 561006 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 816624 + 816750 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 816624 + 816750 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1075542 + 1075983 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1075544 + 1075991 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 511764 + 511915 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 511764 + 511915 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 909246 + 909377 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 909246 + 909377 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1373233 + 1373484 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1373233 + 1373484 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 367150 + 367341 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 366366 + 366986 + 366860 + 367341 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 121123 + 121492 + 121406 + 121581 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 121066 + 121492 + 121406 + 121581 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 710017 + 710101 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 710062 + 710240 + 710694 + 710136 + 710333 + 710911 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 232840 + 233187 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 232840 + 233187 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1218004 + 1218019 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1217947 + 1218019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 54495 + 54686 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 54495 + 54693 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 50089 + 50283 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 50074 + 50283 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 50089 + 50283 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 50089 + 50283 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 178052 + 178401 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 178052 + 178401 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 417797 + 418011 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 417797 + 418011 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 411384 + 411598 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 411362 + 411598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947432 + 947483 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947432 + 947484 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947432 + 947484 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 731380 + 731558 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 731380 + 731526 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 920307 + 920508 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 920000 + 920489 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 604135 + 604293 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 604135 + 604273 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1148658 + 1148817 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1148658 + 1148817 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1148658 + 1148817 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1148596 + 1148817 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 230993 + 231163 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 230993 + 231163 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 661176 + 661362 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 661308 + 661362 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 4 2 + 681395 + 682242 + 682731 + 683022 + 681921 + 682403 + 682892 + 683064 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 681395 + 681723 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 681395 + 681723 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 73884 + 74097 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 73884 + 74097 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 936793 + 937044 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 936582 + 937044 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 111368 + 111610 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 111368 + 111536 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 111368 + 111598 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 793352 + 793575 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 793358 + 793575 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 298534 + 298716 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 298534 + 298716 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 298534 + 298716 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 294889 + 295041 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 294889 + 295041 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 665167 + 665307 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 665167 + 665307 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 665151 + 665249 + 665234 + 665307 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 665167 + 665307 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 422155 + 422438 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 422155 + 422439 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 422155 + 422259 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1358916 + 1359086 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1358573 + 1358781 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 392449 + 392817 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 392294 + 392374 + 392576 + 392301 + 392496 + 392797 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 392449 + 392576 + 392496 + 392812 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 101679 + 101835 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 101679 + 101835 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 101679 + 101835 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 637084 + 637263 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 637084 + 637263 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 352198 + 352481 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 352198 + 352304 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1000232 + 1000438 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 201576 + 201776 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 201576 + 201776 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 197974 + 198267 + 198184 + 198636 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 198384 + 198685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 775180 + 775345 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 775180 + 775345 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 203663 + 204336 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1141603 + 1141851 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1141603 + 1141851 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 225664 + 225985 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 225664 + 225985 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1064453 + 1064847 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1064449 + 1064847 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1040046 + 1040225 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1040046 + 1040225 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 865914 + 866216 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 865914 + 866216 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 145401 + 145651 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 145401 + 145685 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 860787 + 861108 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 860787 + 861108 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1331465 + 1331856 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1331573 + 1331856 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 877861 + 877947 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 877861 + 877947 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 979307 + 979610 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 979307 + 979610 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 979307 + 979610 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 330404 + 330620 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 330404 + 330620 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 330404 + 330620 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1185549 + 1185718 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1185555 + 1185718 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947657 + 948063 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947643 + 947784 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 947519 + 947554 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 645091 + 645371 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 645091 + 645371 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 967502 + 967595 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 967520 + 967595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 976096 + 976427 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 977101 + 977232 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 180119 + 180400 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 180058 + 180400 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 166588 + 166852 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 166617 + 166928 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 115297 + 115550 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 115297 + 115961 + 115340 + 116109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 520219 + 520438 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 520219 + 520438 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 810681 + 810691 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 810681 + 810869 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1230593 + 1230828 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1230593 + 1230828 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 962032 + 962127 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 962015 + 962127 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 352636 + 352841 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 352636 + 353213 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1017473 + 1017568 + 1017482 + 1017930 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1017473 + 1017568 + 1017482 + 1017930 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1056551 + 1056752 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1056551 + 1056752 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1056551 + 1056828 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 5927 + 6436 + 6263 + 6914 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 6789 + 7156 + 7069 + 7314 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 64165 + 64397 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 64166 + 64397 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 64166 + 64397 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 73930 + 74104 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 73930 + 74104 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 313214 + 313566 + 313418 + 313594 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 313228 + 313594 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 313209 + 313745 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 313100 + 313566 + 313452 + 313594 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 313228 + 313594 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 743820 + 744185 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 743820 + 744185 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 703905 + 704278 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 703905 + 704278 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 593201 + 593866 + 593230 + 594237 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 593201 + 593290 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 132327 + 132413 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 132329 + 132413 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1201302 + 1201528 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1201302 + 1201496 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 587037 + 587220 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 587037 + 587220 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 448462 + 448664 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 448468 + 448664 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1293249 + 1293358 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 386683 + 386848 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 386683 + 386847 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 779864 + 780028 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 779864 + 780063 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 766054 + 766154 + + + +# name: +# type: int64 matrix +# ndims: 2 + 3 2 + 765092 + 765485 + 765753 + 765256 + 765601 + 766159 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 31080 + 31228 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 31080 + 31121 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 306479 + 306557 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 306479 + 306557 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 1241376 + 1241761 + 1241678 + 1242121 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 1241811 + 1242122 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 666871 + 667001 + + + +# name: +# type: int64 matrix +# ndims: 2 + 1 2 + 666871 + 667001 + + + +# name: +# type: int64 matrix +# ndims: 2 + 2 2 + 666871 + 667150 + 667068 + 667324 + + + + + + + + +# name: tss +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +923426 + + + +# name: +# type: int64 scalar +923426 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +404600 + + + +# name: +# type: int64 scalar +404600 + + + +# name: +# type: int64 scalar +404600 + + + +# name: +# type: int64 scalar +404600 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +630505 + + + +# name: +# type: int64 scalar +630505 + + + +# name: +# type: int64 scalar +630505 + + + +# name: +# type: int64 scalar +630505 + + + +# name: +# type: int64 scalar +630505 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +626741 + + + +# name: +# type: int64 scalar +626780 + + + +# name: +# type: int64 scalar +626741 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +644521 + + + +# name: +# type: int64 scalar +644903 + + + +# name: +# type: int64 scalar +644539 + + + +# name: +# type: int64 scalar +644532 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +389647 + + + +# name: +# type: int64 scalar +389647 + + + +# name: +# type: int64 scalar +389647 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +316187 + + + +# name: +# type: int64 scalar +316128 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1261426 + + + +# name: +# type: int64 scalar +1261425 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +47019 + + + +# name: +# type: int64 scalar +47019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +37840 + + + +# name: +# type: int64 scalar +37780 + + + +# name: +# type: int64 scalar +37757 + + + +# name: +# type: int64 scalar +37780 + + + +# name: +# type: int64 scalar +37871 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +40944 + + + +# name: +# type: int64 scalar +40927 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +562424 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +813471 + + + +# name: +# type: int64 scalar +813486 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1080630 + + + +# name: +# type: int64 scalar +1080630 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +513624 + + + +# name: +# type: int64 scalar +513611 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +907642 + + + +# name: +# type: int64 scalar +907651 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1375742 + + + +# name: +# type: int64 scalar +1375762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +365209 + + + +# name: +# type: int64 scalar +365567 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +130570 + + + +# name: +# type: int64 scalar +130577 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +711803 + + + +# name: +# type: int64 scalar +711803 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +237817 + + + +# name: +# type: int64 scalar +237817 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1219914 + + + +# name: +# type: int64 scalar +1220137 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +52869 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +51108 + + + +# name: +# type: int64 scalar +51199 + + + +# name: +# type: int64 scalar +51197 + + + +# name: +# type: int64 scalar +51187 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +175782 + + + +# name: +# type: int64 scalar +176141 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +415079 + + + +# name: +# type: int64 scalar +415079 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +410748 + + + +# name: +# type: int64 scalar +410748 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +944595 + + + +# name: +# type: int64 scalar +944572 + + + +# name: +# type: int64 scalar +944595 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +729935 + + + +# name: +# type: int64 scalar +729901 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +918299 + + + +# name: +# type: int64 scalar +918299 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +602497 + + + +# name: +# type: int64 scalar +602601 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +1154652 + + + +# name: +# type: int64 scalar +1154652 + + + +# name: +# type: int64 scalar +1154652 + + + +# name: +# type: int64 scalar +1154596 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +232508 + + + +# name: +# type: int64 scalar +232322 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +662427 + + + +# name: +# type: int64 scalar +662456 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +687315 + + + +# name: +# type: int64 scalar +687315 + + + +# name: +# type: int64 scalar +687315 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +72339 + + + +# name: +# type: int64 scalar +72357 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +933512 + + + +# name: +# type: int64 scalar +933512 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +109032 + + + +# name: +# type: int64 scalar +109076 + + + +# name: +# type: int64 scalar +108946 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +795368 + + + +# name: +# type: int64 scalar +795376 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +300729 + + + +# name: +# type: int64 scalar +300846 + + + +# name: +# type: int64 scalar +302315 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +293342 + + + +# name: +# type: int64 scalar +293342 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: int64 scalar +666451 + + + +# name: +# type: int64 scalar +666452 + + + +# name: +# type: int64 scalar +666451 + + + +# name: +# type: int64 scalar +666451 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +418767 + + + +# name: +# type: int64 scalar +418767 + + + +# name: +# type: int64 scalar +418748 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1361981 + + + +# name: +# type: int64 scalar +1362019 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +389812 + + + +# name: +# type: int64 scalar +389821 + + + +# name: +# type: int64 scalar +389823 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +99922 + + + +# name: +# type: int64 scalar +100031 + + + +# name: +# type: int64 scalar +99894 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +635144 + + + +# name: +# type: int64 scalar +635144 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +347891 + + + +# name: +# type: int64 scalar +347974 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +996115 + + + +# name: +# type: int64 scalar +996115 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +199639 + + + +# name: +# type: int64 scalar +199791 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +195812 + + + +# name: +# type: int64 scalar +195780 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +773411 + + + +# name: +# type: int64 scalar +773411 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +202136 + + + +# name: +# type: int64 scalar +202136 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1143053 + + + +# name: +# type: int64 scalar +1143051 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +227302 + + + +# name: +# type: int64 scalar +227302 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1070927 + + + +# name: +# type: int64 scalar +1071047 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1036537 + + + +# name: +# type: int64 scalar +1036537 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +867733 + + + +# name: +# type: int64 scalar +867674 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +143564 + + + +# name: +# type: int64 scalar +143715 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +864125 + + + +# name: +# type: int64 scalar +864075 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1333567 + + + +# name: +# type: int64 scalar +1333534 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +880158 + + + +# name: +# type: int64 scalar +880158 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +981885 + + + +# name: +# type: int64 scalar +981868 + + + +# name: +# type: int64 scalar +981762 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +325379 + + + +# name: +# type: int64 scalar +325379 + + + +# name: +# type: int64 scalar +325379 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1188517 + + + +# name: +# type: int64 scalar +1188276 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +951730 + + + +# name: +# type: int64 scalar +951810 + + + +# name: +# type: int64 scalar +951827 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +651907 + + + +# name: +# type: int64 scalar +651907 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +970130 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +977761 + + + +# name: +# type: int64 scalar +977761 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +182358 + + + +# name: +# type: int64 scalar +182293 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +167842 + + + +# name: +# type: int64 scalar +167842 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +114286 + + + +# name: +# type: int64 scalar +114286 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +518251 + + + +# name: +# type: int64 scalar +518254 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +807396 + + + +# name: +# type: int64 scalar +807361 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1226575 + + + +# name: +# type: int64 scalar +1226575 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 scalar +966757 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +274569 + + + +# name: +# type: int64 scalar +274569 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +354969 + + + +# name: +# type: int64 scalar +354969 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1013715 + + + +# name: +# type: int64 scalar +1013715 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +1051343 + + + +# name: +# type: int64 scalar +1053126 + + + +# name: +# type: int64 scalar +1051312 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +8737 + + + +# name: +# type: int64 scalar +8737 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +67625 + + + +# name: +# type: int64 scalar +67625 + + + +# name: +# type: int64 scalar +67625 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +74737 + + + +# name: +# type: int64 scalar +74731 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: int64 scalar +315902 + + + +# name: +# type: int64 scalar +315902 + + + +# name: +# type: int64 scalar +315902 + + + +# name: +# type: int64 scalar +315902 + + + +# name: +# type: int64 scalar +315902 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +739679 + + + +# name: +# type: int64 scalar +739679 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +706631 + + + +# name: +# type: int64 scalar +706630 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +591826 + + + +# name: +# type: int64 scalar +591826 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +135322 + + + +# name: +# type: int64 scalar +135831 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1198118 + + + +# name: +# type: int64 scalar +1198508 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +584260 + + + +# name: +# type: int64 scalar +584260 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +450425 + + + +# name: +# type: int64 scalar +450426 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1292080 + + + +# name: +# type: int64 scalar +1292111 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: int64 scalar +373501 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +775527 + + + +# name: +# type: int64 scalar +775622 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +761282 + + + +# name: +# type: int64 scalar +761282 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +23146 + + + +# name: +# type: int64 scalar +23416 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +309109 + + + +# name: +# type: int64 scalar +309109 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: int64 scalar +1240375 + + + +# name: +# type: int64 scalar +1240375 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: int64 scalar +669837 + + + +# name: +# type: int64 scalar +669837 + + + +# name: +# type: int64 scalar +669805 + + + + + + + + +# name: cleave_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: alias +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + +# name: +# type: sq_string +# elements: 0 + + + + + +# name: cdsStop_conf +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: transcripts +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03710.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03710.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02145.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02145.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02145.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02145.4 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02850.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02850.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02850.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02850.4 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02850.5 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02840.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02840.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02840.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02880.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02880.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02880.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02880.4 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02090.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02090.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02090.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01920.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01920.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04590.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04590.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01080.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01080.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01060.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01060.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01060.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01060.4 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01060.5 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01070.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01070.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02630.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02630.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03310.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03310.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04140.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04140.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02470.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02470.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03630.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03630.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04870.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04870.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02065.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02065.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01320.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01320.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03055.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03055.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01650.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01650.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04490.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04490.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01110.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01110.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01100.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01100.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01100.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01100.4 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01480.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01480.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02190.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02190.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02160.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02160.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03770.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03770.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03770.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03070.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03070.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03687.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03687.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02750.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02750.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04300.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04300.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04300.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04300.4 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01640.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01640.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02930.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02930.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02990.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02990.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02990.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01160.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01160.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03740.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03740.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01260.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01260.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01260.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03250.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03250.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01830.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01830.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01830.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01800.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01800.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 4 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02950.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02950.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02950.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02950.4 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02205.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02205.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02205.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04830.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04830.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02100.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02100.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02100.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01240.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01240.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01240.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02860.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02860.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02010.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02010.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03910.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03910.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01550.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01550.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01540.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01540.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03180.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03180.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01560.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01560.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04270.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04270.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01620.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01620.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04120.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04120.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04020.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04020.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03470.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03470.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01370.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01370.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03457.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03457.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04750.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04750.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03520.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03520.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03860.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03860.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03860.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01950.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01950.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01950.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04400.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04400.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03780.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03780.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03780.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02890.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02890.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03840.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03840.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03850.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03850.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01490.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01490.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01453.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01453.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01290.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01290.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02500.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02500.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03290.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03290.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04510.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04510.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01448.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01448.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01448.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03830.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03830.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01740.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01740.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02020.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02020.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03960.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03960.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04080.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04080.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04080.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01020.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01020.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01140.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01140.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01140.3 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01170.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01170.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 5 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01910.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01910.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01910.3 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01910.4 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01910.5 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03090.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03090.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03040.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03040.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02720.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02720.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01340.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01340.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04430.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04430.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02690.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02690.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02280.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02280.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04640.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04640.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02080.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02080.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03190.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03190.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03160.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G03160.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01040.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01040.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01880.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G01880.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04550.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G04550.2 + + + + + + +# name: +# type: cell +# rows: 1 +# columns: 3 +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02960.1 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02960.2 + + + +# name: +# type: sq_string +# elements: 1 +# length: 22 +Transcript:AT1G02960.3 + + + + + + + + +# name: tis_info +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: is_complete +# type: cell +# rows: 1 +# columns: 100 +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/temp/P_values_parametric_1_of_1.mat --- /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 +# name: P_VALS +# type: cell +# rows: 100 +# columns: 13 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.7047729843942587,-9.73850375123872e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.3705449381485693,1.677059346567052e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.918497571678391,-4.568323201191496e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.642854152579879,9.942184031800466e-17) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.4922809248686352,5.485533540867573e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.9385743830391379 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.7054088455437573 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.113304852690962,3.38225312755561e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.0038788161331,1.152115268329668e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.947317223954005 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.02135850768652236,4.753432657198431e-17) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.5791406578880098,-7.708760860713319e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.057089661928465,-4.427234198598591e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6453190760569992,1.043837261250798e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.7357372780348108,-1.095735319843118e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.9237601550574732,1.713789943960052e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.767165525700738,-1.234610369369174e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +4.733153512704381e-05 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.1381731365332209 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.3410169697616848,6.640923521476997e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.3478644639848191,1.252777391262935e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.727160462831534,1.430834775674686e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.1289854038874585,-5.894720875992708e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6331347547781632,1.922681477268144e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.03266479630873597,4.699736525303829e-17) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.050231726111515,1.066766662127094e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.7973252676447815,5.515825929923917e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6990470152239037,2.610556697805914e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.508657102800845,-6.332532825488345e-17) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.8063133321747236,-1.493401601358682e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.02422042857573552 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(2.024951360592971,2.078508346766493e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.018817736833879,-1.578854622740564e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.864139427797046e-07 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.4684635380390317,5.582603528881181e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.5345321275249729 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.647690677889673 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(2.510786657990783,2.851556853399991e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.1488054826367799,-3.372369109797543e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.3160357848108884,5.739306240942715e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6006494402856356,6.604713198652876e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.2206668514722223,4.079733062121578e-32) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.379227011647324,-5.024537404627736e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.272510351200648 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.013350767640418,-2.659564357089667e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(7.359682858203913e-12,6.800570340485306e-26) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.1571745622517608,9.063207877473611e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.11761365246367 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.3810041993497219 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.2858563672864881,-2.036574573230061e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.893573657003726,2.470680030061977e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.79626356820493e-13,-1.83121068610146e-27) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.161804861716175 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.4817309794088154,-2.401604383994638e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.5294944988264448,1.955138744187521e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.4188404983527704,-1.392072463350567e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.7113873575361785 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.7838498840472755,-1.028686092536447e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.6071680630402591 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.3174783739752697,-4.047816345598962e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.295518022721592 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.4991233928132521 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.5518342912781777,-9.28970976084131e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(2.065173090528356e-11,-1.505285969339228e-25) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.5699434226476526 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.2112433269989617,-1.410100160619634e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.160076089575085,-1.694425421465041e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.8467078213522625 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.027884007211025 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.264537156030193,-1.529309998039481e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.8152514058824051 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.8584975666650115 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.862175792711852e-58,1.101823575364413e-72) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.396285322930226 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6237436048886749,-2.024294364786824e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(2.770987365952102,7.589481242719728e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.461835108035119,1.155071010589339e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.001490213892088538 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.06067987214901,2.109849114402975e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.6645365643365709,-1.980421125023491e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.2899092350729878,3.855778010963484e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.772581546858259e-99 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(2.166970056302482,-3.989057958724343e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.1993439983717951,4.474592521751872e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.69458154950562,9.733575690741299e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.5989808096668001,1.303653035845813e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.437664385062097,2.749178136149656e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.568590524905402,-1.009636639171317e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.06753664571692257,-7.904136335963237e-17) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.489858560874365 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(9.559873530617703e-37,4.428698857960225e-51) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.371798997300066e-07,5.99278547956655e-23) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.2592391518189411,1.560498911070718e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(0.4246691533857037,7.481014443596152e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(3.079783698282814e-21,-1.220984617533035e-35) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +0.4508449354715666 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: scalar +1.417848697388566 + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.49852469712957,1.038758426555662e-15) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.096275305294062,7.538162171839681e-16) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 2 +# name: +# type: complex scalar +(1.455786913083531,-1.589446255009013e-31) + + + +# name: +# type: cell +# rows: 0 +# columns: 0 + + + + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/temp/example_condition_A_replicate_1.bam_1_of_1.mat --- /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 +# name: COUNTS +# type: cell +# rows: 100 +# columns: 1 +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + + +# name: +# type: scalar +957 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 813 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 129 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + + +# name: +# type: scalar +2385 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1561 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 6 24 79 33 130 552 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + + +# name: +# type: scalar +902 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 789 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 1 15 12 15 22 1 9 38 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + + +# name: +# type: scalar +1307 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1039 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 27 113 2 101 25 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + + +# name: +# type: scalar +1144 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 851 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 11 0 5 59 40 89 33 56 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8158 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 1086 121 322 89 224 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + + +# name: +# type: scalar +3090 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2708 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 216 166 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + + +# name: +# type: scalar +3154 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2992 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 82 80 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + + +# name: +# type: scalar +1283 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1213 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 28 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7436 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 130 56 235 347 71 141 1036 149 183 216 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + + +# name: +# type: scalar +3234 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2831 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 341 62 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + + +# name: +# type: scalar +782 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 716 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 19 47 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + + +# name: +# type: scalar +1778 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1708 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 39 31 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + + +# name: +# type: scalar +3311 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3220 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 47 44 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + + +# name: +# type: scalar +700 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 643 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 31 26 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + + +# name: +# type: scalar +1455 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1330 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 50 75 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + + +# name: +# type: scalar +809 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 763 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 30 16 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + + +# name: +# type: scalar +2269 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1546 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 142 581 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9632 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 256 112 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + + +# name: +# type: scalar +922 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 738 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 80 104 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + + +# name: +# type: scalar +323 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 302 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 14 7 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + + +# name: +# type: scalar +1131 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1050 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 79 2 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + + +# name: +# type: scalar +4305 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3205 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 1079 21 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + + +# name: +# type: scalar +1732 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1182 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 33 60 59 170 21 207 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + + +# name: +# type: scalar +1378 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1172 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 12 194 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + + +# name: +# type: scalar +1117 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1089 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 18 10 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + + +# name: +# type: scalar +372 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 318 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 54 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + + +# name: +# type: scalar +3971 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3510 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 161 162 39 99 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + + +# name: +# type: scalar +723 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 584 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 134 5 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + + +# name: +# type: scalar +1919 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1744 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 132 43 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + + +# name: +# type: scalar +1293 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1042 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 48 203 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + + +# name: +# type: scalar +1792 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1585 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 31 7 57 8 17 3 20 64 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + + +# name: +# type: scalar +1937 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1688 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 70 179 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + + +# name: +# type: scalar +1126 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 935 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 85 106 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + + +# name: +# type: scalar +1832 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1760 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 23 20 20 9 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + + +# name: +# type: scalar +2291 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1923 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 162 206 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + + +# name: +# type: scalar +9319 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8906 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 360 53 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + + +# name: +# type: scalar +1394 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1239 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 29 13 31 82 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + + +# name: +# type: scalar +1208 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1109 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 55 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + + +# name: +# type: scalar +217 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 195 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 9 1 8 4 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + + +# name: +# type: scalar +3298 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3102 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 160 36 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + + +# name: +# type: scalar +1393 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1011 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 0 51 51 68 118 94 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + + +# name: +# type: scalar +1488 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1243 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 15 29 59 142 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + + +# name: +# type: scalar +4250 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3418 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 494 338 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + + +# name: +# type: scalar +838 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 725 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 7 30 39 36 1 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + + +# name: +# type: scalar +847 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 682 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 39 31 64 12 19 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + + +# name: +# type: scalar +2206 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2104 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 61 41 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9219 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 201 580 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8833 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 1036 131 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + + +# name: +# type: scalar +1179 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1059 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 61 59 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + + +# name: +# type: scalar +3457 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3129 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 276 52 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + + +# name: +# type: scalar +1177 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 972 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 167 38 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + + +# name: +# type: scalar +2010 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1551 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 110 349 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + + +# name: +# type: scalar +887 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 801 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 12 74 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + + +# name: +# type: scalar +1662 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1558 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 53 51 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + + +# name: +# type: scalar +1289 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1240 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 35 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + + +# name: +# type: scalar +4901 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4645 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 39 217 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + + +# name: +# type: scalar +4017 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3784 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 107 126 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + + +# name: +# type: scalar +7512 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 6368 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 443 701 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + + +# name: +# type: scalar +1525 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1430 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 65 30 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + + +# name: +# type: scalar +2330 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1874 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 56 400 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + + +# name: +# type: scalar +2037 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1579 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 414 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + + +# name: +# type: scalar +2559 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2054 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 148 155 5 73 124 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + + +# name: +# type: scalar +2422 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2340 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 0 0 46 36 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + + +# name: +# type: scalar +2478 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2225 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 103 150 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + + +# name: +# type: scalar +1073 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 723 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 12 81 159 98 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + + +# name: +# type: scalar +502 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 488 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 6 8 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9629 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 371 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + + +# name: +# type: scalar +1166 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 643 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 196 327 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + + +# name: +# type: scalar +1346 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1134 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 55 157 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + + +# name: +# type: scalar +2243 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1885 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 158 200 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + + +# name: +# type: scalar +756 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 610 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 146 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9532 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 185 283 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + + +# name: +# type: scalar +1578 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1274 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 289 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + + +# name: +# type: scalar +1245 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1189 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 33 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + + +# name: +# type: scalar +292 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 106 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 5 39 1 108 10 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + + +# name: +# type: scalar +305 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 289 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 1 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9487 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 305 208 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + + +# name: +# type: scalar +1890 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1778 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 81 31 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + + +# name: +# type: scalar +1461 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1338 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 79 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + + +# name: +# type: scalar +1415 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 988 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 94 31 284 18 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + + +# name: +# type: scalar +2682 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1291 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 1391 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + + +# name: +# type: scalar +1058 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 964 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 13 18 0 34 29 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + + +# name: +# type: scalar +1101 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 863 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 136 102 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + + +# name: +# type: scalar +1498 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 986 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 14 38 22 21 147 48 3 17 54 148 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + + +# name: +# type: scalar +1451 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1399 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 27 25 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + + +# name: +# type: scalar +1412 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1329 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 35 48 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + + +# name: +# type: scalar +4153 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3690 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 110 353 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + + +# name: +# type: scalar +2167 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1958 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 120 89 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8949 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 662 389 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + + +# name: +# type: scalar +9898 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9612 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 137 149 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + + +# name: +# type: scalar +1335 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1175 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 160 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + + +# name: +# type: scalar +308 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 211 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 51 46 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + + +# name: +# type: scalar +1519 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1441 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 55 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + + +# name: +# type: scalar +1078 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 957 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 70 51 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9652 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 224 124 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8975 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 27 998 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + + +# name: +# type: scalar +2563 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2482 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 53 28 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + + +# name: +# type: scalar +2164 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1829 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 140 195 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + +# name: +# type: scalar +3974 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3527 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 117 75 1 108 146 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/temp/example_condition_A_replicate_2.bam_1_of_1.mat --- /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 +# name: COUNTS +# type: cell +# rows: 100 +# columns: 1 +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + + +# name: +# type: scalar +844 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 692 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 28 124 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + + +# name: +# type: scalar +2458 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1575 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 7 15 73 31 116 641 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + + +# name: +# type: scalar +932 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 825 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 1 12 15 9 16 7 5 42 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + + +# name: +# type: scalar +1551 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1238 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 32 106 5 147 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + + +# name: +# type: scalar +1110 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 831 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 9 0 2 48 29 119 26 46 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8163 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 1006 122 354 104 251 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + + +# name: +# type: scalar +3109 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2707 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 217 185 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + + +# name: +# type: scalar +3123 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2959 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 94 70 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + + +# name: +# type: scalar +1403 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1318 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 51 34 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7383 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 130 62 237 392 78 146 1009 165 200 198 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + + +# name: +# type: scalar +3046 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2664 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 322 60 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + + +# name: +# type: scalar +864 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 767 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 24 73 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + + +# name: +# type: scalar +2089 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2009 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 43 37 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + + +# name: +# type: scalar +3436 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3375 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 26 35 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + + +# name: +# type: scalar +787 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 716 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 40 31 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + + +# name: +# type: scalar +1484 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1369 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 71 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + + +# name: +# type: scalar +836 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 784 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 38 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + + +# name: +# type: scalar +2417 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1714 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 138 565 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9650 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 204 146 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + + +# name: +# type: scalar +843 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 686 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 91 66 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + + +# name: +# type: scalar +333 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 313 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 18 2 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + + +# name: +# type: scalar +1080 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 974 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 103 3 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + + +# name: +# type: scalar +3903 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2920 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 958 25 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + + +# name: +# type: scalar +1535 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1046 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 30 50 56 130 16 207 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + + +# name: +# type: scalar +1520 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1293 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 212 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + + +# name: +# type: scalar +1390 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1337 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 22 31 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + + +# name: +# type: scalar +395 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 331 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 64 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + + +# name: +# type: scalar +4033 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3567 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 151 163 46 106 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + + +# name: +# type: scalar +732 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 603 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 125 4 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + + +# name: +# type: scalar +1895 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1730 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 126 39 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + + +# name: +# type: scalar +1338 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1080 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 64 194 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + + +# name: +# type: scalar +1912 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1689 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 30 7 65 6 8 4 20 83 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + + +# name: +# type: scalar +2184 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1925 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 62 197 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + + +# name: +# type: scalar +1092 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 885 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 115 92 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + + +# name: +# type: scalar +1817 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1740 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 24 14 25 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + + +# name: +# type: scalar +2432 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2043 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 168 221 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + + +# name: +# type: scalar +8998 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8614 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 340 44 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + + +# name: +# type: scalar +1402 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1268 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 39 15 33 47 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + + +# name: +# type: scalar +1295 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1156 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 51 88 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + + +# name: +# type: scalar +253 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 233 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 12 2 5 1 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + + +# name: +# type: scalar +3076 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2858 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 161 57 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + + +# name: +# type: scalar +1518 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1050 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 0 55 40 85 160 128 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + + +# name: +# type: scalar +1487 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1242 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 21 29 70 125 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + + +# name: +# type: scalar +4600 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3642 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 551 407 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + + +# name: +# type: scalar +938 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 804 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 16 35 40 43 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + + +# name: +# type: scalar +999 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 785 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 51 34 85 17 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + + +# name: +# type: scalar +2139 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2039 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 73 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9133 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 205 662 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8880 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 997 123 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + + +# name: +# type: scalar +1083 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 963 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 64 56 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + + +# name: +# type: scalar +3582 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3237 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 269 76 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + + +# name: +# type: scalar +1187 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 959 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 189 39 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + + +# name: +# type: scalar +2079 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1680 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 106 293 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + + +# name: +# type: scalar +722 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 647 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 60 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + + +# name: +# type: scalar +1636 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1532 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 53 51 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + + +# name: +# type: scalar +1357 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1293 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 50 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + + +# name: +# type: scalar +5037 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4770 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 225 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + + +# name: +# type: scalar +3533 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3331 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 97 105 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + + +# name: +# type: scalar +7443 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 6271 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 407 765 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + + +# name: +# type: scalar +1422 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1321 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 75 26 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + + +# name: +# type: scalar +2492 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1901 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 67 524 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + + +# name: +# type: scalar +1774 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1372 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 360 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + + +# name: +# type: scalar +2492 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2031 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 120 135 3 80 123 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + + +# name: +# type: scalar +2415 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2328 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 0 0 50 37 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + + +# name: +# type: scalar +2730 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2455 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 130 145 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + + +# name: +# type: scalar +1274 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 867 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 19 101 183 104 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + + +# name: +# type: scalar +543 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 529 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 6 8 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9544 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 456 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + + +# name: +# type: scalar +1300 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 733 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 249 318 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + + +# name: +# type: scalar +1481 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1189 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 53 239 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + + +# name: +# type: scalar +2568 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2200 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 167 201 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + + +# name: +# type: scalar +655 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 521 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 134 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9520 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 214 266 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + + +# name: +# type: scalar +1713 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1389 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 314 10 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + + +# name: +# type: scalar +1203 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1148 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 35 20 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + + +# name: +# type: scalar +353 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 117 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 8 61 1 135 6 25 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + + +# name: +# type: scalar +337 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 311 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 21 5 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9483 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 309 208 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + + +# name: +# type: scalar +1904 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1799 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 84 21 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + + +# name: +# type: scalar +1436 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1332 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 60 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + + +# name: +# type: scalar +1444 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 980 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 107 32 310 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + + +# name: +# type: scalar +2593 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1297 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 1296 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + + +# name: +# type: scalar +1031 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 949 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 19 12 0 22 29 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + + +# name: +# type: scalar +1115 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 875 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 136 104 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + + +# name: +# type: scalar +1435 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 925 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 17 35 31 16 131 50 5 19 44 162 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + + +# name: +# type: scalar +1468 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1409 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 36 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + + +# name: +# type: scalar +1554 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1480 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 27 47 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + + +# name: +# type: scalar +4674 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4179 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 102 393 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + + +# name: +# type: scalar +2301 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2105 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 105 91 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8909 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 716 375 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + + +# name: +# type: scalar +9578 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9249 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 146 183 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + + +# name: +# type: scalar +1386 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1219 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 167 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + + +# name: +# type: scalar +273 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 184 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 41 48 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + + +# name: +# type: scalar +1540 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1465 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 33 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + + +# name: +# type: scalar +1119 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1008 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 70 41 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9655 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 225 120 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9038 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 30 932 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + + +# name: +# type: scalar +2539 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2440 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 62 37 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + + +# name: +# type: scalar +2160 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1837 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 129 194 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + +# name: +# type: scalar +4052 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3572 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 131 92 0 106 151 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/temp/example_condition_B_replicate_1.bam_1_of_1.mat --- /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 +# name: COUNTS +# type: cell +# rows: 100 +# columns: 1 +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + + +# name: +# type: scalar +458 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 381 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 17 60 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + + +# name: +# type: scalar +1735 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1120 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 7 28 46 21 99 414 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + + +# name: +# type: scalar +2074 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1845 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 3 22 30 35 43 9 8 79 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + + +# name: +# type: scalar +1160 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 934 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 26 81 5 93 21 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + + +# name: +# type: scalar +1130 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 866 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 10 0 3 48 26 116 25 36 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8135 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 1029 131 374 101 230 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + + +# name: +# type: scalar +2191 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1926 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 137 128 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + + +# name: +# type: scalar +2898 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2746 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 92 60 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + + +# name: +# type: scalar +882 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 832 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 32 18 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7439 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 128 51 288 318 77 157 1015 142 186 199 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + + +# name: +# type: scalar +2231 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1968 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 198 65 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + + +# name: +# type: scalar +728 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 662 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 23 43 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + + +# name: +# type: scalar +984 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 947 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 21 16 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + + +# name: +# type: scalar +1477 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1436 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 26 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + + +# name: +# type: scalar +570 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 515 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 25 30 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + + +# name: +# type: scalar +1308 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1212 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 37 59 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + + +# name: +# type: scalar +779 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 739 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 30 10 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + + +# name: +# type: scalar +2119 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1448 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 238 433 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9666 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 186 148 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + + +# name: +# type: scalar +603 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 509 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 49 45 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + + +# name: +# type: scalar +1699 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1622 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 58 19 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + + +# name: +# type: scalar +670 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 619 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 49 2 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + + +# name: +# type: scalar +2448 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1821 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 600 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + + +# name: +# type: scalar +1249 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 875 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 32 40 35 107 13 147 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + + +# name: +# type: scalar +1213 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1017 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 5 191 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + + +# name: +# type: scalar +1614 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1551 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 25 38 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + + +# name: +# type: scalar +224 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 193 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 31 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + + +# name: +# type: scalar +3312 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2935 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 124 139 26 88 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + + +# name: +# type: scalar +1127 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 924 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 195 8 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + + +# name: +# type: scalar +1629 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1479 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 106 44 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + + +# name: +# type: scalar +1289 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1013 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 40 236 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + + +# name: +# type: scalar +1444 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1292 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 13 10 47 6 7 1 12 56 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + + +# name: +# type: scalar +956 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 856 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 31 69 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + + +# name: +# type: scalar +976 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 757 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 34 185 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + + +# name: +# type: scalar +1716 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1645 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 27 25 12 7 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + + +# name: +# type: scalar +2076 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1753 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 164 159 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + + +# name: +# type: scalar +6263 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 5990 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 239 34 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + + +# name: +# type: scalar +906 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 816 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 24 10 13 43 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + + +# name: +# type: scalar +1095 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 986 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 29 80 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9279 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 390 21 175 135 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + + +# name: +# type: scalar +1719 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1612 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 88 19 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + + +# name: +# type: scalar +803 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 562 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 2 27 29 44 80 59 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + + +# name: +# type: scalar +1046 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 859 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 8 19 51 109 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + + +# name: +# type: scalar +4120 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3337 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 432 351 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + + +# name: +# type: scalar +708 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 615 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 11 32 21 29 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + + +# name: +# type: scalar +671 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 573 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 28 37 12 21 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + + +# name: +# type: scalar +4071 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3879 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 101 91 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9126 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 202 672 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8955 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 912 133 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + + +# name: +# type: scalar +436 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 393 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 27 16 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + + +# name: +# type: scalar +4011 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3596 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 328 87 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + + +# name: +# type: scalar +959 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 871 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 54 34 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + + +# name: +# type: scalar +1553 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1223 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 67 263 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + + +# name: +# type: scalar +447 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 414 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 6 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + + +# name: +# type: scalar +1709 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1606 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 65 38 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + + +# name: +# type: scalar +1059 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1020 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 25 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9414 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 98 488 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + + +# name: +# type: scalar +2956 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2804 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 81 71 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + + +# name: +# type: scalar +6924 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 5848 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 347 729 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + + +# name: +# type: scalar +1068 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1001 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 50 17 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + + +# name: +# type: scalar +1051 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 820 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 32 199 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + + +# name: +# type: scalar +1814 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1413 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 41 360 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + + +# name: +# type: scalar +1994 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1624 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 84 127 3 47 109 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + + +# name: +# type: scalar +2067 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1990 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 34 13 10 20 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + + +# name: +# type: scalar +4504 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4067 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 171 266 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + + +# name: +# type: scalar +1157 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 798 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 19 120 135 85 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + + +# name: +# type: scalar +1268 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1242 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 11 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9589 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 411 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + + +# name: +# type: scalar +928 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 523 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 181 224 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + + +# name: +# type: scalar +894 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 733 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 33 128 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + + +# name: +# type: scalar +2035 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1741 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 145 149 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + + +# name: +# type: scalar +569 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 468 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 101 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9548 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 452 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + + +# name: +# type: scalar +1193 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 970 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 217 6 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + + +# name: +# type: scalar +750 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 725 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 16 9 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + + +# name: +# type: scalar +1808 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 626 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 30 249 4 735 42 122 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + + +# name: +# type: scalar +1712 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1574 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 125 13 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + + +# name: +# type: scalar +8471 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8058 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 188 225 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + + +# name: +# type: scalar +988 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 943 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 36 9 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + + +# name: +# type: scalar +4637 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4261 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 178 198 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + + +# name: +# type: scalar +1260 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 874 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 106 17 248 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + + +# name: +# type: scalar +1691 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1206 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 295 190 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + + +# name: +# type: scalar +1290 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1188 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 20 12 0 38 32 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + + +# name: +# type: scalar +205 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 163 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + + +# name: +# type: scalar +1177 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 798 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 18 28 11 16 108 26 5 10 44 113 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + + +# name: +# type: scalar +847 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 823 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 9 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + + +# name: +# type: scalar +1075 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1016 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 24 35 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + + +# name: +# type: scalar +3873 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3449 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 85 339 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + + +# name: +# type: scalar +1826 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1678 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 68 80 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8982 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 663 355 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + + +# name: +# type: scalar +7417 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7161 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 256 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + + +# name: +# type: scalar +850 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 773 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 21 56 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + + +# name: +# type: scalar +1611 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1115 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 294 202 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + + +# name: +# type: scalar +1029 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 973 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 27 29 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + + +# name: +# type: scalar +1014 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 929 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 85 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9688 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 218 94 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8957 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 21 1022 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + + +# name: +# type: scalar +2156 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2084 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 28 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + + +# name: +# type: scalar +971 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 817 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 76 78 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + +# name: +# type: scalar +3242 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2852 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 119 51 2 91 127 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/temp/example_condition_B_replicate_2.bam_1_of_1.mat --- /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 +# name: COUNTS +# type: cell +# rows: 100 +# columns: 1 +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03710 + + + +# name: +# type: scalar +507 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 435 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 14 58 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02145 + + + +# name: +# type: scalar +1764 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1091 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 2 22 50 27 101 471 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02850 + + + +# name: +# type: scalar +2409 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2126 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 4 25 40 37 60 8 17 92 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02840 + + + +# name: +# type: scalar +1146 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 926 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 25 76 7 96 16 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02880 + + + +# name: +# type: scalar +1109 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 856 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 4 1 3 41 26 115 31 32 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02090 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8135 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 1043 161 326 114 221 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01920 + + + +# name: +# type: scalar +2224 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1895 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 207 122 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04590 + + + +# name: +# type: scalar +2718 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2547 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 118 53 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01080 + + + +# name: +# type: scalar +863 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 826 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 23 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01060 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7381 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 126 55 252 367 80 182 996 159 210 192 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01070 + + + +# name: +# type: scalar +1934 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1714 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 158 62 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02630 + + + +# name: +# type: scalar +663 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 603 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 22 38 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03310 + + + +# name: +# type: scalar +1104 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1061 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 16 27 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04140 + + + +# name: +# type: scalar +1138 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1113 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 11 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02470 + + + +# name: +# type: scalar +568 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 525 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 19 24 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03630 + + + +# name: +# type: scalar +1132 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1041 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 47 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04870 + + + +# name: +# type: scalar +840 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 805 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 25 10 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02065 + + + +# name: +# type: scalar +2046 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1467 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 175 404 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01320 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9662 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 189 149 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03055 + + + +# name: +# type: scalar +661 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 520 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 92 49 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01650 + + + +# name: +# type: scalar +1562 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1489 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 50 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04490 + + + +# name: +# type: scalar +700 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 631 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 67 2 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01110 + + + +# name: +# type: scalar +2500 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1857 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 625 18 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01100 + + + +# name: +# type: scalar +1268 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 872 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 34 51 29 102 18 162 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01480 + + + +# name: +# type: scalar +1169 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 974 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 1 194 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02190 + + + +# name: +# type: scalar +1440 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1400 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 19 21 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02160 + + + +# name: +# type: scalar +170 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 146 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 24 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03770 + + + +# name: +# type: scalar +3289 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2910 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 140 142 25 72 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03070 + + + +# name: +# type: scalar +955 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 778 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 173 4 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03687 + + + +# name: +# type: scalar +1627 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1476 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 111 40 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02750 + + + +# name: +# type: scalar +1399 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1061 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 43 295 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04300 + + + +# name: +# type: scalar +1562 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1405 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 8 + 23 6 45 4 6 2 20 51 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01640 + + + +# name: +# type: scalar +877 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 766 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 31 80 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02930 + + + +# name: +# type: scalar +942 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 736 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 43 163 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02990 + + + +# name: +# type: scalar +1616 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1544 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 22 25 17 8 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01160 + + + +# name: +# type: scalar +2101 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1774 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 155 172 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03740 + + + +# name: +# type: scalar +5558 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 5325 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 201 32 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01260 + + + +# name: +# type: scalar +897 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 805 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 20 8 23 41 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03250 + + + +# name: +# type: scalar +1067 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 970 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 26 71 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01830 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9292 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 369 18 180 141 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01800 + + + +# name: +# type: scalar +1718 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1623 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 77 18 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02950 + + + +# name: +# type: scalar +804 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 568 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 3 27 31 32 88 55 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02205 + + + +# name: +# type: scalar +1027 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 853 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 12 16 41 105 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04830 + + + +# name: +# type: scalar +3996 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3199 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 490 307 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02100 + + + +# name: +# type: scalar +628 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 518 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 18 27 31 32 2 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01240 + + + +# name: +# type: scalar +632 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 532 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 19 49 9 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02860 + + + +# name: +# type: scalar +3992 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3795 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 109 88 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02010 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9172 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 201 627 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03910 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8898 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 954 148 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01550 + + + +# name: +# type: scalar +491 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 440 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 36 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01540 + + + +# name: +# type: scalar +3609 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3269 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 270 70 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03180 + + + +# name: +# type: scalar +1063 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 977 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 44 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01560 + + + +# name: +# type: scalar +1353 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1059 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 73 221 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04270 + + + +# name: +# type: scalar +486 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 446 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 8 32 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01620 + + + +# name: +# type: scalar +1554 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1451 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 61 42 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04120 + + + +# name: +# type: scalar +920 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 887 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 23 10 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04020 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9441 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 72 487 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03470 + + + +# name: +# type: scalar +2843 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2685 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 73 85 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01370 + + + +# name: +# type: scalar +7402 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 6231 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 394 777 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03457 + + + +# name: +# type: scalar +1058 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1005 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 44 9 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04750 + + + +# name: +# type: scalar +980 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 789 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 23 168 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03520 + + + +# name: +# type: scalar +1641 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1329 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 42 270 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03860 + + + +# name: +# type: scalar +1976 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1635 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 81 107 3 47 103 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01950 + + + +# name: +# type: scalar +2232 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2153 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 26 9 20 24 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04400 + + + +# name: +# type: scalar +4617 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4167 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 185 265 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03780 + + + +# name: +# type: scalar +1159 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 781 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 0 27 117 134 100 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02890 + + + +# name: +# type: scalar +1451 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1418 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 13 20 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03840 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9567 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 433 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03850 + + + +# name: +# type: scalar +1108 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 612 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 214 282 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01490 + + + +# name: +# type: scalar +799 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 655 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 39 105 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01453 + + + +# name: +# type: scalar +1965 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1675 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 138 152 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01290 + + + +# name: +# type: scalar +578 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 446 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 132 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02500 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9566 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 434 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03290 + + + +# name: +# type: scalar +1232 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1008 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 209 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04510 + + + +# name: +# type: scalar +754 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 731 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 15 8 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01448 + + + +# name: +# type: scalar +1711 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 601 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 6 + 28 287 2 641 37 115 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03830 + + + +# name: +# type: scalar +1818 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1653 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 146 19 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01740 + + + +# name: +# type: scalar +8455 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8051 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 174 230 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02020 + + + +# name: +# type: scalar +934 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 883 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 37 14 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03960 + + + +# name: +# type: scalar +4699 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 4340 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 159 200 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04080 + + + +# name: +# type: scalar +1263 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 890 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 4 + 94 17 247 15 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01020 + + + +# name: +# type: scalar +1776 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1280 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 287 209 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01140 + + + +# name: +# type: scalar +1409 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1278 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 25 18 0 41 47 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01170 + + + +# name: +# type: scalar +175 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 136 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 14 25 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01910 + + + +# name: +# type: scalar +1269 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 827 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 10 + 18 35 21 22 127 33 6 16 45 119 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03090 + + + +# name: +# type: scalar +833 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 810 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 11 12 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03040 + + + +# name: +# type: scalar +1062 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1002 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 20 40 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02720 + + + +# name: +# type: scalar +3862 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 3439 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 108 315 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01340 + + + +# name: +# type: scalar +1662 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1529 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 57 76 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04430 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 8903 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 710 387 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02690 + + + +# name: +# type: scalar +7659 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 7408 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 251 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02280 + + + +# name: +# type: scalar +742 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 678 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 9 55 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04640 + + + +# name: +# type: scalar +1451 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1010 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 263 178 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02080 + + + +# name: +# type: scalar +1031 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 975 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 33 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03190 + + + +# name: +# type: scalar +753 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 696 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 0 57 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G03160 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9685 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 204 111 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01040 + + + +# name: +# type: scalar +10000 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 9011 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 32 957 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G01880 + + + +# name: +# type: scalar +1946 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 1882 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 41 23 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G04550 + + + +# name: +# type: scalar +1075 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 901 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 2 + 53 121 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + +# name: +# type: cell +# rows: 1 +# columns: 7 +# name: +# type: sq_string +# elements: 1 +# length: 14 +Gene:AT1G02960 + + + +# name: +# type: scalar +3395 + + + +# name: +# type: sparse matrix +# nnz: 1 +# rows: 1 +# columns: 1 +1 1 2980 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + +# name: +# type: matrix +# rows: 1 +# columns: 5 + 102 74 3 92 144 + + + +# name: +# type: matrix +# rows: 0 +# columns: 0 + + + + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/variance_function_1.mat --- /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 +# 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 + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/results/variance_function_2.mat --- /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 +# 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 + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/examples/run_example.sh --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/galaxy/README --- /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. diff -r 000000000000 -r 0f80a5141704 rDiff/galaxy/rdiff.xml --- /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 @@ + + Determines differentially expressed transcripts from read alignments + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.. class:: infomark + +**What it does** + +rDiff_ is a tool for differential expression testing of RNA-Seq data. + +.. _rDiff: http://bioweb.me/rdiff + + + diff -r 000000000000 -r 0f80a5141704 rDiff/galaxy/rdiff_run.sh --- /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} diff -r 000000000000 -r 0f80a5141704 rDiff/mex/Makefile --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/mex/Makefile.bck --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/mex/get_reads.cpp --- /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 +#include +#include +#include + using std::vector; +#include "get_reads_direct.h" +#include "mex_input.h" +#include "read.h" +#include +#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 all_reads; + + get_reads_from_bam(fname, region, &all_reads, strand[0], subsample); + + /* filter reads + * **************/ + vector reads; + for (int i=0; imax_intron_len()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; iget_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; iblock_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; bp0 && mask_ret==NULL) + mexErrMsgTxt("Error allocating memory\n"); + uint32_t mask_ret_c = 0; // counter + for (uint i=0; iget_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 intron_list; + for (int i=0; iget_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; p0 && intron_cell==NULL) + // mexErrMsgTxt("Error allocating memory\n"); + // vector intron_list; + // for (int i=0; iget_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 +#include +#include "sam.h" +#include "get_reads_direct.h" + +#include + using std::vector; +#include + 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* 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* 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* 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; + } +} + diff -r 000000000000 -r 0f80a5141704 rDiff/mex/get_reads_direct.h --- /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 + 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* reads, char strand, int lsubsample); + +#endif diff -r 000000000000 -r 0f80a5141704 rDiff/mex/interval_overlap.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + using std::vector; +#include + 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= 1); +} +bool leftOf(interval_t a, interval_t b) +{ + return (a.stop < b.start); +} + +void scan(interval_t f, vector* Wf, interval_t g, vector* Wg, vector* overlap) +{ + vector::iterator i; + i=Wg->begin(); + while (iend()) + { + 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 intervals1; + for (int i=0; i::max(); + i.stop = std::numeric_limits::max(); + i.set_id = std::numeric_limits::max(); + i.idx = std::numeric_limits::max(); + intervals1.push_back(i); + + //printf("num_intervals1: %i\n", intervals1.size()); + vector intervals2; + for (int i=0; i overlap; + vector Wx; + vector Wy; + vector::iterator x = intervals1.begin(); + vector::iterator y = intervals2.begin(); + while (x::iterator x; + //vector::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 +#include +#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]; +} diff -r 000000000000 -r 0f80a5141704 rDiff/mex/mex_input.h --- /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 +#include + +#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 diff -r 000000000000 -r 0f80a5141704 rDiff/mex/read.cpp --- /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; bp0) // 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* acc_pos) +{ + if (strand[0]=='+') + { + for (int k=1;kpush_back(start_pos+block_starts[k]-1); + } + else if (strand[0]=='-') + { + for (int k=1;kpush_back(start_pos+block_starts[k-1]+block_lengths[k-1]-2); + } +} + +void CRead::get_don_splice_sites(vector* don_pos) +{ + + if (strand[0]=='+') + { + for (int k=1;kpush_back(start_pos+block_starts[k-1]+block_lengths[k-1]-2); + } + else if (strand[0]=='-') + { + for (int k=1;kpush_back(start_pos+block_starts[k]-1); + } +} + +int CRead::min_exon_len() +{ + int min = 1e8; + for (int k=0;kmax) + 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* introns) +{ + for (int i=1; ipush_back(istart); + introns->push_back(iend); + //fprintf(stdout, "%i intron: %d->%d\n", i, istart, iend); + } +} +void CRead::get_introns(vector* intron_starts, vector* intron_ends, vector* block_len1, vector* block_len2) +{ + for (int i=1; ipush_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 +#include +#include +#include + using std::vector; + + +class CRead { + public: + /** constructor + */ + CRead(); + ~CRead(); + + vector block_starts; + vector 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* introns); + void get_introns(vector* intron_starts, vector* intron_ends, vector* block_len1, vector* block_len2); + void get_acc_splice_sites(vector* acc_pos); + void get_don_splice_sites(vector* 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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/configure_rdiff.m --- /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 + + + + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/genes_cell2struct.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/get_nonparametric_tests_caller.m --- /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.start1 + 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)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)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 + diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/LICENSE --- /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. + + + Copyright (C) + + 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. + + , 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. diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/README --- /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. diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/Makefile --- /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: diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/Makefile.bck --- /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: + diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/Makefile.matlab --- /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: + diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/design.h --- /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(); diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lfcons.h --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lfev.c --- /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; inv; 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); +} diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lfev.h --- /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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lffuns.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(); diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lfstruc.h --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/lfwin.h --- /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(); diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/liblfev.c --- /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; in; 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 (g1g0) inc++; else inc = 0; + switch(cri) + { case BIND: + done = (inc>=4) & (vrfp.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 (g1sp)+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; ifact*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[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]=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=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 (lfp; + + 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.nind; + for (i=0; isp)==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; isp)==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; ifp.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; ifp.d; vc = 1<fp.h[ce[i]]; + if ((h>0) && ((hmin==0)|(hlfd.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)fp.d; vc = 1<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; i1) 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; jevs.fl[j]; + ur[j] = lf->evs.fl[j+d]; + } + + /* Set the initial cell; fit at the vertices. */ + for (i=0; ifp,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<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<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<=0; i--) + { tk = 1<=0; i--) + { hermite2(x[i]-ll[i],ur[i]-ll[i],phi); + tk = 1<=0; i--) + { hermite2(x[i]-ll[i],ur[i]-ll[i],phi); + tk = 1<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; invm+nv]; + return(1<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<d; + ll = evpt(fp,0); ur = evpt(fp,fp->nv-1); + mg = mg(evs); + + z0 = 0; vc = 1<=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; id,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; id; 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; id; 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<=l) && (x[pi[il]]>= t)) il--; + if (ir t + */ + jl = ir; jr = r; + while (ir=jl) && (x[pi[jr]] > t)) jr--; + if (ir=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; klfd, k, pi[lo]); + for (i=lo+1; i<=hi; i++) + { t = datum(&lf->lfd,k,pi[i]); + if (tmax) 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; ifp,i,k) = lf->evs.fl[d*(j%2)+k]; + j >>= 1; + } + } + nv = vc; + for (j=0; jevs.ce[j] = j; + } + + for (i=0; ievs.lo[p] = 0; lf->evs.hi[p] = n-1; + lf->evs.s[p] = -1; + while (p=0) + { + if ((ncmevs.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; ifp,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; ifp,nv,i) += datum(&lf->lfd,i,pi[j])*prwt(&lf->lfd,(int)pi[j]); + } + for (i=0; ifp,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; ievs.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<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< 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; jfl[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->liwiwk = (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; img[i]; + ncm = 0; + vc = 1<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; ifp,i,j) = datum(&lf->lfd,j,i); + for (i=0; ievs.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; ifp,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; ievs.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; ifp,i,j) = datum(&lf->lfd,j,i); + for (i=0; ievs.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; ievs.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<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; inv; 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; ifp.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; ifp,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; ifp.d; vc = d+1; + for (i=0; ifp,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; i3) + { ml = 0; + for (i=0; iml) { ml = le[i*vc+j]; im = i; jm = j; } + pv[0] = newsplit(des,lf,(int)ce[im],(int)ce[jm],0); + for (i=0; ievs)); + 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; iml) { 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; ievs)); + 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; in; i++) + { s += prwt(lfd,i); + for (j=0; j1+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; jpc.xbar[j]; + lf->fp.nv = 1; + covrofdata(&lf->lfd,V,xev); /* fix this with scaling */ + eig_dec(V,P,d); + + for (i=0; ifp.nv*d+j] = xev[j]-2*sigma*P[j*d+i]; + lf->fp.nv++; + for (j=0; jfp.nv*d+j] = xev[j]+2*sigma*P[j*d+i]; + lf->fp.nv++; + } + + for (i=0; ilfd,k,i)-xev[k]); + ed[j+1] = 2*j+1+(z[j]>0); + for (k=0; klfd,j,i); + } + k = intri(z,ed,xev,xa,d); + if (xa[0]<0) + { for (j=1; j<=d; j++) + for (k=0; k>=1; + } + } + + for (i=0; ifp.nv; i++) + { PROC_VERTEX(des,lf,i); + if (lf_error) return; + lf->evs.s[i] = 0; + } + for (i=0; ievs.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; kd; + 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; jfp; +evs= &lf->evs; + + d = fp->d; vc = d+1; + ce = evs->ce; + i = 0; + while ((ince) && (!intri(x,&ce[i*vc],evp(fp),xa,d))) i++; + if (i==evs->nce) return(NOSLN); + i *= vc; + for (j=0; jnce[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; i0) 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; ilfd,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; ifp.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; ilfd.n; i++) + { for (j=0; jlfd.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; ilfd.n; i++) + { for (j=0; jlfd.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; icoef[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; jcoef[ind[j]] += 2*PI; + i--; + } + if ((th0<(-PI))&(th1<(-PI))) + { for (j=0; jcoef[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; if1,d_xi(des,i),p); + ii = des->ind[i]; + stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale); + for (j=0; jxev[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; jfp.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; icf[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; ilfd.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; ilfd,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; ilfd.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]eps) + { if (y[1]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; jfp.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; ifp.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]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; ilfd,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; idv.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; idv.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; iP[i*p+j]*wk[j]; + } + fitfun(&lf->lfd, &lf->sp, &x2,des->xev,wk,NULL); + for (i=0; iP[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; ilfd.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; jlfd.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; ifp.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; incoef; i++) + vari[i] = des->V[p*cfn(des,0) + cfn(des,i)]; + vari[0] = sqrt(vari[0]); + if (vari[0]>0) for (i=1; incoef; i++) vari[i] /= vari[0]; + + t0[0] = sqrt(des->f1[0]); + if (t0[0]>0) for (i=1; incoef; 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; incoef; i++) + lf->fp.coef[i*lf->fp.nvm+v] = des->cf[cfn(des,i)]; + + subparcomp2(des,lf,vari,t0); + for (i=0; incoef; 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; in; 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; isp); 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)) || (gcvp; 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 (gcvfp.h[v] = des->h; + if (lf->fp.h[v]<=0) WARN(("zero bandwidth in procvvord")); + + if (i0sp) = 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); icf[i] = 0.0; + i0 = md; if (i0==d1) i0--; + th = md-i0; + for (i=0; icf[i] = (1-th)*coef[i0][i]+th*coef[i0+1][i]; + deg(&lf->sp) = d1; npar(&lf->sp) = p1; + } + + for (i=0; ifp.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; id; i++) pc->xbar[i] = 0.0; + sw = 0.0; + for (i=0; in; i++) + { + wt = prwt(lfd,i); + sw += wt; + for (j=0; jd; j++) + pc->xbar[j] += datum(lfd,j,i)*wt; + des->ind[i] = i; + wght(des,i) = 1.0; + } + for (i=0; id; 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; icoef[i] = des->cf[i]; + pc->xtwx.dg[i] = des->xtwx.dg[i]; + pc->xtwx.wk[i] = des->xtwx.wk[i]; + } + for (i=0; ixtwx.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; ilfd.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; isp); 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; ilfd.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; ifp.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; ifp.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; ievs),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; ilfd.n; + if ((ev(&lf->evs)==EDATA) | (ev(&lf->evs)==ECROS)) + { prepfitp(lf,what); + dir = 0; + } + else + { for (i=0; ilfd,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; i1) 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 +#define DLEXT "dll" +#define DLOPEN(x) LoadLibrary(x) +#define DLSYM GetProcAddress + +#else + +#include +#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; isty[i]==STANGL) + { bx[i] = 0.0; bx[i+d] = 2*PI*lfd->sca[i]; + } + else + { mx = mn = datum(lfd,i,0); + for (j=1; jxl[i]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; id; 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 ((ilfd,0,i)>=datum(&lf->lfd,0,i-1))) i++; + lf->lfd.ord = (i==n); + } + for (i=0; isp); 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); +} diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/liblocf.c --- /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; jsca[j])); + if (s>1) return(0); + + setzero(r1,p*p); + t1 = sqrt(1-s)*h*haz_lfd->sca[0]; + t0 = -t1; + if (t0ilim[dim]) t1 = ilim[dim]; + if (t1>dfx[0]) t1 = dfx[0]; + if (t1n; + for (i=0; i<=n; i++) + { + if (i==n) + { dfx[0] = tmax-t[0]; + for (j=1; jd; j++) dfx[j] = 0.0; + eb = exp(sb/n); + } + else + { eb = exp(base(haz_lfd,i)); sb += base(haz_lfd,i); + for (j=0; jd; j++) dfx[j] = datum(haz_lfd,j,i)-t[j]; + } + + st = haz_sph_int(dfx,cf,h,r1); + if (st) + for (j=0; jd; + 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; jn); + } + else + { eb = exp(base(haz_lfd,i)); sb += base(haz_lfd,i); + for (j=0; jilim[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; j0; 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; kd==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; in; 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; j1.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=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; i0) + { 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; k--) + I[k] = (I[k]-cf[1]*I[k+1]-2*cf[2]*I[k+2])/(k+1); + + if (k0=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; k1.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--) + 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 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 (l1l2) { 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 (l0z0+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; ip; + 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; isca)); + + d = den_lfd->d; + for (i=0; id; p = den_des->p; sca = den_lfd->sca; + hd = 1; + for (i=0; i1) + { 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; i1.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; id; + p = den_des->p; + for (i=0; isca[i]; + for (j=0; j=2 */ + } + +/* transfer to the resp array + */ + prodintresp(resp,prod_wk,dim,deg(den_sp),p); + +/* Symmetrize. +*/ + for (k=0; kd; p = den_des->p; + m1 = d+1; nb = 0; + P = &C[d*d]; + resp[0] = 1; + for (i=0; ip; + 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; iss[i]; + f1[i] = den_des->ss[i]-A[i]; + } + break; + case LIDENT: + lk = 0.0; + for (i=0; iss[i]; + for (j=0; jres[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=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; isty[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]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; ixev,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; in; i++) + { ii = des->ind[i]; + if (!cens(lfd,ii)) + { w = wght(des,ii)*prwt(lfd,ii); + for (j=0; jss[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; iss[i]); + mut_printf("\n"); + } + + switch(link(den_sp)) + { case LIDENT: + cf[0] = 0.0; + return(LF_OK); + case LLOG: + if (nnzw) 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) && (y0) + { res[ZLIK] += y*log(wp/y); + res[ZDLL] += y/p; + res[ZDDLL]+= y/(p*p); + } + if (yw)) /* 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 (y0)) return(LF_BADP); + if ((p>=1) && (yPI/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 (ycf[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; in; i++) + { ii = des->ind[i]; + if ((resp(lfd,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 (yHUBERC*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; in; 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; ip; 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; in; 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 ((iioi)) im = ii; + } + else + { if ((iioi)) 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; in; 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])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; in; 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 ((i1n-1) && (el[des->ind[i1+1]]==el[ii])) i1++; + if (sum1>=sum2-tol1) + while ((i1n-1) && (el[des->ind[i1+1]]==el[des->ind[i+1]])) i1++; + + if (i0ind,i0,i1,oi); + for (j=0; jp; j++) cf[j] += el[ii]*dc[j]; + return(ii); + } + } +mut_printf("Big finddlt problem.\n"); +ii = des->ind[des->n-1]; +for (j=0; jp; 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; in; 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; in; 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 (lb1oi) | (iioi) & (iin; 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=1.0) return((spp; + 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=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 (q0i))*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) + { 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; in; 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; ip; 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; in; i++) + { sv += l[i]*l[i]; + ii = des->ind[i]; + dp = dist(des,ii); + for (j=0; jh,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) && (zn) 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) | (tuph; + } + 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 (cph; } + 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 (cph; } + 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) | (tuph; + clo = MAX(clo,tlo); + cup = MIN(cup,tup); + } + break; + case ACP: + cp = adcri(des->llk,t[0],t[2],pen(sp)); + if (cph; } + else + { if (i>0) i = 2; } + break; + case AMDI: + cp = mmse(lfd,sp,dv,des); + if (cph; } + 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=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; ideriv[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; id; 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; ideriv[i]]++; + + for (i=0; isty[i]) + { + case STANGL: + fitfunangl(dx[i],ff[i],lfd->sca[i],ct_deriv[i],deg(sp)); + break; + default: + for (j=0; jind 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; in; i++) + { ii = des->ind[i]; + for (j=0; jd; 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; is) s = rhoi[i]; + } + return(s); + } + + if (kt==KSPH) + { for (i=0; i=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 (rxl; + d = lfd->d; + k = 1; + for (j=0; j=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 (nnn; + 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-lx) 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; i0) + { 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; in; i++) + { eq = 1; + for (j=0; jd; 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; iind[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; ixev[j]; + dist(des,i) = rho(u,lfd->sca,d,kt(sp),lfd->sty); + des->ind[i] = i; + } + } + else + for (i=0; iind[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; ixev, 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; ilo) & (x[i]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; in; 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; in; 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 (nxp; + 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^ */ + } + else + { for (i=0; in; 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; ixtwx,&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; ixtwx,&M2[i*p]); + for (i=0; ismwt),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; if1[i]*V[i*p+j]*des->f1[j]; /* var(thetahat) */ + } + tr[5] = sqrt(tr[5]); + + setzero(m2,p*p); + for (i=0; in; 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; ixtwx,&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; jind[j]; + stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale); + for (i=0; if1[i] += link[ZDDLL]*d_xij(des,j,ii)*u[j]; + } + jacob_solve(&des->xtwx,des->f1); + for (i=0; iind[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=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; in; 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; if1[i]; + + nd = dv->nd; + dv->nd = nd+1; + if (deg>=1) + for (i=0; id; 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; id; i++) + { dv->deriv[nd] = i; + for (j=0; jd; 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; isca[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; iind[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; jxev[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; jxev[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; ideriv[nd] = i; + fitfun(lfd,sp,des->xev,des->xev,des->f1,dv); + for (k=0; kind[i]; + stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale); + for (j=0; jf1[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; jind[j]; + ulx[j] = innerprod(des->f1,&X[ii*p],p); /* (...)XT */ + } + for (j=0; jind[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; j0) + { for (j=0; jderiv[nd]=i; + fitfun(lfd,sp,des->xev,des->xev,des->f1,dv); + jacob_solve(&des->xtwx,des->f1); + for (k=0; kind[k]; + for (l=0; lf1[l]*X[ii*p+l]*wght(des,ii); + } /* add c'(0)(XTWX)^{-1}XTW */ + } + } + + dv->nd = nd+2; + if (deg==2) + { for (i=0; ideriv[nd]=i; + for (j=0; jderiv[nd+1]=j; + fitfun(lfd,sp,des->xev,des->xev,des->f1,dv); + jacob_solve(&des->xtwx,des->f1); + for (k=0; kind[k]; + for (l=0; lf1[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; iind[i]; + stdlinks(link,lfd,sp,ii,fitv(des,ii),robscale); + link[ZDDLL] = sqrt(fabs(link[ZDDLL])); + for (j=0; jbest_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; isty[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; kfix[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; in; 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; jfix[i]) + { for (j=0; j4) 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; in; 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)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; id; 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; in; 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; in; 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; jst = JAC_RAW; + J->p = p; + jacob_dec(J,JAC_EIGD); + + sing = 0; + for (i=0; iZ[i*p+i]oc; + p = des->p; + memcpy(oc,coef,p*sizeof(double)); + + for (i=0; if1,&des->xtwx); + + if (*f>f0) /* halve till we drop */ + { while (*f>f0) + { lb = lb/2.0; + for (i=0; if1,&des->xtwx); + } + return(st); + } + + if (!af) return(st); + + /* double */ + while (*ff1,&des->xtwx); + } + + lb /= 2.0; + for (i=0; if1,&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; ixtwx.Z[i*p+i]xtwx.dg[sd]>0) + for (i=0; ixtwx.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; if1); + memcpy(delta,mm_des->f1,p*sizeof(double)); + st = descenddir(mm_des,coef,delta,&mmf,0); + } + + if ((j>0) & (fabs(mmf-old_f)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; in; 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; in; i++) + { for (j=0; jd; 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; in; 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; id; 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; id; 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; id; 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; k2) 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); +} diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/libmut.c --- /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 +#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 +#include "mut.h" + +void chol_dec(A,n,p) +double *A; +int n, p; +{ int i, j, k; + + for (j=0; j=0; i--) + { for (j=i+1; j=0; i--) + { for (j=i+1; j=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 +#include +#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; imx) 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 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; kZ; + P = Q = J->Q; + d = J->p; + w = J->wk; + + tol = e_tol(D,d); + + rank = 0; + for (i=0; itol) + { w[i] /= D[i*(d+1)]; + rank++; + } + for (i=0; iZ; + Q = J->Q; + p = J->p; + w = J->wk; + + tol = e_tol(D,p); + rank = 0; + + for (i=0; itol) + { 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; itol) + { v[i] = w[i]/sqrt(D[i*(p+1)]); + rank++; + } + else v[i] = 0.0; + } + + for (i=0; ip; + sum = 0.0; + tol = e_tol(J->Z,p); + + for (i=0; iZ[i*p+i]>tol) + { J->wk[i] = 0.0; + for (j=0; jwk[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; i0) ? 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; k0) ? 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 +#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 +#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; kmg[i]) + { index[i] = 0; + x[i] = ll[i]; + if (i==d-1) /* done */ + { z = 1.0; + for (j=0; j1) + { 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; idg[i] = (J->Z[i*(p+1)]<=0) ? 0.0 : 1/sqrt(J->Z[i*(p+1)]); + for (i=0; iZ[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; ip; i++) v[i] *= J->dg[i]; + rank = eig_solve(J,v); + for (i=0; ip; 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; ip; 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; ip; 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; ip; 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 +#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 (xlox0) 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 (xlox0) 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) | (bx2*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; i1.0) cut = 1.0; + cut *= 0.0001; + do + { for (j=0; jZ); 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 +#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; jmx) + { mi = i; + mx = fabs(X[j*n+i]); + } + } + for (i=j; i0) + { for (i=j; i=0; i--) + { for (j=i+1; j +#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)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(x0); +} + +double solve_fp(f,x0,tol,maxit) +double (*f)(), x0, tol; +int maxit; +{ double x1; + int i; + for (i=0; is2) ? 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)])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; k0) + { mx = D[0]; + for (i=1; imx) mx = D[i*(d+1)]; + tol *= mx; + } + rank = 0; + for (i=0; itol) + { w[i] /= D[i*(d+1)]; + rank++; + } + for (i=0; i0) + { mx = D[0]; + for (i=1; imx) mx = D[i*(d+1)]; + tol *= mx; + } + for (i=0; itol) w[i] /= sqrt(D[i*(d+1)]); + for (i=0; i700.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; iZ[0]==0.0) | (J->Z[3]==0.0)) return(1); + fmin = 1.0; + for (i=0; i ur[i]) f = (ur[i]-x[i]-x0[i])/b[i]; + if (f0) + { matrixmultiply(C,x,b,p,p,1); + for (i=0; i0)) { con[i] = 0; rlx = 1; } + } + + if (rlx) /* reconstruct the constraint matrix */ + { setzero(L,p*p); m = 0; + for (i=0; iymax) + { 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]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 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]]i0) mut_order(x,ind,i0,l-1); + if (r= 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 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 + +/* quadmin: minimize the quadratic, + * 2 + 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 (ipmaxn) mut_printf("project: n too large\n"); + if (m>pmaxm) mut_printf("project: m too large\n"); + + for (i=0; i10) mut_printf("conquadmin: max. n is 10.\n"); + memcpy(L0,L,n*m*sizeof(double)); + jacob_dec(J,JAC_CHOL); + for (i=0; i0) + { 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; i10) mut_printf("qstep: too many constraints.\n"); + if (deac) + { for (i=0; id[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 +#include +#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=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; i0) + { t = 0.0; + for (j=0; j= 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 +#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; id+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; j0) c0 = c; + if (tp<0) c1 = c; + cn = c + tp/td; + if (cn0.0) && (cn>c1)) cn = (c+c1)/2; + c = cn; + if (fabs(tp/alpha)<1.0e-10) return(c); + } + return(c); +} diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/local.h --- /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 +#include +#include +#include + +/*RVERSION*/ + +#ifdef SWINVERSION +#define SVERSION +#include "newredef.h" +#endif + +#ifdef RVERSION + +/* #typedef int Sint is defined in R.h */ +#include +#include +#include +#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 +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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/locf.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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/mexlf.c --- /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; inc) ? 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; i0; + + 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; in = mxGetM(mxGetField(data,0,"x")); + d = lfd->d = mxGetN(mxGetField(data,0,"x")); + x = mxGetPr(mxGetField(data,0,"x")); + for (i=0; ix[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; isty[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; isca[i] = (k==1) ? sc[0] : sc[i]; + + xl = mxGetPr(mxGetField(data,0,"xlim")); + for (i=0; ixl[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; ifl[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; ideriv[i] = drv[i]-1; + dv->nd = (drv[0]>0) ? j : 0; +} diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/mut.h --- /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 +#include +#include +#include + +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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/mutil.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 +#include +#include +#include + +/* 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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/Source/tube.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 */ diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/aic.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/aicplot.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/backtr.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/fitted.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/gcv.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/gcvplot.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/hatmatrix.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/invlink.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/kappa0.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lcv.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lcvplot.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lf_censor.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfband.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfgui.m --- /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 + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfknots.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfmarg.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfplot.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/lfsmooth.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/locfit.m --- /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 + + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/locfit_all.m --- /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}; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/plotbyfactor.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/predict.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/residuals.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/rsum.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/scb.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/smooth_lf.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/spence15.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/spence21.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/locfit/m/vecr.m --- /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; diff -r 000000000000 -r 0f80a5141704 rDiff/src/octave/importdata.m --- /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 +## . + +## -*- 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 + +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); + diff -r 000000000000 -r 0f80a5141704 rDiff/src/octave/intersect.m --- /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 +## . + +## -*- 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]'); diff -r 000000000000 -r 0f80a5141704 rDiff/src/perform_nonparametric_tests.m --- /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 + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/perform_parametric_tests.m --- /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 + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/process_command_line_args.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/process_configure_rdiff.m --- /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 + + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/rdiff.m --- /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 + + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/rdiff_caller.m --- /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') diff -r 000000000000 -r 0f80a5141704 rDiff/src/set_rdiff_paths.m --- /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); + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/calcl_nbin_pdf.m --- /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)); diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/comp_nbin_p_value_mean_variance.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/get_mean_variance_seg.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/get_nonparametric_masks.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/rDiff_mmd.m --- /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 )); diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/rDiff_nonparametric.m --- /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))=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) )); diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/rDiff_parametric.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tests/rDiff_poisson.m --- /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 + + + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/compute_testing_region.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/convert_reads_to_region_indicators.m --- /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 + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/detect_overlapping_regions.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/intersect.m --- /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 +%## . + +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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/clip_reads.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/get_reads.cpp --- /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 +#include +#include +#include +#include +#include + 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 all_reads; + + get_reads_from_bam(fname, region, &all_reads, strand[0], subsample); + + for (int i=0; istrip_leftright_tag() ; + } + + /* filter reads + * **************/ + int left = 0; + int right = 0; + + vector reads; + for (int i=0; ileft) + left++; + if (all_reads[i]->right) + right++; + //if (all_reads[i]->max_intron_len()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()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; iget_coverage(from_pos, to_pos, mask_ret); + } + } else { + for (int i=0; iblock_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; iblock_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; bp0 && mask_ret==NULL) + mexErrMsgTxt("Error allocating memory\n"); + uint32_t mask_ret_c = 0; // counter + for (uint i=0; iblock_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 intron_list; + for (int i=0; iget_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=2) { + vector intron_starts; + vector intron_ends; + vector block_len1; + vector block_len2; + for (int i=0; iget_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=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 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(jread_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()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; kstart_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; k0 && reads[i]->start_posstart_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 +#include +#include "sam.h" +#include "get_reads_direct.h" + +#include + using std::vector; +#include + 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* 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* 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* 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; +//} + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/get_reads_direct.h --- /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 + using std::vector; +#include "read.h" +#include +#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* reads, char strand, int lsubsample); +void parse_cigar(bam1_t* b, CRead* read, bam_header_t* header); + +#endif diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/get_reads_direct.h.old --- /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 + 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* reads, char strand, int lsubsample); + +#endif diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/get_reads_direct.o Binary file rDiff/src/tools/read_utils/get_reads_direct.o has changed diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/get_reads_for_gene.m --- /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 + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/remove_reads_from_other_genes.m --- /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 + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/read_utils/splicingsequence.m --- /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 = []; + diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/sanitize_genes.m --- /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 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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/tools/transform_single_end_reads.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/variance/estimate_variance.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/src/variance/estimate_variance_helper.m --- /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,'first'):find(MEANS=BOUNDS(i),1,'first'):find(MEANSi,MEANS1: + 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__() diff -r 000000000000 -r 0f80a5141704 rDiff/tools/determine_engine.m --- /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 diff -r 000000000000 -r 0f80a5141704 rDiff/tools/whoami.m --- /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) ;