diff libs/sratoolkit.2.8.0-centos_linux64/schema/vdb/built-in.vschema @ 3:38ad1130d077 draft

planemo upload commit a4fb57231f274270afbfebd47f67df05babffa4a-dirty
author charles_s_test
date Mon, 27 Nov 2017 11:21:07 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libs/sratoolkit.2.8.0-centos_linux64/schema/vdb/built-in.vschema	Mon Nov 27 11:21:07 2017 -0500
@@ -0,0 +1,412 @@
+/*===========================================================================
+*
+*                            PUBLIC DOMAIN NOTICE
+*               National Center for Biotechnology Information
+*
+*  This software/database is a "United States Government Work" under the
+*  terms of the United States Copyright Act.  It was written as part of
+*  the author's official duties as a United States Government employee and
+*  thus cannot be copyrighted.  This software/database is freely available
+*  to the public for use. The National Library of Medicine and the U.S.
+*  Government have not placed any restriction on its use or reproduction.
+*
+*  Although all reasonable efforts have been taken to ensure the accuracy
+*  and reliability of the software and data, the NLM and the U.S.
+*  Government do not and cannot warrant the performance or results that
+*  may be obtained by using this software or data. The NLM and the U.S.
+*  Government disclaim all warranties, express or implied, including
+*  warranties of performance, merchantability or fitness for any particular
+*  purpose.
+*
+*  Please cite the author in any work or product based on this material.
+*
+* ===========================================================================
+*
+*/
+
+/*==========================================================================
+ * VDB built-in functions, formats and types
+ */
+version 1;
+
+
+/*--------------------------------------------------------------------------
+ * types
+ */
+
+// Row id range consist of row_id_start and row_id_stop
+typedef I64 vdb:row_id_range [ 2 ];
+
+
+/*--------------------------------------------------------------------------
+ * typesets
+ */
+typeset integer_set { I8, U8, I16, U16, I32, U32, I64, U64 };
+typeset float_set { F32, F64 };
+typeset numeric_set { integer_set, float_set };
+typeset text_set { utf8, utf16, utf32, ascii };
+typeset text8_set { utf8, ascii };
+typeset transpose_set { B8, B16, B32, B64 };
+
+
+/*--------------------------------------------------------------------------
+ * formats
+ */
+fmtdef merged_fmt;
+fmtdef transposed_fmt;
+fmtdef delta_averaged_fmt;
+
+
+/*--------------------------------------------------------------------------
+ * constants
+ */
+const U8 ALIGN_LEFT = 0;
+const U8 ALIGN_RIGHT = 1;
+
+/*--------------------------------------------------------------------------
+ * functions
+ */
+
+
+/* cast
+ *  performs a "C++ reinterpret_cast" style cast
+ *  rewrites input as required to produce output
+ *
+ *  legal operations include numeric_set -> numeric_set,
+ *  numeric <-> character, etc.
+ */
+function
+any cast #1.0 ( any in )
+    = vdb:cast;
+
+/* bit_or
+ *  performs a bitwise operation 'OR' for every byte in A and B
+ *  A and B are not neccesarily have the same size
+ *  the resulting row will have the size of B while OR operation is done for portion of A overlapping B
+ *  For different sizes of A and B 'align' parameter provides what edge of A and B are aligned
+ *  possible values ALIGN_LEFT, ALIGN_RIGHT
+ * 
+ */
+function < type T >
+T  bit_or #1 < U8 align > ( T  A, T B  )
+    = vdb:bit_or;
+
+/* trim
+ * performs trimming of value val from column A
+ * align provides left- or right- trimming
+ */
+function < type T >
+T trim #1 < U8 align, T val > ( T A )
+    = vdb:trim;
+
+
+/* redimension
+ *  performs a change of dimension without changing bit pattern
+ */
+function
+any redimension #1.0 ( any in )
+    = vdb:redimension;
+
+
+/* row_id
+ *  returns the row id of a request
+ */
+function
+I64 row_id #1.0 ()
+    = vdb:row_id;
+
+
+/* row_len
+ *  returns the number of elements in a row
+ *
+ *  "in" [ DATA ] - column supplying row. if row does not exist
+ *  in column, the resultant length is 0.
+ */
+function
+U32 row_len #1.0 ( any in )
+    = vdb:row_len;
+
+
+/* fixed_row_len
+ *  returns non-zero if the entire page
+ *  has a uniform row-length, zero otherwise
+ *
+ *  "in" [ DATA ] - column to query
+ */
+function
+U32 fixed_row_len #1.0 ( any in )
+    = vdb:fixed_row_len;
+
+
+/* compare
+ *  evaluates src [ i ] == cmp [ i ]
+ *  causes writing exception if unequal.
+ *
+ *  For whole types, equality is bitwise equal
+ *  for floating point types see below.
+ *
+ *  "T" [ TYPE ] - base element type to be processed
+ *
+ *  "sig_bits" [ OPTIONAL CONST >= 1 ] - for floating point types, ignored
+ *  otherwise, the number of significant binary digits in the mantissas to
+ *  compare such that |x - y| <= 1, for corresponding numbers x (in a) and
+ *  y (in b) both scaled according to sig_bits and their common magnitude.
+ *  "sig_bits" may be an array, if so "sel" is required (see below).
+ *
+ *  "src" [ DATA ] - standard input data derived from source
+ *
+ *  "cmp" [ DATA ] - feedback data after being written and re-read
+ *
+ */
+validate function < type T >
+void compare #1.0 < * U32 sig_bits > ( T src, T cmp )
+    = vdb:compare;
+
+validate function < type T >
+void no_compare #1.0 ( T src, T cmp )
+    = vdb:no_compare;
+
+
+/* compare2f
+ *  evaluates src [ i ] == cmp [ i ]
+ *  causes writing exception if unequal.
+ *
+ *  "T" [ TYPE ] - base element type to be processed
+ *
+ *  "sig_bits" [ CONST >= 1 ] - for floating point types, ignored otherwise,
+ *  array containing the number of significant binary digits in the mantissas
+ *  to compare such that |x - y| <= 1, for corresponding numbers x (in a) and
+ *  y (in b) both scaled according to sig_bits and their common magnitude.
+ *
+ *  "src" [ DATA ] - standard input data derived from source
+ *
+ *  "cmp" [ DATA ] - feedback data after being written and re-read
+ *
+ *  "sel" [ DATA ] - data to select which element of "sig_bits" to
+ *  use for the comparison.  The valid values of "sel" are
+ *  [0 .. length sig_bits).
+ *
+validate function < type T >
+void compare2f #1.0 < U32 sig_bits > ( float_set src, float_set cmp, T sel )
+    = vdb:compare2f;
+*/
+
+/* range_validate
+ *  passes input through if all values fall between lower and
+ *  upper bounds, INCLUSIVE
+ *
+ *  "T" [ TYPE ] - type to be validated
+ *
+ *  "lower" [ CONST ] and "upper" [ CONST ] - inclusive
+ *  bounds on input values
+ *
+ *  "in" [ DATA ] - data to be validated
+ */
+function < type T >
+T range_validate #1.0 < T lower, T upper > ( T in )
+    = vdb:range_validate;
+
+
+/* select
+ *  return first non-empty input for id
+ *  inputs are taken from first to last
+ *
+ *  "T" [ TYPE ] - data type of selection
+ *
+ *  "first" [ DATA ] - first of N inputs
+ *
+ *  "second" [ DATA ] - second of N inputs
+ *  all other inputs are optional and must
+ *  be compatible with type "T"
+ */
+function < type T >
+T select #1.0 ( T first, T second, ... )
+    = vdb:select;
+
+
+/* transpose
+ *  transpose a page of unformatted data
+ *
+ *  for example - convert a simple page of values,
+ *  where vertical scale is row id and horizontal element index:
+ *
+ *        1   2   3
+ *      +---+---+---+
+ *    1 | a | b | c |
+ *      +---+---+---+
+ *    2 | d | e | f |
+ *      +---+---+---+
+ *    3 | g | h | i |
+ *      +---+---+---+
+ *    4 | j | k | l |
+ *      +---+---+---+
+ *
+ *  into:
+ *
+ *        1   2   3   4
+ *      +---+---+---+---+
+ *    1 | a | d | g | j |
+ *      +---+---+---+---+
+ *    2 | b | e | h | k |
+ *      +---+---+---+---+
+ *    3 | c | f | i | l |
+ *      +---+---+---+---+
+ *
+ *  variable row-lengths are supported. The output blob is
+ *  formatted, meaning that the result can no longer be addressed
+ *  as a matrix, but the transposition has be applied to data.
+ *
+ *  "in" [ DATA ] - unformatted data to be transposed
+ */
+function
+transposed_fmt transpose #1 ( transpose_set in )
+    = vdb:transpose;
+
+
+/* detranspose
+ *  pardoning the awful name, apply a transposition on the result
+ *  of "transpose" to produce the original blob. "transpose"
+ *  itself cannot be reused because of its signature.
+ */
+function
+transpose_set detranspose #1 ( transposed_fmt in )
+    = vdb:detranspose;
+
+/*
+ * delta_average computes average representation of the maximium 
+ * lengh row and deltas every row against it
+ */
+function
+delta_averaged_fmt delta_average #1 ( any in ) 
+     = vdb:delta_average;
+
+function
+any undelta_average #1 ( delta_averaged_fmt in )
+    = vdb:undelta_average;
+
+/* merge
+ *  merges all input blobs of any format/type into a single blob
+ */
+function
+merged_fmt merge #1.0 ( any in, ... )
+    = vdb:merge;
+
+
+/* split
+ *  extracts a single blob from a merged blob by index
+ *
+ *  "idx" [ CONST ] - blob index
+ */
+
+function
+any split #1.0 < U32 idx > ( merged_fmt in )
+    = vdb:split;
+
+
+/* meta:read
+ *  reads table metadata node as a row
+ * meta:value
+ *  reads metadata node as single value,
+ *  performing size conversion if necessary,
+ *  e.g. I8 TO I64, I32 TO I16
+ *
+ *  "T" [ TYPE ] - cast data type of metadata node
+ *
+ *  "node" [ CONST ] - path to metadata node
+ */
+function < type T >
+T meta:read #1.0 < ascii node, * bool deterministic > ();
+
+function < type T >
+T meta:value #1.0 < ascii node, * bool deterministic > ();
+
+
+/* meta:write
+ *  writes row data to table metadata node
+ *
+ *  "T" [ TYPE ] - cast data type of metadata node
+ *
+ *  "node" [ CONST ] - path to metadata node
+ *
+ *  "in" [ DATA ] - source of row data
+ */
+function < type T >
+T meta:write #1.0 < ascii node > ( T in );
+
+
+/* meta:attr:read
+ *  reads table metadata attribute as a row
+ *
+ *  "node" [ CONST ] - path to metadata node
+ *
+ *  "attr" [ CONST ] - attribute name on node
+ */
+function
+ascii meta:attr:read #1.0 < ascii node, ascii attr, * bool deterministic > ();
+
+
+/* meta:attr:write
+ *  write row data as table metadata attribute
+ *
+ *  "node" [ CONST ] - path to metadata node
+ *
+ *  "attr" [ CONST ] - attribute name on node
+ */
+function
+ascii meta:attr:write #1.0 < ascii node, ascii attr > ( ascii in );
+
+
+/* parameter:read
+ *  reads named cursor parameter text
+ *
+ *  "name" [ CONST ] - parameter name
+ */
+function
+text8_set parameter:read #1.0 < ascii name, * bool deterministic > ();
+
+
+/* environment:read
+ *  reads named environment variable text
+ *
+ *  "name" [ CONST ] - environment variable name
+ */
+function
+text8_set environment:read #1.0 < ascii name > ();
+
+// case sensivity mode
+const U8 CASE_SENSITIVE         =  0;
+const U8 CASE_INSENSITIVE_LOWER =  1;
+const U8 CASE_INSENSITIVE_UPPER =  2;
+
+/* idx:text:project
+ *  perform a reverse lookup in an index
+ *  if key not found then use substitute
+ *
+ *  "index_name" [ CONST ] - name of text index
+ *
+ *  "substitute" [ DATA, OPTIONAL ] - source
+ *  of values to substitute for values not
+ *  found in the index.
+ *
+ *  Version 1.1: look into "substitute" (if available) first and then to the index,
+ *  added parameter "case_sensitivity"
+ */
+function text8_set idx:text:project #1.1 < ascii index_name, * U8 case_sensitivity > ( * text8_set substitute );
+
+
+/* idx:text:insert
+ *  inserts "key" into index. returns key if insertion into index failed or
+ *  when "case_insensitive" is true
+ *
+ *  Version 1.1: added parameter "case_sensitivity"
+ */
+function text8_set idx:text:insert #1.1 < ascii index_name, * U8 case_sensitivity > ( text8_set key );
+
+
+/* idx:text:lookup
+ *  perform a lookup in an index
+ *  returns vdb:row_id_range associated with the
+ *
+ *  Version 1.1: added parameter "case_sensitivity"
+ */
+function vdb:row_id_range  idx:text:lookup #1.1 < ascii index_name , ascii query_by_name, * U8 case_sensitivity > ();