Mercurial > repos > iuc > table_compute
changeset 0:1b0f96ed73f2 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/allowed_functions.xml Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,48 @@ +<macros> + <!-- These macros are the allowed functions: numpy, pandas + Dataframe, math, or basic operators. + + This file is parsed by the python scripts to reduce + duplicate definitions of allowed functions --> + <macro name="select_vectorops" > + <option value="min" selected="true">Minimum</option> + <option value="max">Maximum</option> + <option value="sum">Sum</option> + <option value="count">Number of Non-NA Values</option> + <option value="nunique">Number of Unique Observations</option> + <option value="mean">Mean</option> + <option value="median">Median</option> + <option value="std">Standard Deviation</option> + <option value="sem">Standard Error of the Mean</option> + <option value="var">Variance</option> + <option value="mad">Mean absolute deviation</option> + <option value="product">Product</option> + <yield /> + </macro> + <macro name="select_onevalueoperator"> + <option value="log">Ln</option> + <option value="log10">Log10</option> + <option value="exp">Exponential</option> + <option value="floor">Floor</option> + <option value="ceil">Ceiling</option> + <option value="sqrt">Square root</option> + </macro> + <macro name="select_twovaluenumericoperator"> + <option value="add">Add</option> + <option value="sub">Subtract</option> + <option value="mul">Multiply</option> + <option value="truediv">True Divide</option> + <option value="floordiv">Floor Divide</option> + <option value="pow">Power</option> + <option value="mod">Remainder</option> + </macro> + <macro name="select_twovaluebooleanops"> + <yield /> + <option value="lt">< (Less Than)</option> + <option value="le">≤ (Less Than or Equal to)</option> + <option value="gt">> (Greater Than)</option> + <option value="ge">≥ (Greater Than or Equal to)</option> + <option value="eq">≡ (Equal to)</option> + <option value="ne">≠ (Not Equal to)</option> + </macro> +</macros>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/safety.py Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,211 @@ +import re + + +class Safety(): + """ + Class to safely evaluate mathematical expression on single + or table data + """ + + __allowed_tokens = ( + '(', ')', 'if', 'else', 'or', 'and', 'not', 'in', + '+', '-', '*', '/', '%', ',', '!=', '==', '>', '>=', '<', '<=', + 'min', 'max', 'sum', + ) + __allowed_ref_types = { + 'pd.DataFrame': { + 'abs', 'add', 'agg', 'aggregate', 'align', 'all', 'any', 'append', + 'apply', 'applymap', 'as_matrix', 'asfreq', 'at', 'axes', 'bool', + 'clip', 'clip_lower', 'clip_upper', 'columns', 'combine', + 'compound', 'corr', 'count', 'cov', 'cummax', 'cummin', 'cumprod', + 'cumsum', 'describe', 'div', 'divide', 'dot', 'drop', + 'drop_duplicates', 'droplevel', 'dropna', 'duplicated', 'empty', + 'eq', 'equals', 'expanding', 'ffill', 'fillna', 'filter', 'first', + 'first_valid_index', 'floordiv', 'ge', 'groupby', 'gt', 'head', + 'iat', 'iloc', 'index', 'insert', 'interpolate', 'isin', 'isna', + 'isnull', 'items', 'iteritems', 'iterrows', 'itertuples', 'ix', + 'join', 'keys', 'kurt', 'kurtosis', 'last', 'last_valid_index', + 'le', 'loc', 'lookup', 'lt', 'mad', 'mask', 'max', 'mean', + 'median', 'melt', 'merge', 'min', 'mod', 'mode', 'mul', 'multiply', + 'ndim', 'ne', 'nlargest', 'notna', 'notnull', 'nsmallest', + 'nunique', 'pct_change', 'pivot', 'pivot_table', 'pop', 'pow', + 'prod', 'product', 'quantile', 'radd', 'rank', 'rdiv', 'replace', + 'resample', 'rfloordiv', 'rmod', 'rmul', 'rolling', 'round', + 'rpow', 'rsub', 'rtruediv', 'sample', 'select', + 'sem', 'shape', 'shift', 'size', 'skew', 'slice_shift', + 'squeeze', 'stack', 'std', 'sub', 'subtract', 'sum', 'swapaxes', + 'swaplevel', 'T', 'tail', 'take', 'transform', 'transpose', + 'truediv', 'truncate', 'tshift', 'unstack', 'var', 'where', + }, + 'pd.Series': { + 'abs', 'add', 'agg', 'aggregate', 'align', 'all', 'any', 'append', + 'apply', 'argsort', 'as_matrix', 'asfreq', 'asof', 'astype', 'at', + 'at_time', 'autocorr', 'axes', 'between', 'between_time', 'bfill', + 'bool', 'cat', 'clip', 'clip_lower', 'clip_upper', 'combine', + 'combine_first', 'compound', 'corr', 'count', 'cov', 'cummax', + 'cummin', 'cumprod', 'cumsum', 'describe', 'diff', 'div', 'divide', + 'divmod', 'dot', 'drop', 'drop_duplicates', 'droplevel', 'dropna', + 'dt', 'dtype', 'dtypes', 'duplicated', 'empty', 'eq', 'equals', + 'ewm', 'expanding', 'factorize', 'ffill', 'fillna', 'filter', + 'first', 'first_valid_index', 'flags', 'floordiv', 'ge', 'groupby', + 'gt', 'hasnans', 'head', 'iat', 'idxmax', 'idxmin', 'iloc', 'imag', + 'index', 'interpolate', 'is_monotonic', 'is_monotonic_decreasing', + 'is_monotonic_increasing', 'is_unique', 'isin', 'isna', 'isnull', + 'item', 'items', 'iteritems', 'ix', 'keys', 'kurt', 'kurtosis', + 'last', 'last_valid_index', 'le', 'loc', 'lt', 'mad', 'map', + 'mask', 'max', 'mean', 'median', 'min', 'mod', 'mode', 'mul', + 'multiply', 'name', 'ndim', 'ne', 'nlargest', 'nonzero', 'notna', + 'notnull', 'nsmallest', 'nunique', 'pct_change', 'pop', 'pow', + 'prod', 'product', 'ptp', 'quantile', 'radd', 'rank', 'rdiv', + 'rdivmod', 'real', 'repeat', 'replace', 'resample', 'rfloordiv', + 'rmod', 'rmul', 'rolling', 'round', 'rpow', 'rsub', 'rtruediv', + 'sample', 'searchsorted', 'select', 'sem', 'shape', 'shift', + 'size', 'skew', 'slice_shift', 'sort_index', 'sort_values', + 'squeeze', 'std', 'sub', 'subtract', 'sum', 'swapaxes', + 'swaplevel', 'T', 'tail', 'take', 'transform', 'transpose', + 'truediv', 'truncate', 'tshift', 'unique', 'unstack', + 'value_counts', 'var', 'where', 'xs', + }, + } + + __allowed_qualified = { + # allowed numpy functionality + 'np': { + 'abs', 'add', 'all', 'any', 'append', 'array', 'bool', 'ceil', + 'complex', 'cos', 'cosh', 'cov', 'cumprod', 'cumsum', 'degrees', + 'divide', 'divmod', 'dot', 'e', 'empty', 'exp', 'float', 'floor', + 'hypot', 'inf', 'int', 'isfinite', 'isin', 'isinf', 'isnan', 'log', + 'log10', 'log2', 'max', 'mean', 'median', 'min', 'mod', 'multiply', + 'nan', 'ndim', 'pi', 'product', 'quantile', 'radians', 'rank', + 'remainder', 'round', 'sin', 'sinh', 'size', 'sqrt', 'squeeze', + 'stack', 'std', 'str', 'subtract', 'sum', 'swapaxes', 'take', + 'tan', 'tanh', 'transpose', 'unique', 'var', 'where', + }, + # allowed math functionality + 'math': { + 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', + 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', + 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', + 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', + 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', + 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', + 'sqrt', 'tan', 'tanh', 'tau', 'trunc', + }, + # allowed pd functionality + 'pd': { + 'DataFrame', 'array', 'concat', 'cut', 'date_range', 'factorize', + 'interval_range', 'isna', 'isnull', 'melt', 'merge', 'notna', + 'notnull', 'period_range', 'pivot', 'pivot_table', 'unique', + 'value_counts', 'wide_to_long', + }, + } + + def __init__(self, expression, + ref_whitelist=None, ref_type=None, + custom_qualified=None): + self.allowed_qualified = self.__allowed_qualified.copy() + if ref_whitelist is None: + self.these = [] + else: + self.these = ref_whitelist + if ref_type is None or ref_type not in self.__allowed_ref_types: + self.allowed_qualified['_this'] = set() + else: + self.allowed_qualified[ + '_this' + ] = self.__allowed_ref_types[ref_type] + if custom_qualified is not None: + self.allowed_qualified.update(custom_qualified) + self.expr = expression + self.__assertSafe() + + def generateFunction(self): + "Generates a function to be evaluated outside the class" + cust_fun = "def fun(%s):\n\treturn(%s)" % (self.these[0], self.expr) + return cust_fun + + def __assertSafe(self): + indeed, problematic_token = self.__isSafeStatement() + if not indeed: + self.detailedExcuse(problematic_token) + raise ValueError("Custom Expression is not safe.") + + @staticmethod + def detailedExcuse(word): + "Gives a verbose statement for why users should not use some specific operators." + mess = None + if word == "for": + mess = "for loops and comprehensions are not allowed. Use numpy or pandas table operations instead." + elif word == ":": + mess = "Colons are not allowed. Use inline Python if/else statements." + elif word == "=": + mess = "Variable assignment is not allowed. Use object methods to substitute values." + elif word in ("[", "]"): + mess = "Direct indexing of arrays is not allowed. Use numpy or pandas functions/methods to address specific parts of tables." + else: + mess = "Not an allowed token in this operation" + print("( '%s' ) %s" % (word, mess)) + + def __isSafeStatement(self): + """ + Determines if a user-expression is safe to evaluate. + + To be considered safe an expression may contain only: + - standard Python operators and numbers + - inline conditional expressions + - select functions and objects + by default, these come from the math, numpy and pandas + libraries, and must be qualified with the modules' conventional + names math, np, pd; can be overridden at the instance level + - references to a whitelist of objects (pd.DataFrames by default) + and their methods + """ + + safe = True + # examples of user-expressions + # '-math.log(1 - elem/4096) * 4096 if elem != bn else elem - 0.5' + # 'vec.median() + vec.sum()' + + # 1. Break expressions into tokens + # e.g., + # [ + # '-', 'math.log', '(', '1', '-', 'elem', '/', '4096', ')', '*', + # '4096', 'if', 'elem', '!=', 'bn', 'else', 'elem', '-', '0.5' + # ] + # or + # ['vec.median', '(', ')', '+', 'vec.sum', '(', ')'] + tokens = [ + e for e in re.split( + r'([a-zA-Z0-9_.]+|[^a-zA-Z0-9_.() ]+|[()])', self.expr + ) if e.strip() + ] + + # 2. Subtract allowed standard tokens + rem = [e for e in tokens if e not in self.__allowed_tokens] + + # 3. Subtract allowed qualified objects from allowed modules + # and whitelisted references and their attributes + rem2 = [] + for e in rem: + parts = e.split('.') + if len(parts) == 1: + if parts[0] in self.these: + continue + if len(parts) == 2: + if parts[0] in self.these: + parts[0] = '_this' + if parts[0] in self.allowed_qualified: + if parts[1] in self.allowed_qualified[parts[0]]: + continue + rem2.append(e) + + # 4. Assert that rest are real numbers + e = '' + for e in rem2: + try: + _ = float(e) + except ValueError: + safe = False + break + + return safe, e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/table_compute.py Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,310 @@ +#!/usr/bin/env python3 +""" +Table Compute tool - a wrapper around pandas with parameter input validation. +""" + +__version__ = "0.8" + +import csv +import math +from sys import argv + +import numpy as np +import pandas as pd +import userconfig as uc +from safety import Safety +# This should be generated in the same directory + +# Version command should not need to copy the config +if len(argv) == 2 and argv[1] == "--version": + print(__version__) + exit(-1) + + +class Utils: + @staticmethod + def getOneValueMathOp(op_name): + "Returns a simple one value math operator such as log, sqrt, etc" + return getattr(math, op_name) + + @staticmethod + def getVectorPandaOp(op_name): + "Returns a valid DataFrame vector operator" + return getattr(pd.DataFrame, op_name) + + @staticmethod + def getTwoValuePandaOp(op_name, pd_obj): + "Returns a valid two value DataFrame or Series operator" + return getattr(type(pd_obj), "__" + op_name + "__") + + +# Math is imported but not directly used because users +# may specify a "math.<function>" when inserting a custom +# function. To remove linting errors, which break CI testing +# we will just use an arbitrary math statement here. +__ = math.log + + +# Set decimal precision +pd.options.display.precision = uc.Default["precision"] + +user_mode = uc.Default["user_mode"] +user_mode_single = None +out_table = None +params = uc.Data["params"] + +if user_mode == "single": + # Read in TSV file + data = pd.read_csv( + uc.Data["tables"][0]["reader_file"], + header=uc.Data["tables"][0]["reader_header"], + index_col=uc.Data["tables"][0]["reader_row_col"], + keep_default_na=uc.Default["narm"], + sep='\t' + ) + # Fix whitespace issues in index or column names + data.columns = [col.strip() if type(col) is str else col + for col in data.columns] + data.index = [row.strip() if type(row) is str else row + for row in data.index] + + user_mode_single = params["user_mode_single"] + + if user_mode_single == "precision": + # Useful for changing decimal precision on write out + out_table = data + + elif user_mode_single == "select": + cols_specified = params["select_cols_wanted"] + rows_specified = params["select_rows_wanted"] + + # Select all indexes if empty array of values + if not cols_specified: + cols_specified = range(len(data.columns)) + if not rows_specified: + rows_specified = range(len(data)) + + # do not use duplicate indexes + # e.g. [2,3,2,5,5,4,2] to [2,3,5,4] + nodupes_col = not params["select_cols_unique"] + nodupes_row = not params["select_rows_unique"] + + if nodupes_col: + cols_specified = [x for i, x in enumerate(cols_specified) + if x not in cols_specified[:i]] + if nodupes_row: + rows_specified = [x for i, x in enumerate(rows_specified) + if x not in rows_specified[:i]] + + out_table = data.iloc[rows_specified, cols_specified] + + elif user_mode_single == "filtersumval": + mode = params["filtersumval_mode"] + axis = params["filtersumval_axis"] + operation = params["filtersumval_op"] + compare_operation = params["filtersumval_compare"] + value = params["filtersumval_against"] + minmatch = params["filtersumval_minmatch"] + + if mode == "operation": + # Perform axis operation + summary_op = Utils.getVectorPandaOp(operation) + axis_summary = summary_op(data, axis=axis) + # Perform vector comparison + compare_op = Utils.getTwoValuePandaOp( + compare_operation, axis_summary + ) + axis_bool = compare_op(axis_summary, value) + + elif mode == "element": + if operation.startswith("str_"): + data = data.astype("str") + value = str(value) + # Convert str_eq to eq + operation = operation[4:] + else: + value = float(value) + + op = Utils.getTwoValuePandaOp(operation, data) + bool_mat = op(data, value) + axis_bool = np.sum(bool_mat, axis=axis) >= minmatch + + out_table = data.loc[:, axis_bool] if axis == 0 else data.loc[axis_bool, :] + + elif user_mode_single == "matrixapply": + # 0 - column, 1 - row + axis = params["matrixapply_dimension"] + # sd, mean, max, min, sum, median, summary + operation = params["matrixapply_op"] + + if operation is None: + use_custom = params["matrixapply_custom"] + if use_custom: + custom_func = params["matrixapply_custom_func"] + + def fun(vec): + """Dummy Function""" + return vec + + ss = Safety(custom_func, ['vec'], 'pd.Series') + fun_string = ss.generateFunction() + exec(fun_string) # SUPER DUPER SAFE... + + out_table = data.apply(fun, axis) + else: + print("No operation given") + exit(-1) + else: + op = getattr(pd.DataFrame, operation) + out_table = op(data, axis) + + elif user_mode_single == "element": + # lt, gt, ge, etc. + operation = params["element_op"] + if operation is not None: + op = Utils.getTwoValuePandaOp(operation, data) + value = params["element_value"] + try: + # Could be numeric + value = float(value) + except ValueError: + pass + # generate filter matrix of True/False values + bool_mat = op(data, value) + else: + # implement no filtering through a filter matrix filled with + # True values. + bool_mat = np.full(data.shape, True) + + # Get the main processing mode + mode = params["element_mode"] + if mode == "replace": + replacement_val = params["element_replace"] + out_table = data.mask(bool_mat, replacement_val) + elif mode == "modify": + mod_op = Utils.getOneValueMathOp(params["element_modify_op"]) + out_table = data.mask( + bool_mat, data.where(bool_mat).applymap(mod_op) + ) + elif mode == "scale": + scale_op = Utils.getTwoValuePandaOp( + params["element_scale_op"], data + ) + scale_value = params["element_scale_value"] + out_table = data.mask( + bool_mat, scale_op(data.where(bool_mat), scale_value) + ) + elif mode == "custom": + element_customop = params["element_customop"] + + def fun(elem): + """Dummy Function""" + return elem + + ss = Safety(element_customop, ['elem']) + fun_string = ss.generateFunction() + exec(fun_string) # SUPER DUPER SAFE... + + out_table = data.mask( + bool_mat, data.where(bool_mat).applymap(fun) + ) + else: + print("No such element mode!", mode) + exit(-1) + + elif user_mode_single == "fulltable": + general_mode = params["mode"] + + if general_mode == "melt": + melt_ids = params["MELT"]["melt_ids"] + melt_values = params["MELT"]["melt_values"] + + out_table = pd.melt(data, id_vars=melt_ids, value_vars=melt_values) + elif general_mode == "pivot": + pivot_index = params["PIVOT"]["pivot_index"] + pivot_column = params["PIVOT"]["pivot_column"] + pivot_values = params["PIVOT"]["pivot_values"] + + out_table = data.pivot( + index=pivot_index, columns=pivot_column, values=pivot_values + ) + elif general_mode == "custom": + custom_func = params["fulltable_customop"] + + def fun(tableau): + """Dummy Function""" + return tableau + + ss = Safety(custom_func, ['table'], 'pd.DataFrame') + fun_string = ss.generateFunction() + exec(fun_string) # SUPER DUPER SAFE... + + out_table = fun(data) + + else: + print("No such mode!", user_mode_single) + exit(-1) + + +elif user_mode == "multiple": + + table_sections = uc.Data["tables"] + + if not table_sections: + print("Multiple table sets not given!") + exit(-1) + + reader_skip = uc.Default["reader_skip"] + + # Data + table = [] + # 1-based handlers for users "table1", "table2", etc. + table_names = [] + # Actual 0-based references "table[0]", "table[1]", etc. + table_names_real = [] + + # Read and populate tables + for x, t_sect in enumerate(table_sections): + tmp = pd.read_csv( + t_sect["file"], + header=t_sect["header"], + index_col=t_sect["row_names"], + keep_default_na=uc.Default["narm"], + sep="\t" + ) + table.append(tmp) + table_names.append("table" + str(x + 1)) + table_names_real.append("table[" + str(x) + "]") + + custom_op = params["fulltable_customop"] + ss = Safety(custom_op, table_names, 'pd.DataFrame') + fun_string = ss.generateFunction() + # Change the argument to table + fun_string = fun_string.replace("fun(table1):", "fun():") + # table1 to table[1] + for name, name_real in zip(table_names, table_names_real): + fun_string = fun_string.replace(name, name_real) + + fun_string = fun_string.replace("fun():", "fun(table):") + exec(fun_string) # SUPER DUPER SAFE... + out_table = fun(table) + +else: + print("No such mode!", user_mode) + exit(-1) + +if not isinstance(out_table, (pd.DataFrame, pd.Series)): + print('The specified operation did not result in a table to return.') + raise RuntimeError( + 'The operation did not generate a pd.DataFrame or pd.Series to return.' + ) +out_parameters = { + "sep": "\t", + "float_format": "%%.%df" % pd.options.display.precision, + "header": uc.Default["out_headers_col"], + "index": uc.Default["out_headers_row"] +} +if user_mode_single not in ('matrixapply', None): + out_parameters["quoting"] = csv.QUOTE_NONE + +out_table.to_csv(uc.Default["outtable"], **out_parameters)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/table_compute.xml Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,1441 @@ +<tool id="table_compute" name="Table Compute" version="@VERSION@"> + <description>computes operations on table data</description> + <macros> + <token name="@VERSION@">0.8</token> + <token name="@COPEN@"><![CDATA[<code>]]></token> + <token name="@CCLOSE@"><![CDATA[</code>]]></token> + <import>allowed_functions.xml</import> + <!-- text field validators --> + <macro name="validator_text" > + <validator type="regex" message="No special characters allowed">^(?:\w+)?$</validator> + <sanitizer sanitize="false" /> + </macro> + <macro name="validator_text_required" > + <validator type="regex" message="No special characters allowed">^(?:\w+)?$</validator> + <validator type="empty_field" /> + </macro> + <macro name="validator_index_identifiers" > + <validator type="regex" message="Specify a comma-separated list of index names without special characters">^(?:\w+(?:, *\w+)*)?$</validator> + <sanitizer sanitize="false" /> + </macro> + <macro name="validator_index_ranges"> + <validator type="regex" message="Specify a comma-separated list index numbers or ranges">^(?:\d+(?::\d)*(?:, *\d+(?::\d)*)*)?$</validator> + <sanitizer sanitize="false" /> + </macro> + <macro name="validator_functiondef"> + <validator type="regex" message="An expression is required and is allowed to contain only letters, numbers and the characters '_ !-+=/*%.<>()'">^[\w !\-+=/*%,.<>()]+$</validator> + <sanitizer sanitize="false" /> + </macro> + <!-- macro for main input tests --> + <macro name="test_inputs_single" > + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="small.tsv" /> + <conditional name="user" > + <yield /> + </conditional> + </conditional> + </macro> + <!-- macro for umi to transcript tests --> + <macro name="umi2trans" > + <yield /> + <conditional name="user" > + <param name="mode" value="element" /> + <param name="element_op" value="gt" /> + <param name="element_value" value="0" /> + <conditional name="element" > + <param name="mode" value="custom" /> + <param name="custom_expr" value="-math.log(1 - elem/4096) * 4096 if elem != 4096 else elem - 0.5" /> + </conditional> + </conditional> + </macro> + <!-- macro for file inputs --> + <macro name="file_opts"> + <param name="input" type="data" format="tsv,tabular" label="Table" /> + <param name="col_row_names" type="select" display="checkboxes" multiple="true" optional="true" + label="This input data has"> + <option value="has_col_names" selected="true">Column names on the first row</option> + <option value="has_row_names" selected="true">Row names on the first column"</option> + </param> + </macro> + <!-- element value macro --> + <macro name="elem_val_macro" > + <param name="element_value" type="text" optional="true" label="Filter value" help="This value is converted to numeric if possible, otherwise it is treated as a string" /> + </macro> + </macros> + <requirements> + <requirement type="package" version="0.25">pandas</requirement> + <requirement type="package" version="1.17">numpy</requirement> + </requirements> + + <version_command><![CDATA[ + touch '$__tool_directory__/scripts/userconfig.py' && python '$__tool_directory__/scripts/table_compute.py' --version + ]]></version_command> + + <command detect_errors="exit_code"><![CDATA[ + ## Can only import generated userconfig.py if calling + ## script is in the same directory. Soft-linking does + ## not satisfy importing, so we copy everything. + cp '$userconf' ./userconfig.py && + cp '$__tool_directory__/scripts/safety.py' ./safety.py && + cp '$__tool_directory__/scripts/table_compute.py' ./table_compute.py && + python ./table_compute.py + ]]></command> + <configfiles> + <configfile name="userconf"><![CDATA[ + +## Range Maker +## "2:5,11,1:2" specifies "2,3,4,5,11,1,2" which in python is "1,2,3,4,10,0,1" +#def rangemake(tab): +#echo [(n-1) for r in map(lambda y: range(int(y[0]),int(y[-1])+1), map(lambda x: x.split(':'), tab.split(','))) for n in r] +#end def + +## Strip leading and trailing whitespace off custom functions + +Default = { + "reader_skip": 0, + "precision": $precision, + #if 'ignore_nas' in str($out_opts): + "narm": True, + #else: + "narm": False, + #end if + #if 'output_headers_row' in str($out_opts): + "out_headers_row": True, + #else: + "out_headers_row": False, + #end if + #if 'output_headers_col' in str($out_opts): + "out_headers_col": True, + #else: + "out_headers_col": False, + #end if + "user_mode": '$singtabop.use_type', + "outtable": '$table' +} + +#if str($singtabop.use_type) == "single": +Data = { + "tables": [ + { + "reader_file": '$singtabop.input', + #if 'has_col_names' in str($singtabop.col_row_names): + "reader_header": 0, + #else: + "reader_header": None, + #end if + #if 'has_row_names' in str($singtabop.col_row_names): + "reader_row_col": 0, + #else: + "reader_row_col": False, + #end if + } + ], + "params": { + "user_mode_single": '$singtabop.user.mode.value', + #if $singtabop.user.mode.value == 'precision': + ## Literally do nothing, the user just sets the precision slider + ## at the top default level + } + #elif $singtabop.user.mode.value == 'select': + "select_cols_unique": #echo 'select_cols_keepdupe' in str($singtabop.user.select_keepdupe)#, + "select_rows_unique": #echo 'select_rows_keepdupe' in str($singtabop.user.select_keepdupe)#, + #if $singtabop.user.select_cols_wanted: + "select_cols_wanted": $rangemake(str($singtabop.user.select_cols_wanted)), + #else + "select_cols_wanted": None, + #end if + #if $singtabop.user.select_rows_wanted: + "select_rows_wanted": $rangemake(str($singtabop.user.select_rows_wanted)), + #else + "select_rows_wanted": None, + #end if + } + #elif $singtabop.user.mode.value == 'filtersumval': + "filtersumval_mode": '$singtabop.user.filtersumval_mode.use.value', + "filtersumval_axis": $singtabop.user.axis.value, + #if $singtabop.user.filtersumval_mode.use.value == 'operation': + "filtersumval_compare": '$singtabop.user.filtersumval_mode.compare_op.value', + "filtersumval_op": '$singtabop.user.filtersumval_mode.operation.value', + "filtersumval_against": $singtabop.user.filtersumval_mode.against, + "filtersumval_minmatch": None, + #elif $singtabop.user.filtersumval_mode.use.value == 'element': + "filtersumval_compare": None, + "filtersumval_op": '$singtabop.user.filtersumval_mode.operation.value', + ## against could be string or float, so we parse this in the code + "filtersumval_against": '$singtabop.user.filtersumval_mode.against', + "filtersumval_minmatch": $singtabop.user.filtersumval_mode.minmatch, + #end if + } + #elif $singtabop.user.mode.value == 'matrixapply': + "matrixapply_dimension": $singtabop.user.dimension.value, + #if str($singtabop.user.matrixapply_func.vector_op) == 'custom': + #set $custom_func = str($singtabop.user.matrixapply_func.custom_func).strip() + "matrixapply_custom": True, + "matrixapply_custom_func": '$custom_func', + "matrixapply_op": None, + #else + "matrixapply_custom": False, + "matrixapply_custom_func": None, + "matrixapply_op": '$singtabop.user.matrixapply_func.vector_op', + #end if + } + #elif $singtabop.user.mode.value == 'element': + #if str($singtabop.user.elem_val.element_op) != "None": + "element_op": '$singtabop.user.elem_val.element_op.value', + ## Value is string or float, parsed in code later + "element_value" : '$singtabop.user.elem_val.element_value', + #else: + "element_op": None, + #end if + "element_mode": '$singtabop.user.element.mode.value', + #if str($singtabop.user.element.mode) == "replace": + "element_replace": '$singtabop.user.element.replace_value.value', + #elif str($singtabop.user.element.mode) == "modify": + "element_modify_op": '$singtabop.user.element.modify_op.value', + #elif str($singtabop.user.element.mode) == "scale": + "element_scale_op": '$singtabop.user.element.scale_op.value', + "element_scale_value": $singtabop.user.element.scale_value, + #elif str($singtabop.user.element.mode) == "custom": + #set $custom_func = str($singtabop.user.element.custom_expr).strip() + "element_customop": '$custom_func', + #end if + } + #elif $singtabop.user.mode.value == 'fulltable': + "mode": '$singtabop.user.general.use', + #if str($singtabop.user.general.use) == 'melt': + #if str($singtabop.user.general.id_vars).strip(): + #set $melt_ids = [i.strip() for i in str($singtabop.user.general.id_vars).split(',')] + #else + #set $melt_ids = 'None' + #end if + #if str($singtabop.user.general.value_vars).strip(): + #set $melt_values = [i.strip() for i in str($singtabop.user.general.value_vars).split(',')] + #else + #set $melt_values = 'None' + #end if + "MELT": { + "melt_ids": $melt_ids, + "melt_values": $melt_values, + }, + #elif str($singtabop.user.general.use) == 'pivot': + #set $pivot_index = str($singtabop.user.general.index).strip() + #if $pivot_index: + #set $pivot_index = "'" + $pivot_index + "'" + #else: + #set $pivot_index = 'None' + #end if + #set $pivot_column = "'" + str($singtabop.user.general.column).strip() + "'" + #if str($singtabop.user.general.values).strip(): + #set $pivot_values = [i.strip() for i in str($singtabop.user.general.values).split(',')] + #else + #set $pivot_values = 'None' + #end if + "PIVOT": { + "pivot_index": $pivot_index, + "pivot_column": $pivot_column, + "pivot_values": $pivot_values, + }, + #elif str($singtabop.user.general.use) == 'custom': + #set $custom_func = str($singtabop.user.general.fulltable_custom_expr.value).strip() + "fulltable_customop": '$custom_func', + + #end if + }, + #end if +} + +#elif str($singtabop.use_type) == "multiple": +#set $custom_func = str($singtabop.fulltable_custom_expr).strip() +Data = { + "tables": [ + #for $i, $s in enumerate($singtabop.tables) + { + "file": '${s.input}', + #if 'has_col_names' in str($s.col_row_names): + "header": 0, + #else: + "header": None, + #end if + #if 'has_row_names' in str($s.col_row_names): + "row_names": 0, + #else: + "row_names": False, + #end if + }, + #end for + ], + 'params': { + "fulltable_customop" : '$custom_func', + } +} +#end if + +]]> + </configfile> + </configfiles> + <inputs> + <conditional name="singtabop" > + <param name="use_type" type="select" label="Input Single or Multiple Tables" help="Operations on single tables are better tailored towards more general use-cases. For multiple tables usage, all tables should ideally be of the same dimensions for simple operations, although complex operations are also supported for unequally sized tables (see Help section)." > + <option value="single">Single Table</option> + <option value="multiple">Multiple Tables</option> + </param> + <when value="single"> + <expand macro="file_opts" /> + <conditional name="user" > + <param name="mode" type="select" label="Type of table operation" > + <option value="precision">No operation (just reformat on output)</option> + <option value="select">Drop, keep or duplicate rows and columns</option> + <option value="filtersumval">Filter rows or columns by their properties</option> + <option value="matrixapply">Compute expression across rows or columns</option> + <option value="element">Manipulate selected table elements</option> + <option value="fulltable">Perform a full table operation</option> + </param> + <when value="precision" /> + <when value="select"> + <param name="select_cols_wanted" type="text" optional="true" label="List of columns to select" help="Comma separated. (e.g. @COPEN@3:5,99,2:4@CCLOSE@ will select columns @COPEN@3,4,5,99,2,3,4@CCLOSE@). Columns can be duplicated by specifying them multiple times. Leave blank to retain all columns. See Example #1 for an example of using this mode." > + <expand macro="validator_index_ranges" /> + </param> + <param name="select_rows_wanted" type="text" optional="true" label="List of rows to select" help="The same rules apply as above" > + <expand macro="validator_index_ranges" /> + </param> + <param name="select_keepdupe" type="select" display="checkboxes" multiple="true" label="Duplicate Indices" help="Keep duplicates when specifying ranges (e.g. if unset, @COPEN@1:3,2:4@CCLOSE@ will yield @COPEN@1,2,3,4@CCLOSE@ instead of @COPEN@1,2,3,2,3,4@CCLOSE@)" > + <option value="select_cols_keepdupe" selected="true" >Keep duplicate columns</option> + <option value="select_rows_keepdupe" selected="true" >Keep duplicate rows</option> + </param> + </when> + <when value="filtersumval" > + <param name="axis" type="select" display="radio" + label="Filter" > + <option value="1">Rows</option> + <option value="0">Columns</option> + </param> + <conditional name="filtersumval_mode" > + <param name="use" type="select" label="Filter criterion" help="See Example #2 for an example of using this mode." > + <option value="operation" >Result of function applied to columns/rows</option> + <option value="element" >Number of column/row elements passing filter</option> + </param> + <when value="operation"> + <param name="operation" type="select" label="Keep column/row if its observed" > + <expand macro="select_vectorops" /> + </param> + <param name="compare_op" type="select" label="is" > + <expand macro="select_twovaluebooleanops" /> + </param> + <param name="against" type="float" label="this value" value="0" /> + </when> + <when value="element"> + <param name="minmatch" type="integer" min="1" value="0" label="Keep column/row if at least" /> + <param name="operation" type="select" label="of its element are" > + <expand macro="select_twovaluebooleanops" > + <option value="str_eq" >~ (Matching)</option> + <option value="str_ne" >!~ (not Matching)</option> + </expand> + </param> + <param name="against" type="text" label="this value"> + <expand macro="validator_functiondef" /> + </param> + </when> + </conditional> + </when> + <when value="matrixapply" > + <conditional name="matrixapply_func"> + <param name="vector_op" type="select" label="Calculate"> + <option value="custom">Custom Function</option> + <expand macro="select_vectorops" > + <option value="rank">Ranks</option> + <option value="cumsum" >Cumulative Sum</option> + <option value="cumprod" >Cumulative Product</option> + <option value="cummin" >Cumulative Minimum</option> + <option value="cummax" >Cumulative Maximum</option> + </expand> + </param> + <when value="custom"> + <param name="custom_func" type="text" + label="Custom function on 'vec'" + help="The parameter name is @COPEN@vec@CCLOSE@, referring to a vector of a specific row or column being operated on. Numpy and Pandas DataFrame operators are supported. e.g. @COPEN@np.sum(vec) + np.median(vec)@CCLOSE@, and @COPEN@vec.sum() + vec.median()@CCLOSE@ are equivalent operations." > + <expand macro="validator_functiondef" /> + </param> + </when> + <when value="min" /> + <when value="max" /> + <when value="sum" /> + <when value="count" /> + <when value="nunique" /> + <when value="mean" /> + <when value="median" /> + <when value="std" /> + <when value="sem" /> + <when value="var" /> + <when value="mad" /> + <when value="product" /> + <when value="rank" /> + <when value="cumsum" /> + <when value="cumprod" /> + <when value="cummin" /> + <when value="cummax" /> + </conditional> + <param name="dimension" type="select" label="For each"> + <option value="0">Column</option> + <option value="1">Row</option> + </param> + </when> + <when value="fulltable"> + <conditional name="general" > + <param name="use" type="select" label="Operation" help="See Examples 5, 7, and 8 for usage" > + <option value="melt" >Melt</option> + <option value="pivot" >Pivot</option> + <option value="custom" >Custom</option> + </param> + <when value="melt" > + <param name="id_vars" type="text" value="" label="Variable IDs" + help="Comma-delimited list of column names to use as identifiers" > + <expand macro="validator_index_identifiers" /> + </param> + <param name="value_vars" type="text" value="" label="Unpivoted IDs" + help="Comma-delimited list of column names to un-pivot. Leave blank to use all." > + <expand macro="validator_index_identifiers" /> + </param> + </when> + <when value="pivot" > + <param name="index" type="text" value="" + label="Index" + help="Name of the column to use as new index" > + <expand macro="validator_text" /> + </param> + <param name="column" type="text" value="" + label="Column" + help="Name of the column to use to generate the columns of the new table from" > + <expand macro="validator_text_required" /> + </param> + <param name="values" type="text" value="" + label="Values" + help="Names of the columns to use for populating the cells of the new table. Leave blank to use all." > + <expand macro="validator_index_identifiers" /> + </param> + </when> + <when value="custom" > + <param name="fulltable_custom_expr" type="text" + label="Custom expression on 'table', along 'axis' (0 or 1)" + help="The parameter name is @COPEN@table@CCLOSE@ and @COPEN@axis@CCLOSE@, referring to the table being acted on and the column (@COPEN@0@CCLOSE@) or row (@COPEN@1@CCLOSE@) to perform the operation on. Numpy, math, Pandas DataFrame operators, and inline @COPEN@if else@CCLOSE@ are supported (e.g. @COPEN@np.log(table) - table.mean(0) / table.std(1)@CCLOSE@). See Example #5 in the Help section. "> + <expand macro="validator_functiondef" /> + </param> + </when> + </conditional> + </when> + <when value="element"> + <conditional name="element" > + <param name="mode" type="select" + label="Operation to perform" > + <option value="replace">Replace values</option> + <option value="modify">Transform</option> + <option value="scale">Arithmetic operation</option> + <option value="custom">Custom</option> + </param> + <when value="replace" > + <param name="replace_value" type="text" label="Replacement value" help="This value is converted to numeric if possible, otherwise it is treated as a string" /> + </when> + <when value="modify" > + <param name="modify_op" type="select" label="Transformation function" help="Example: to transform values to their square root, select @COPEN@Square Root@CCLOSE@ here."> + <expand macro="select_onevalueoperator" /> + </param> + </when> + <when value="scale"> + <param name="scale_op" type="select" label="Operation" help="The selected operation will be applied to the table elements as the first operand. The value of the second operand can be provided in the next box. Example: to raise all values to the power of 5, select @COPEN@Power@CCLOSE@ here and type @COPEN@5@CCLOSE@ in the box below." > + <expand macro="select_twovaluenumericoperator" /> + </param> + <param name="scale_value" type="float" value="0" label="Second operand value" /> + </when> + <when value="custom"> + <param name="custom_expr" type="text" + label="Custom expression on 'elem'" + help="The parameter name is @COPEN@elem@CCLOSE@, referring to the element being acted on. Most operators and @COPEN@if@CCLOSE@ @COPEN@else@CCLOSE@ statements are supported. See Examples #3 and #4 in the Help section."> + <expand macro="validator_functiondef" /> + </param> + </when> + </conditional> + <conditional name="elem_val" > + <param name="element_op" type="select" label="Operate on elements" + help="Only selected elements will be manipulated. Other elements will retain their original value." > + <expand macro="select_twovaluebooleanops" > + <option value="None" selected="true">All</option> + </expand> + </param> + <when value="None" /> + <when value="lt"> + <expand macro="elem_val_macro" /> + </when> + <when value="le"> + <expand macro="elem_val_macro" /> + </when> + <when value="gt"> + <expand macro="elem_val_macro" /> + </when> + <when value="ge"> + <expand macro="elem_val_macro" /> + </when> + <when value="eq"> + <expand macro="elem_val_macro" /> + </when> + <when value="ne"> + <expand macro="elem_val_macro" /> + </when> + </conditional> + </when> + </conditional> + </when> + <when value="multiple"> + <repeat name="tables" title="Tables" min="1" default="1"> + <expand macro="file_opts" /> + </repeat> + <param name="fulltable_custom_expr" type="text" + label="Custom expression on 'tableN'" + help="The parameter name is @COPEN@tableN@CCLOSE@, where @COPEN@N@CCLOSE@ refers to a specific table. e.g. @COPEN@table1 + table3 - table2@CCLOSE@, will add the first and third input tables and then subtract the second. Most operators and @COPEN@if@CCLOSE@ @COPEN@else@CCLOSE@ statements are supported. See Example #6 in the Help section for further examples."> + <expand macro="validator_functiondef" /> + </param> + </when> + </conditional> + <param name="out_opts" type="select" display="checkboxes" multiple="true" optional="true" + label="Output formatting options"> + <option value="ignore_nas" selected="true">Ignore NA values</option> + <option value="output_headers_col" selected="true">Output column headers</option> + <option value="output_headers_row" selected="true">Output row headers</option> + </param> + <param name="precision" type="integer" min="0" max="20" value="6" label="Output decimal precision" /> + </inputs> + <outputs> + <data name="table" format="tabular" label="${tool.name} on ${on_string}" /> + </outputs> + <tests> + <test expect_num_outputs="1"> + <!-- Test 1: Select --> + <expand macro="test_inputs_single" > + <param name="mode" value="select" /> + <param name="select_cols_wanted" value="2:4,2,2" /> + <param name="select_rows_wanted" value="2:5,3,3" /> + <param name="select_keepdupe" value="select_cols_keepdupe" /> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.select.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 2: Select, cols only --> + <expand macro="test_inputs_single" > + <param name="mode" value="select" /> + <param name="select_cols_wanted" value="2:4,2,2" /> + <param name="select_keepdupe" value="select_cols_keepdupe,select_rows_keepdupe" /> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.select.colsonly.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 3: Select, rows only --> + <expand macro="test_inputs_single" > + <param name="mode" value="select" /> + <param name="select_rows_wanted" value="2:5,3,3" /> + <param name="select_keepdupe" value="select_cols_keepdupe" /> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.select.rowsonly.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 4: Filtersumval, row --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="1" /> + <conditional name="filtersumval_mode" > + <param name="use" value="operation" /> + <param name="operation" value="sum" /> + <param name="compare_op" value="gt" /> + <param name="against" value="50" /> + </conditional> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.fs.rowsum.gt.50.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 5: Filtersumval, col neq 0 --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="0" /> + <conditional name="filtersumval_mode" > + <param name="use" value="operation" /> + <param name="operation" value="sum" /> + <param name="compare_op" value="ne" /> + <param name="against" value="0" /> + </conditional> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.fs.colsum.neq0.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 6: Filtersumval, col val gt 10 --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="0" /> + <conditional name="filtersumval_mode" > + <param name="use" value="operation" /> + <param name="operation" value="sum" /> + <param name="compare_op" value="gt" /> + <param name="against" value="10" /> + </conditional> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.fs.colsum.gt10.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 7: Filtersumval, median val col >= 2 --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="0" /> + <conditional name="filtersumval_mode" > + <param name="use" value="operation" /> + <param name="operation" value="median" /> + <param name="compare_op" value="ge" /> + <param name="against" value="2" /> + </conditional> + </expand> + <param name="precision" value="5" /> + <output name="table" value="small.fs.medvalcol.ge2.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 8: Filtersumval, keep rows with at least + two values > 2 --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="1" /> + <conditional name="filtersumval_mode" > + <param name="use" value="element" /> + <param name="operation" value="gt" /> + <param name="against" value="2" /> + <param name="minmatch" value="2" /> + </conditional> + </expand> + <param name="precision" value="5" /> + <output name="table" value="small.fs.elemgt2.mm2.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 9: Filtersumval, keep cols with at least + 4 string values matching "0" --> + <expand macro="test_inputs_single" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="0" /> + <conditional name="filtersumval_mode" > + <param name="use" value="element" /> + <param name="operation" value="str_ne" /> + <param name="against" value="0" /> + <param name="minmatch" value="4" /> + </conditional> + </expand> + <param name="precision" value="3" /> + <output name="table" value="small.fs.elemnmatch0.mm4.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 10: Matrix Apply, row max --> + <expand macro="test_inputs_single" > + <param name="mode" value="matrixapply" /> + <param name="dimension" value="1" /> + <conditional name="matrixapply_func" > + <param name="vector_op" value="max" /> + </conditional> + </expand> + <param name="precision" value="0" /> + <param name="out_opts" value="ignore_nas,output_headers_row" /> + <output name="table" value="small.matapp.rowmax.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 11: Element, all, scale, remainder 5 --> + <expand macro="test_inputs_single" > + <param name="mode" value="element" /> + <conditional name="elem_val"> + <param name="element_op" value="None" /> + </conditional> + <conditional name="element" > + <param name="mode" value="scale" /> + <param name="scale_op" value="mod" /> + <param name="scale_value" value="5" /> + </conditional> + </expand> + <param name="precision" value="2" /> + <output name="table" value="small.element.scalerem5.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 12: Matrix Apply, column custom --> + <expand macro="test_inputs_single" > + <param name="mode" value="matrixapply" /> + <param name="dimension" value="0" /> + <conditional name="matrixapply_func" > + <param name="vector_op" value="custom" /> + <param name="custom_func" value="vec.sum()+vec.median()" /> + </conditional> + </expand> + <param name="precision" value="2" /> + <param name="out_opts" value="ignore_nas,output_headers_row" /> + <output name="table" value="small.matapp.colcust.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 13: Element, non-zero, custom --> + <expand macro="test_inputs_single" > + <param name="mode" value="element" /> + <conditional name="elem_val"> + <param name="element_op" value="gt" /> + <param name="element_value" value="0" /> + </conditional> + <conditional name="element" > + <param name="mode" value="custom" /> + <!-- valid complex expression for non-zero vals --> + <param name="custom_expr" value="(math.log10(elem)+elem)/elem if (elem < math.inf) else 1.0" /> + </conditional> + </expand> + <output name="table" value="small.element.custom.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 14: umi2transcript test1 --> + <expand macro="umi2trans" > + <param name="input" value="mat1.umi.tsv" /> + <output name="table" value="mat1.trans.tsv" /> + </expand> + </test> + <test expect_num_outputs="1"> + <!-- Test 15: umi2transcript test2 --> + <expand macro="umi2trans" > + <param name="input" value="mat2.umi.tsv" /> + <output name="table" value="mat2.trans.tsv" /> + </expand> + </test> + <test expect_num_outputs="1"> + <!-- Test 16: B-test - mean and sd in custom func --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" + value="table - table.mean(0) / table.std(0)" /> + </conditional> + </expand> + <output name="table" value="small.fulltable.tsv" /> + </test> + <test expect_num_outputs="1"> + <!-- Test 17: Multiple table test --> + <conditional name="singtabop" > + <param name="use_type" value="multiple" /> + <repeat name="tables"> + <param name="input" value="small.tsv" /> + </repeat> + <repeat name="tables"> + <param name="input" value="small.tsv" /> + </repeat> + <repeat name="tables"> + <param name="input" value="small.tsv" /> + </repeat> + <param name="fulltable_custom_expr" value="(3 * table1) + np.log(table3 + 20) - table2" /> </conditional> + <output name="table" value="small.multiple.tsv" /> + </test> + <!-- User tests that failed previously --> + <test expect_num_outputs="1"> + <!-- Test 18 --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" value="table * 2" /> + </conditional> + </expand> + <output name="table" > + <assert_contents> + <has_n_columns n="10" /> + <has_line_matching expression="^gene1\s20\.000000\s0\s12\s-20\.200000\s20\s2\.200000\s0\.000000\s0\s0\.000000$" /> + <has_line_matching expression="gene5\s2\.000000\s0\s0\s-20\.000000\s880\s12\.000000\s0\.000000\s0\s3\.800000" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1"> + <!-- Test 19 --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" value="table == 5" /> + </conditional> + </expand> + <output name="table" > + <assert_contents> + <has_n_columns n="10" /> + <has_line_matching expression="^gene1(\sFalse)+$" /> + <has_line_matching expression="gene5(\sFalse)+$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" expect_failure="true"> + <!-- Test 20 --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" value="for n in table: n = n + 1" /> + </conditional> + </expand> + </test> + <test expect_num_outputs="1" expect_failure="true"> + <!-- Test 21 --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" value="table + table[0,0]" /> + </conditional> + </expand> + </test> + <test expect_num_outputs="1"> + <!-- Test 22: Melt --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="melt" /> + <param name="id_vars" value="cell1,cell3" /> + <param name="value_vars" value="cell5,cell6" /> + </conditional> + </expand> + <param name="out_opts" value="ignore_nas,output_headers_col" /> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^cell1\scell3\svariable\svalue$" /> + <has_line_matching expression="^1\.0+\s0+\scell6\s6\.0+$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1"> + <!-- Test 23: Pivot --> + <expand macro="test_inputs_single" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="pivot" /> + <param name="index" value="cell1" /> + <param name="column" value="cell2" /> + <param name="values" value="cell3,cell7,cell9" /> + </conditional> + </expand> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^\scell3\scell7\scell9$" /> + <has_line_matching expression="^1\.0+\s0\.0+\s0\.0+\s1\.90+$" /> + <has_line_matching expression="^10\.0+\s6\.0+\s0\.0+\s0\.0+$" /> + </assert_contents> + </output> + </test> + <!-- Add Example Text Tests --> + <test expect_num_outputs="1" > + <!-- Test 24: Ex 1 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.1.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="select" /> + <param name="select_cols_wanted" value="1,1,3" /> + <param name="select_rows_wanted" value="1:3,2" /> + <param name="select_keepdupe" value="select_cols_keepdupe,select_rows_keepdupe" /> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^\s+c1\s+c1\s+c3$" /> + <has_line_matching expression="^g2\s+3\s+3\s+9$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 25: Ex 2 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.2.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="filtersumval" /> + <param name="axis" value="1" /> + <conditional name="filtersumval_mode" > + <param name="use" value="operation" /> + <param name="operation" value="sum" /> + <param name="compare_op" value="lt" /> + <param name="against" value="50" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^\s+c1\s+c2\s+c3$" /> + <has_line_matching expression="^g3\s+4\s+8\s+12$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 26: Ex 3_P1 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.3p1.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="element" /> + <conditional name="element" > + <param name="mode" value="custom" /> + <param name="custom_expr" value="elem < 10" /> + </conditional> + <conditional name="elem_val" > + <param name="element_op" value="None" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^g1\s+False\s+False\s+False$" /> + <has_line_matching expression="^g4\s+False\s+True\s+True$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 27: Ex 3_P2 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.3p2.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="matrixapply" /> + <param name="dimension" value="1" /> + <conditional name="matrixapply_func" > + <param name="vector_op" value="sum" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="2" /> + <has_line_matching expression="^g1\s+0$" /> + <has_line_matching expression="^g4\s+2$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 28: Ex 4 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.4.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="element" /> + <conditional name="element" > + <param name="mode" value="custom" /> + <param name="custom_expr" value="(math.log(elem) / elem) if (elem > 5) else 1" /> + </conditional> + <conditional name="elem_val" > + <param name="element_op" value="All" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^g1\s+1\.00\d+\s+0\.149\d+\s+0\.113\d+$" /> + <has_line_matching expression="^g4\s+0\.05\d+\s+1\.000\d+\s+1\.000\d+$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 29: Ex 5 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.5.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="custom" /> + <param name="fulltable_custom_expr" value="table - table.mean(0)/table.std(0)" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^g1\s+9\.\d+\s+17\.\d+\s+28\.\d+$" /> + <has_line_matching expression="^g4\s+80\.\d+\s+7\.\d+\s+8\.\d+$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 30: Ex 6 --> + <conditional name="singtabop" > + <param name="use_type" value="multiple" /> + <repeat name="tables" > + <param name="input" value="examples.6p1.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + </repeat> + <repeat name="tables" > + <param name="input" value="examples.6p2.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + </repeat> + <repeat name="tables" > + <param name="input" value="examples.6p3.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + </repeat> + <param name="fulltable_custom_expr" value="table1 / min(np.max(np.max(table2)), np.max(np.max(table3)))" /> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^g1\s+3\.3\d+\s+6\.6\d+\s+10\.0\d+$" /> + <has_line_matching expression="^g3\s+1\.3\d+\s+2\.6\d+\s+3\.3\d+$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 31: Ex 7 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.7.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user"> + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="melt" /> + <param name="id_vars" value="A" /> + <param name="value_vars" value="B,C" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^0\s+a\s+B\s+B\s*$" /> + <has_line_matching expression="^5\s+c\s+C\s+5\s*$" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1" > + <!-- Test 32: Ex 8 --> + <conditional name="singtabop" > + <param name="use_type" value="single" /> + <param name="input" value="examples.8.tsv" /> + <param name="col_row_names" value="has_col_names,has_row_names" /> + <conditional name="user" > + <param name="mode" value="fulltable" /> + <conditional name="general" > + <param name="use" value="pivot" /> + <param name="index" value="foo" /> + <param name="column" value="bar" /> + <param name="values" value="baz" /> + </conditional> + </conditional> + </conditional> + <output name="table" > + <assert_contents> + <has_n_columns n="4" /> + <has_line_matching expression="^one\s+1\s+2\s+3$" /> + <has_line_matching expression="^two\s+4\s+5\s+6$" /> + </assert_contents> + </output> + </test> + </tests> + <help><![CDATA[ +This tool computes table expressions on the element, row, and column basis. It can sub-select, +duplicate, as well as perform general and custom expressions on rows, columns or elements. + +Only a single operation can be performed on the data. Multiple operations can be performed by +chaining successive runs of this tool. This is to provide a more transparent workflow for complex operations. + + + +Examples +======== + +Example 1: Sub-selecting from a table +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the following table: + + === === === === + . c1 c2 c3 + === === === === + g1 10 20 30 + g2 3 6 9 + g3 4 8 12 + g4 81 6 3 + === === === === + +and we want to duplicate c1 and remove c2. Also select g1 to g3 and add g2 at the end as well. This would result in the output table: + + === === === === + . c1 c1 c3 + === === === === + g1 10 10 30 + g2 3 3 9 + g3 4 4 12 + g2 3 3 9 + === === === === + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Drop, keep or duplicate rows and columns** + + * *List of columns to select* → **1,1,3** + * *List of rows to select* → **1:3,2** + * *Keep duplicate columns* → **Yes** + * *Keep duplicate rows* → **Yes** + +Example 2: Filter for rows with row sums less than 50 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the following table: + + === === === === + . c1 c2 c3 + === === === === + g1 10 20 30 + g2 3 6 9 + g3 4 8 12 + g4 81 6 3 + === === === === + +and we want: + + === === === === + . c1 c2 c3 + === === === === + g2 3 6 9 + g3 4 8 12 + === === === === + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Filter rows or columns by their properties** + + * *Filter* → **Rows** + * *Filter Criterion* → **Result of function applied to columns/rows** + + * *Keep column/row if its observed* → **Sum** + * *is* → **< (Less Than)** + * *this value* → **50** + + +Example 3: Count the number of values per row smaller than a specified value +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the following table: + + === === === === + . c1 c2 c3 + === === === === + g1 10 20 30 + g2 3 6 9 + g3 4 8 12 + g4 81 6 3 + === === === === + +and we want to count how many elements in each row are smaller than 10, i.e., +we want to obtain the following results table: + + === === + . vec + === === + g1 0 + g2 3 + g3 2 + g4 2 + === === + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Manipulate selected table elements** + + * *Operation to perform* → **Custom** + + * *Custom Expression on 'elem'* → **elem < 10** + + * *Operate on elements* → **All** + +**Note:** *There are actually simpler ways to achieve our purpose, but here we are demonstrating the use of a custom expression.* + +After executing, we would then be presented with a table like so: + + === ===== ===== ===== + . c1 c2 c3 + === ===== ===== ===== + g1 False False False + g2 True True True + g3 True True False + g4 False True True + === ===== ===== ===== + +To get to our desired table, we would then process this table with the tool again: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Compute Expression across Rows or Columns** + + * *Calculate* → **Sum** + * *For each* → **Row** + +Executing this will sum all the 'True' values in each row. Note that the values must have no extra whitespace in them for this to work (e.g. 'True ' or ' True' will not be parsed correctly). + + +Example 4: Perform a scaled log-transformation conditionally +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We want to perform a scaled log transformation on all values greater than 5, and set all other values to 1. + +We have the following table: + + === === === === + . c1 c2 c3 + === === === === + g1 0 20 30 + g2 3 0 9 + g3 4 8 0 + g4 81 0 0 + === === === === + +and we want: + + === ========== ========= ========= + . c1 c2 c3 + === ========== ========= ========= + g1 1.00000000 0.1497866 0.1133732 + g2 1.00000000 1.0000000 0.2441361 + g3 1.00000000 0.2599302 1.0000000 + g4 0.05425246 1.0000000 1.0000000 + === ========== ========= ========= + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Manipulate selected table elements** + + * *Operation to perform* → **Custom** + + * *Custom Expression* → :: + + (math.log(elem) / elem) if (elem > 5) else 1 + + * *Operate on elements* → **All** + + +Example 5: Perform a Full table operation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the following table: + + === === === === + . c1 c2 c3 + === === === === + g1 10 20 30 + g2 3 10 9 + g3 4 8 10 + g4 81 10 10 + === === === === + +and we want to subtract from each column the mean of that column divided by the standard deviation of it to yield: + + + === ========= ========= ========= + . c1 c2 c3 + === ========= ========= ========= + g1 9.351737 17.784353 28.550737 + g2 2.351737 7.784353 7.550737 + g3 3.351737 5.784353 8.550737 + g4 80.351737 7.784353 8.550737 + === ========= ========= ========= + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Perform a Full Table Operation** + + * *Operation* → **Custom** + + * *Custom Expression on 'table' along axis (0 or 1)* → :: + + table - table.mean(0)/table.std(0) + + +Example 6: Perform operations on multiple tables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the following three input tables: + +Table 1 + + === === === === + . c1 c2 c3 + === === === === + g1 10 20 30 + g2 3 10 9 + g3 4 8 10 + === === === === + +Table 2 + + === === === + . c1 c2 + === === === + g1 1 2 + g2 3 4 + g3 6 5 + === === === + +Table 3 + + === === === === + . c1 c2 c3 + === === === === + g1 1 2 3 + g2 1 2 3 + === === === === + + +*Note that the dimensions of these tables do not match.* + +Dimensions: + * Table1 [3,3] + * Table2 [3,2] + * Table3 [2,3] + +In order to perform simple operations between Tables, they must be of the same dimensions. + +To add Table2 to Table3 we would have to transpose one of the tables using the in-built `T` method:: + + table2 + table3.T + +or:: + + table2.T + table3 + +We can also perform more general operations using all 3 tables, such as taking the minimum value of +the maximum values of Table2 and Table3, and dividing the Table1 values by it:: + + table1 / min(table2.values.max(), table3.values.max()) + + +To perform these types of operations in Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Multiple Tables** + * *(For each inserted table)* + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Custom Expression* → :: + + <insert your desired function> + +Please note that the last example shown above was chosen to illustrate the +limitations of the tool. Nested attributes like `table2.values.max` are +disallowed in expressions in the tool so the above would have to be replaced +with the harder to read workaround:: + + table1 / min(np.max(np.max(table2)), np.max(np.max(table3))) + +Also note that, currently `min()`, `max()` and `sum()` are the only built-in +Python functions that can be used inside expressions. If you want to use +additional functions, these have to be qualified functions from the `math`, +`np` or `pd` libraries. + + +Example 7: Melt +~~~~~~~~~~~~~~~ + +We have the following table + + === === === === + . A B C + === === === === + 0 a B 1 + 1 b B 3 + 2 c B 5 + === === === === + +and we want: + + === === ======== ===== + . A variable value + === === ======== ===== + 0 a B B + 1 b B B + 2 c B B + 3 a C 1 + 4 b C 3 + 5 c C 5 + === === ======== ===== + + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Perform a Full Table Operation** + + * *Operation* → **Melt** + * *Variable IDs* → "A" + * *Unpivoted IDs* → "B,C" + +This converts the "B" and "C" columns into variables. + + +Example 8: Pivot +~~~~~~~~~~~~~~~~ + +We have the following table + + === === === === === + . foo bar baz zoo + === === === === === + 0 one A 1 x + 1 one B 2 y + 2 one C 3 z + 3 two A 4 q + 4 two B 5 w + 5 two C 6 t + === === === === === + +and we want: + + === === === === + . A B C + === === === === + one 1 2 3 + two 4 5 6 + === === === === + +In Galaxy we would select the following: + + * *Input Single or Multiple Tables* → **Single Table** + * *Column names on first row?* → **Yes** + * *Row names on first column?* → **Yes** + * *Type of table operation* → **Perform a Full Table Operation** + + * *Operation* → **Pivot** + * *Index* → "foo" + * *Column* → "bar" + * *Values* → "baz" + +This splits the matrix using "foo" and "bar" using only the values from "baz". Header values may contain extra information. + +]]></help> + <citations></citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.1.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 10 20 30 +g2 3 6 9 +g3 4 8 12 +g4 81 6 3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.2.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 10 20 30 +g2 3 6 9 +g3 4 8 12 +g4 81 6 3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.3p1.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 10 20 30 +g2 3 6 9 +g3 4 8 12 +g4 81 6 3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.3p2.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 False False False +g2 True True True +g3 True True False +g4 False True True \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.4.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 0 20 30 +g2 3 0 9 +g3 4 8 0 +g4 81 0 0 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.5.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + c1 c2 c3 +g1 10 20 30 +g2 3 10 9 +g3 4 8 10 +g4 81 10 10 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p1.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,4 @@ + c1 c2 c3 +g1 10 20 30 +g2 3 10 9 +g3 4 8 10 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p2.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,4 @@ + c1 c2 +g1 1 2 +g2 3 4 +g3 6 5 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p3.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,3 @@ + c1 c2 c3 +g1 1 2 3 +g2 1 2 3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.7.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,4 @@ + A B C +0 a B 1 +1 b B 3 +2 c B 5 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.8.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,7 @@ + foo bar baz zoo +0 one A 1 x +1 one B 2 y +2 one C 3 z +3 two A 4 q +4 two B 5 w +5 two C 6 t \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat1.trans.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,22 @@ + CTTCGA GAAGAC GAAGGA GAATCC GAATGG GACAAC GACAGA GACGAA GAGCAA GAGGTA GAGTGA GAGTTG GATACG GATCGA GATCTG GATTGC GCAACA GCAATG GCAGAA GCATGA GCATTC +ENSDARG00000087616 -0.000000 1.000122 0 6.004399 -0.000000 0 -0.000000 10.012227 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 0 4.001954 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000036044 5.003054 -0.000000 0 -0.000000 -0.000000 0 -0.000000 31.117905 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000036816 -0.000000 1.000122 0 12.017613 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 5.003054 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000102632 1.000122 -0.000000 0 10.012227 1.000122 0 -0.000000 8.007823 -0.000000 -0.000000 1.000122 -0.000000 1.000122 1.000122 -0.000000 0 1.000122 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000056722 -0.000000 1.000122 0 2.000488 -0.000000 0 -0.000000 17.035376 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 0 2.000488 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000098591 -0.000000 -0.000000 0 9.009902 3.001099 0 1.000122 30.110403 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 0 2.000488 -0.000000 0 1.000122 -0.000000 +ENSDARG00000044212 -0.000000 -0.000000 0 -0.000000 -0.000000 0 -0.000000 33.133653 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 0 3.001099 -0.000000 0 -0.000000 1.000122 +ENSDARG00000010516 2.000488 -0.000000 0 3.001099 2.000488 0 -0.000000 13.020674 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000021143 4.001954 -0.000000 0 14.023980 2.000488 0 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 3.001099 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000042905 1.000122 -0.000000 0 -0.000000 -0.000000 0 -0.000000 22.059294 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000041435 1.000122 -0.000000 0 6.004399 1.000122 0 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000034897 2.000488 -0.000000 0 5.003054 1.000122 0 -0.000000 21.054018 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000040287 2.000488 2.000488 0 1.000122 -0.000000 0 -0.000000 11.014797 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 0 1.000122 1.000122 0 -0.000000 -0.000000 +ENSDARG00000007320 3.001099 -0.000000 0 1.000122 -0.000000 0 -0.000000 26.082870 -0.000000 -0.000000 1.000122 2.000488 -0.000000 1.000122 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000003599 -0.000000 -0.000000 0 2.000488 2.000488 0 -0.000000 27.089382 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000099104 4.001954 -0.000000 0 3.001099 1.000122 0 -0.000000 14.023980 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000071658 -0.000000 1.000122 0 3.001099 -0.000000 0 -0.000000 8.007823 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 0 5.003054 -0.000000 0 -0.000000 1.000122 +ENSDARG00000030408 1.000122 1.000122 0 1.000122 1.000122 0 -0.000000 25.076606 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000039647 -0.000000 -0.000000 0 26.082870 1.000122 0 -0.000000 5.003054 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000043509 -0.000000 -0.000000 0 -0.000000 1.000122 0 1.000122 27.089382 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 0 3.001099 -0.000000 0 -0.000000 -0.000000 +ENSDARG00000017235 1.000122 -0.000000 0 3.001099 1.000122 0 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 0 -0.000000 -0.000000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat1.umi.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,22 @@ + CTTCGA GAAGAC GAAGGA GAATCC GAATGG GACAAC GACAGA GACGAA GAGCAA GAGGTA GAGTGA GAGTTG GATACG GATCGA GATCTG GATTGC GCAACA GCAATG GCAGAA GCATGA GCATTC +ENSDARG00000087616 0 1 0 6 0 0 0 10 1 0 0 0 1 0 0 0 4 0 0 0 0 +ENSDARG00000036044 5 0 0 0 0 0 0 31 0 0 0 0 1 0 0 0 0 0 0 0 0 +ENSDARG00000036816 0 1 0 12 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 +ENSDARG00000102632 1 0 0 10 1 0 0 8 0 0 1 0 1 1 0 0 1 0 0 0 0 +ENSDARG00000056722 0 1 0 2 0 0 0 17 0 0 2 0 1 0 0 0 2 0 0 0 0 +ENSDARG00000098591 0 0 0 9 3 0 1 30 0 0 1 0 0 0 0 0 2 0 0 1 0 +ENSDARG00000044212 0 0 0 0 0 0 0 33 0 0 0 0 0 4 0 0 3 0 0 0 1 +ENSDARG00000010516 2 0 0 3 2 0 0 13 0 0 0 0 1 0 0 0 0 0 0 0 0 +ENSDARG00000021143 4 0 0 14 2 0 0 8 0 0 0 0 0 0 0 0 3 0 0 0 0 +ENSDARG00000042905 1 0 0 0 0 0 0 22 0 0 0 0 0 0 0 0 1 0 0 0 0 +ENSDARG00000041435 1 0 0 6 1 0 0 15 0 0 0 2 0 0 0 0 1 0 0 0 0 +ENSDARG00000034897 2 0 0 5 1 0 0 21 1 0 0 1 0 0 0 0 1 0 0 0 0 +ENSDARG00000040287 2 2 0 1 0 0 0 11 0 0 1 0 0 0 0 0 1 1 0 0 0 +ENSDARG00000007320 3 0 0 1 0 0 0 26 0 0 1 2 0 1 0 0 0 0 0 0 0 +ENSDARG00000003599 0 0 0 2 2 0 0 27 0 0 0 0 0 0 1 0 0 0 0 0 0 +ENSDARG00000099104 4 0 0 3 1 0 0 14 0 1 0 0 0 2 0 0 0 0 0 0 0 +ENSDARG00000071658 0 1 0 3 0 0 0 8 0 0 3 0 0 0 0 0 5 0 0 0 1 +ENSDARG00000030408 1 1 0 1 1 0 0 25 0 0 0 0 0 0 0 0 1 0 0 0 0 +ENSDARG00000039647 0 0 0 26 1 0 0 5 0 0 1 0 0 0 0 0 0 0 0 0 0 +ENSDARG00000043509 0 0 0 0 1 0 1 27 1 0 0 0 0 1 0 0 3 0 0 0 0 +ENSDARG00000017235 1 0 0 3 1 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat2.trans.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,31 @@ + AACACC AACCTC AACGAG AACTGG AAGCAC AAGCCA AAGGTG AAGTGC ACAAGC ACAGAC ACAGGA ACAGTG ACATGG ACCAAC ACCAGA ACCATG ACGGTA ACGTAC ACGTGA ACGTTG ACTCAC ACTCGA ACTCTG ACTTCG AGAACG AGACAG AGACCA AGACTC AGATGC AGCGAA AGCTAG AGCTCA AGCTTC AGGAAG AGGACA AGGATC AGGCTA AGTACC AGTAGG AGTGCA AGTGTC ATACGG ATCACG ATCAGC ATCCAC ATCCGA ATCGCA ATCGTG ATCTCC ATGACC ATGAGG ATGCAG ATGCTC ATGGAC ATGTCG ATTCGC ATTGCG CAATGC CACCAA CACGTA CACTCA CACTTC CAGAAG CAGGAA CATGCA CATGTC CATTGG CCAATC CCACAA CCAGTA CCATAG CCATCA CCGATA CCGTAA CCTACA CCTATG CCTGAA CCTTGA CGAACA CGATGA CGATTG CGCATA CGCTAA CGGTTA CGTAAG CGTCTA CGTTAC CGTTCA CTAACG CTAAGC CTAGAC CTAGGA CTAGTG CTATCC CTCAGA CTCATG CTCGAA CTGCTA CTGTTG CTTCGA GAAGAC GAAGGA GAATCC GAATGG GACAAC GACAGA GACGAA GAGCAA GAGGTA GAGTGA GAGTTG GATACG GATCGA GATCTG GATTGC GCAACA GCAATG GCAGAA GCATGA GCATTC GCCATA GCGTTA GCTAAG GCTCTA GCTTAC GCTTCA GGAATC GGACAA GGATAC GGATCA GGCTTA GGTAAC GGTAGA GGTATG GGTGTA GGTTAG GTAACC GTACAG GTACCA GTACTC GTATCG GTATGC GTCTCA GTGAAG GTGACA GTGATC GTGGAA GTTAGG GTTGAG TAACGG TACAGG TACCAC TACCGA TACGCA TACTCC TAGCTC TAGGAC TAGTGG TATCCG TATCGC TCAACG TCACAG TCATCC TCCGAA TCTAGG TCTTGC TGAACC TGAAGG TGAGGA TGATCG TGCAAC TGCAGA TGGTGA TGGTTG TGTACG TGTAGC TGTCGA TGTCTG TGTTCC TGTTGG TTACGC TTCACC TTCCAG TTCGAC TTCTCG TTGCAC TTGCGA TTGCTG TTGGAG TTGGCA TTGGTC TTGTGC +ENSDARG00000099970 5.003054 1.000122 14.023980 -0.000000 2.000488 2.000488 2.000488 -0.000000 162.168323 3.001099 81.811621 9.009902 1.000122 195.596716 132.107705 69.587787 -0.000000 -0.000000 2.000488 406.522221 136.240904 -0.000000 37.168128 1.000122 5.003054 108.422409 3.001099 49.295449 -0.000000 1.000122 45.249018 13.020674 173.628588 4.001954 5.003054 21.054018 5.003054 1.000122 -0.000000 7.005988 63.489523 2.000488 5.003054 1.000122 -0.000000 3.001099 5.003054 -0.000000 0 2.000488 7.005988 3.001099 -0.000000 -0.000000 601.014180 1.000122 144.519836 -0.000000 6.004399 2.000488 257.954777 2.000488 268.618673 1.000122 -0.000000 4.001954 1.000122 1.000122 2.000488 -0.000000 1.000122 2.000488 3.001099 1.000122 3.001099 -0.000000 1.000122 1.000122 -0.000000 249.443605 12.017613 -0.000000 5.003054 1.000122 1.000122 2.000488 5.003054 2.000488 3.001099 130.042668 1.000122 96.119021 5.003054 71.622561 3.001099 24.070588 2.000488 6.004399 1.000122 55.372602 3.001099 3.001099 366.957653 4.001954 6.004399 2.000488 365.864074 -0.000000 1.000122 16.031332 2.000488 6.004399 4.001954 -0.000000 2.000488 37.168128 1.000122 1.000122 6.004399 3.001099 2.000488 1.000122 6.004399 7.005988 6.004399 3.001099 -0.000000 96.119021 2.000488 1.000122 4.001954 245.194642 1.000122 2.000488 -0.000000 2.000488 -0.000000 5.003054 320.195430 257.954777 -0.000000 4.001954 20.048988 1.000122 325.605548 59.429052 10.012227 5.003054 37.168128 4.001954 -0.000000 2.000488 4.001954 -0.000000 1.000122 -0.000000 341.878911 1.000122 3.001099 -0.000000 2.000488 33.133653 3.001099 146.592186 2.000488 51.320165 2.000488 245.194642 5.003054 0 59.429052 55.372602 69.587787 2.000488 -0.000000 1.000122 31.117905 39.186856 4.001954 -0.000000 -0.000000 80.791574 2.000488 3.001099 38.177367 -0.000000 6.004399 1.000122 2.000488 -0.000000 2.000488 173.628588 +ENSDARG00000104945 -0.000000 3.001099 6.004399 1.000122 -0.000000 2.000488 4.001954 1.000122 9.009902 12.017613 1.000122 1.000122 -0.000000 19.044204 21.054018 29.103148 1.000122 1.000122 1.000122 145.555880 23.064818 -0.000000 29.103148 1.000122 1.000122 2.000488 4.001954 28.096142 -0.000000 2.000488 6.004399 7.005988 31.117905 -0.000000 3.001099 13.020674 1.000122 1.000122 1.000122 14.023980 60.443792 1.000122 1.000122 -0.000000 -0.000000 2.000488 -0.000000 1.000122 0 2.000488 -0.000000 -0.000000 -0.000000 1.000122 26.082870 1.000122 77.732955 -0.000000 -0.000000 -0.000000 55.372602 3.001099 18.039667 1.000122 1.000122 2.000488 2.000488 -0.000000 -0.000000 1.000122 -0.000000 2.000488 2.000488 4.001954 3.001099 -0.000000 1.000122 2.000488 -0.000000 57.400325 3.001099 -0.000000 4.001954 1.000122 1.000122 7.005988 2.000488 1.000122 2.000488 -0.000000 1.000122 2.000488 3.001099 1.000122 5.003054 3.001099 2.000488 2.000488 1.000122 4.001954 3.001099 1.000122 48.283467 1.000122 1.000122 -0.000000 26.082870 5.003054 4.001954 10.012227 -0.000000 1.000122 3.001099 -0.000000 3.001099 15.027533 -0.000000 -0.000000 6.004399 1.000122 1.000122 -0.000000 2.000488 4.001954 2.000488 -0.000000 -0.000000 17.035376 5.003054 3.001099 2.000488 2.000488 3.001099 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 31.117905 66.537520 -0.000000 1.000122 -0.000000 -0.000000 40.196593 19.044204 10.012227 1.000122 24.070588 1.000122 3.001099 -0.000000 1.000122 2.000488 1.000122 -0.000000 3.001099 1.000122 -0.000000 2.000488 4.001954 9.009902 3.001099 14.023980 1.000122 8.007823 2.000488 34.141899 5.003054 0 9.009902 1.000122 6.004399 -0.000000 1.000122 2.000488 17.035376 27.089382 3.001099 -0.000000 1.000122 31.117905 2.000488 1.000122 22.059294 1.000122 2.000488 -0.000000 11.014797 -0.000000 1.000122 51.320165 +ENSDARG00000045639 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 52.332899 25.076606 4.001954 -0.000000 2.000488 -0.000000 117.674264 37.168128 -0.000000 6.004399 -0.000000 1.000122 -0.000000 -0.000000 20.048988 -0.000000 -0.000000 1.000122 2.000488 31.117905 -0.000000 -0.000000 13.020674 1.000122 1.000122 -0.000000 2.000488 5.003054 -0.000000 -0.000000 1.000122 -0.000000 1.000122 1.000122 -0.000000 0 -0.000000 1.000122 -0.000000 -0.000000 2.000488 43.227300 -0.000000 23.064818 -0.000000 -0.000000 -0.000000 92.026090 -0.000000 44.238034 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 1.000122 -0.000000 57.400325 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 6.004399 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 1.000122 2.000488 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 86.915672 -0.000000 -0.000000 -0.000000 27.089382 1.000122 2.000488 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 29.103148 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 3.001099 1.000122 -0.000000 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 35.150393 88.959074 1.000122 -0.000000 -0.000000 2.000488 69.587787 10.012227 4.001954 -0.000000 7.005988 -0.000000 -0.000000 1.000122 3.001099 -0.000000 -0.000000 -0.000000 2.000488 2.000488 -0.000000 -0.000000 -0.000000 25.076606 -0.000000 49.295449 -0.000000 6.004399 1.000122 21.054018 4.001954 0 7.005988 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 6.004399 32.125655 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 21.054018 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 41.206580 +ENSDARG00000070453 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 9.009902 21.054018 -0.000000 -0.000000 -0.000000 -0.000000 49.295449 19.044204 -0.000000 23.064818 -0.000000 -0.000000 -0.000000 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 -0.000000 34.141899 -0.000000 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 7.005988 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 18.039667 -0.000000 1.000122 -0.000000 112.531765 2.000488 -0.000000 -0.000000 1.000122 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 44.238034 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 34.141899 -0.000000 -0.000000 2.000488 9.009902 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 1.000122 1.000122 -0.000000 1.000122 -0.000000 14.023980 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 14.023980 126.947064 -0.000000 -0.000000 1.000122 -0.000000 45.249018 5.003054 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 8.007823 -0.000000 31.117905 1.000122 -0.000000 -0.000000 -0.000000 1.000122 0 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 21.054018 28.096142 -0.000000 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 102.266096 +ENSDARG00000014201 -0.000000 1.000122 10.012227 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 23.064818 7.005988 21.054018 -0.000000 -0.000000 -0.000000 38.177367 38.177367 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 1.000122 1.000122 27.089382 -0.000000 -0.000000 28.096142 -0.000000 1.000122 -0.000000 4.001954 7.005988 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 22.059294 -0.000000 27.089382 -0.000000 -0.000000 -0.000000 21.054018 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 103.291506 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 1.000122 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 56.386338 1.000122 -0.000000 -0.000000 59.429052 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 16.031332 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 41.206580 34.141899 -0.000000 -0.000000 -0.000000 -0.000000 33.133653 8.007823 2.000488 1.000122 1.000122 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 1.000122 14.023980 1.000122 21.054018 -0.000000 6.004399 -0.000000 -0.000000 3.001099 0 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 19.044204 21.054018 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 1.000122 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 58.414563 +ENSDARG00000055455 -0.000000 1.000122 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 4.001954 2.000488 1.000122 18.039667 29.103148 7.005988 1.000122 1.000122 -0.000000 48.283467 12.017613 -0.000000 10.012227 1.000122 -0.000000 38.177367 2.000488 13.020674 -0.000000 -0.000000 3.001099 1.000122 25.076606 -0.000000 -0.000000 9.009902 -0.000000 -0.000000 -0.000000 9.009902 3.001099 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 15.027533 -0.000000 15.027533 1.000122 -0.000000 -0.000000 37.168128 1.000122 17.035376 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 14.023980 1.000122 -0.000000 1.000122 -0.000000 -0.000000 5.003054 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 2.000488 -0.000000 -0.000000 11.014797 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 50.307682 1.000122 -0.000000 1.000122 32.125655 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 1.000122 -0.000000 3.001099 1.000122 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 1.000122 -0.000000 2.000488 37.168128 51.320165 -0.000000 1.000122 -0.000000 1.000122 28.096142 14.023980 4.001954 -0.000000 7.005988 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 1.000122 -0.000000 -0.000000 4.001954 1.000122 18.039667 1.000122 7.005988 1.000122 57.400325 2.000488 0 3.001099 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 11.014797 20.048988 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 1.000122 10.012227 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 38.177367 +ENSDARG00000035715 -0.000000 -0.000000 9.009902 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 5.003054 -0.000000 20.048988 19.044204 11.014797 -0.000000 17.035376 -0.000000 34.141899 28.096142 -0.000000 11.014797 -0.000000 -0.000000 24.070588 1.000122 17.035376 -0.000000 -0.000000 11.014797 3.001099 22.059294 -0.000000 1.000122 9.009902 -0.000000 -0.000000 -0.000000 7.005988 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 22.059294 -0.000000 16.031332 -0.000000 1.000122 -0.000000 24.070588 -0.000000 20.048988 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 24.070588 5.003054 1.000122 1.000122 -0.000000 -0.000000 2.000488 -0.000000 1.000122 1.000122 -0.000000 -0.000000 1.000122 -0.000000 1.000122 1.000122 3.001099 -0.000000 -0.000000 -0.000000 2.000488 1.000122 -0.000000 29.103148 4.001954 -0.000000 1.000122 32.125655 -0.000000 -0.000000 6.004399 1.000122 2.000488 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 12.017613 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 32.125655 37.168128 -0.000000 -0.000000 -0.000000 -0.000000 39.186856 10.012227 3.001099 -0.000000 17.035376 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 6.004399 1.000122 -0.000000 -0.000000 -0.000000 6.004399 -0.000000 20.048988 -0.000000 4.001954 -0.000000 32.125655 1.000122 0 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 19.044204 -0.000000 -0.000000 -0.000000 13.020674 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 39.186856 +ENSDARG00000055216 -0.000000 1.000122 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 1.000122 2.000488 1.000122 -0.000000 13.020674 16.031332 3.001099 1.000122 -0.000000 3.001099 35.150393 28.096142 -0.000000 5.003054 -0.000000 -0.000000 10.012227 -0.000000 18.039667 -0.000000 -0.000000 7.005988 1.000122 16.031332 -0.000000 1.000122 12.017613 -0.000000 -0.000000 -0.000000 4.001954 5.003054 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 -0.000000 55.372602 -0.000000 -0.000000 -0.000000 33.133653 -0.000000 13.020674 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 41.206580 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 41.206580 5.003054 -0.000000 -0.000000 36.159136 -0.000000 2.000488 2.000488 1.000122 -0.000000 1.000122 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 14.023980 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 18.039667 48.283467 -0.000000 -0.000000 -0.000000 -0.000000 38.177367 5.003054 6.004399 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 10.012227 -0.000000 26.082870 -0.000000 5.003054 1.000122 30.110403 -0.000000 0 2.000488 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 8.007823 36.159136 -0.000000 -0.000000 -0.000000 4.001954 1.000122 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 23.064818 +ENSDARG00000037997 -0.000000 -0.000000 4.001954 -0.000000 1.000122 1.000122 -0.000000 -0.000000 1.000122 -0.000000 2.000488 -0.000000 -0.000000 5.003054 6.004399 16.031332 -0.000000 -0.000000 1.000122 28.096142 48.283467 -0.000000 3.001099 -0.000000 -0.000000 6.004399 -0.000000 6.004399 -0.000000 3.001099 1.000122 4.001954 28.096142 -0.000000 -0.000000 30.110403 -0.000000 -0.000000 -0.000000 8.007823 11.014797 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 2.000488 1.000122 -0.000000 -0.000000 11.014797 -0.000000 19.044204 -0.000000 -0.000000 -0.000000 43.227300 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 51.320165 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 1.000122 -0.000000 2.000488 -0.000000 2.000488 -0.000000 -0.000000 12.017613 -0.000000 -0.000000 -0.000000 27.089382 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 5.003054 -0.000000 1.000122 2.000488 1.000122 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 30.110403 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 9.009902 44.238034 1.000122 -0.000000 1.000122 -0.000000 73.658347 1.000122 4.001954 -0.000000 26.082870 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 1.000122 -0.000000 13.020674 1.000122 54.359117 -0.000000 -0.000000 -0.000000 5.003054 3.001099 0 -0.000000 2.000488 1.000122 1.000122 -0.000000 -0.000000 1.000122 40.196593 -0.000000 -0.000000 1.000122 4.001954 -0.000000 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 9.009902 +ENSDARG00000077777 1.000122 3.001099 14.023980 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 6.004399 -0.000000 3.001099 -0.000000 -0.000000 7.005988 3.001099 4.001954 -0.000000 32.125655 1.000122 15.027533 22.059294 -0.000000 20.048988 6.004399 -0.000000 13.020674 2.000488 7.005988 1.000122 1.000122 10.012227 -0.000000 14.023980 1.000122 -0.000000 16.031332 1.000122 -0.000000 -0.000000 4.001954 3.001099 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 19.044204 1.000122 11.014797 -0.000000 -0.000000 -0.000000 20.048988 -0.000000 22.059294 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 1.000122 22.059294 3.001099 -0.000000 -0.000000 -0.000000 1.000122 4.001954 -0.000000 1.000122 3.001099 20.048988 2.000488 -0.000000 4.001954 6.004399 14.023980 9.009902 -0.000000 -0.000000 -0.000000 10.012227 1.000122 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 42.216815 -0.000000 -0.000000 1.000122 -0.000000 2.000488 -0.000000 1.000122 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 17.035376 1.000122 -0.000000 1.000122 11.014797 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 5.003054 26.082870 -0.000000 1.000122 2.000488 -0.000000 14.023980 3.001099 3.001099 -0.000000 19.044204 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 27.089382 1.000122 -0.000000 -0.000000 1.000122 11.014797 1.000122 20.048988 1.000122 3.001099 -0.000000 23.064818 1.000122 0 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 1.000122 21.054018 -0.000000 -0.000000 -0.000000 11.014797 2.000488 -0.000000 18.039667 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 13.020674 +ENSDARG00000008363 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 5.003054 38.177367 11.014797 -0.000000 -0.000000 5.003054 13.020674 3.001099 -0.000000 2.000488 1.000122 22.059294 8.007823 -0.000000 52.332899 1.000122 -0.000000 7.005988 -0.000000 2.000488 -0.000000 -0.000000 8.007823 8.007823 16.031332 -0.000000 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 1.000122 9.009902 -0.000000 10.012227 -0.000000 -0.000000 1.000122 1.000122 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 19.044204 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 5.003054 2.000488 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 19.044204 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 16.031332 2.000488 9.009902 4.001954 3.001099 -0.000000 -0.000000 1.000122 2.000488 6.004399 -0.000000 8.007823 1.000122 -0.000000 1.000122 67.554024 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 1.000122 1.000122 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 22.059294 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 5.003054 10.012227 -0.000000 -0.000000 -0.000000 2.000488 3.001099 10.012227 1.000122 -0.000000 -0.000000 8.007823 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 1.000122 1.000122 -0.000000 5.003054 25.076606 8.007823 44.238034 0 4.001954 3.001099 21.054018 -0.000000 -0.000000 -0.000000 3.001099 10.012227 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 +ENSDARG00000037870 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 18.039667 1.000122 9.009902 -0.000000 -0.000000 10.012227 9.009902 6.004399 -0.000000 4.001954 -0.000000 21.054018 15.027533 -0.000000 3.001099 7.005988 -0.000000 25.076606 1.000122 20.048988 -0.000000 -0.000000 1.000122 -0.000000 10.012227 -0.000000 -0.000000 11.014797 1.000122 -0.000000 -0.000000 2.000488 5.003054 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 14.023980 -0.000000 21.054018 -0.000000 3.001099 -0.000000 21.054018 -0.000000 24.070588 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 27.089382 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 48.283467 -0.000000 -0.000000 2.000488 1.000122 6.004399 -0.000000 1.000122 -0.000000 1.000122 22.059294 -0.000000 1.000122 14.023980 2.000488 -0.000000 -0.000000 45.249018 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 12.017613 1.000122 -0.000000 -0.000000 22.059294 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 9.009902 8.007823 -0.000000 -0.000000 1.000122 1.000122 22.059294 3.001099 3.001099 -0.000000 10.012227 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 14.023980 -0.000000 1.000122 -0.000000 -0.000000 8.007823 1.000122 6.004399 -0.000000 2.000488 1.000122 6.004399 -0.000000 0 2.000488 3.001099 7.005988 -0.000000 1.000122 -0.000000 5.003054 6.004399 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 20.048988 +ENSDARG00000051875 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 8.007823 11.014797 7.005988 -0.000000 -0.000000 -0.000000 59.429052 25.076606 -0.000000 5.003054 -0.000000 1.000122 -0.000000 -0.000000 13.020674 -0.000000 1.000122 -0.000000 1.000122 19.044204 1.000122 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 11.014797 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 19.044204 1.000122 47.271734 -0.000000 -0.000000 1.000122 38.177367 2.000488 2.000488 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 1.000122 45.249018 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 5.003054 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 32.125655 -0.000000 -0.000000 1.000122 38.177367 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 24.070588 28.096142 1.000122 -0.000000 -0.000000 -0.000000 23.064818 9.009902 4.001954 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 14.023980 -0.000000 9.009902 1.000122 -0.000000 -0.000000 0 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 3.001099 18.039667 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 3.001099 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 2.000488 37.168128 +ENSDARG00000037746 1.000122 -0.000000 2.000488 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 4.001954 -0.000000 1.000122 2.000488 5.003054 5.003054 -0.000000 4.001954 1.000122 14.023980 46.260251 -0.000000 2.000488 11.014797 -0.000000 10.012227 -0.000000 8.007823 -0.000000 -0.000000 1.000122 1.000122 11.014797 -0.000000 -0.000000 29.103148 -0.000000 1.000122 -0.000000 5.003054 9.009902 -0.000000 2.000488 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 2.000488 -0.000000 1.000122 3.001099 -0.000000 9.009902 -0.000000 -0.000000 -0.000000 16.031332 -0.000000 6.004399 -0.000000 1.000122 1.000122 -0.000000 3.001099 -0.000000 -0.000000 2.000488 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 50.307682 3.001099 -0.000000 -0.000000 1.000122 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 17.035376 -0.000000 -0.000000 1.000122 2.000488 -0.000000 1.000122 -0.000000 -0.000000 3.001099 7.005988 -0.000000 1.000122 8.007823 2.000488 -0.000000 1.000122 49.295449 -0.000000 -0.000000 2.000488 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 24.070588 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 3.001099 10.012227 -0.000000 1.000122 4.001954 1.000122 27.089382 1.000122 4.001954 -0.000000 4.001954 -0.000000 1.000122 1.000122 1.000122 -0.000000 -0.000000 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 6.004399 1.000122 15.027533 -0.000000 3.001099 -0.000000 6.004399 2.000488 0 -0.000000 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 5.003054 23.064818 1.000122 2.000488 -0.000000 2.000488 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 2.000488 3.001099 -0.000000 1.000122 42.216815 +ENSDARG00000020850 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 46.260251 -0.000000 1.000122 -0.000000 -0.000000 3.001099 3.001099 4.001954 -0.000000 14.023980 3.001099 16.031332 30.110403 -0.000000 6.004399 2.000488 -0.000000 22.059294 4.001954 2.000488 -0.000000 -0.000000 2.000488 -0.000000 4.001954 -0.000000 -0.000000 8.007823 1.000122 -0.000000 -0.000000 4.001954 3.001099 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 2.000488 -0.000000 5.003054 -0.000000 2.000488 -0.000000 8.007823 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 24.070588 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 5.003054 1.000122 -0.000000 1.000122 1.000122 3.001099 9.009902 -0.000000 -0.000000 -0.000000 13.020674 1.000122 -0.000000 6.004399 3.001099 -0.000000 -0.000000 50.307682 2.000488 -0.000000 3.001099 2.000488 1.000122 1.000122 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 14.023980 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 7.005988 13.020674 -0.000000 -0.000000 6.004399 -0.000000 18.039667 2.000488 11.014797 -0.000000 4.001954 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 80.791574 -0.000000 1.000122 -0.000000 1.000122 5.003054 -0.000000 10.012227 -0.000000 3.001099 1.000122 2.000488 -0.000000 0 2.000488 10.012227 4.001954 -0.000000 -0.000000 -0.000000 3.001099 10.012227 1.000122 -0.000000 -0.000000 3.001099 3.001099 -0.000000 13.020674 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 13.020674 +ENSDARG00000018259 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 3.001099 11.014797 -0.000000 1.000122 9.009902 11.014797 2.000488 -0.000000 -0.000000 -0.000000 34.141899 18.039667 -0.000000 11.014797 -0.000000 -0.000000 7.005988 1.000122 15.027533 1.000122 -0.000000 3.001099 -0.000000 26.082870 -0.000000 -0.000000 4.001954 1.000122 -0.000000 -0.000000 3.001099 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 34.141899 3.001099 33.133653 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 23.064818 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 31.117905 1.000122 -0.000000 -0.000000 21.054018 2.000488 -0.000000 2.000488 -0.000000 1.000122 1.000122 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 2.000488 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 14.023980 25.076606 -0.000000 -0.000000 1.000122 -0.000000 23.064818 8.007823 1.000122 -0.000000 7.005988 2.000488 1.000122 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 5.003054 1.000122 12.017613 -0.000000 4.001954 1.000122 24.070588 2.000488 0 3.001099 1.000122 5.003054 -0.000000 -0.000000 -0.000000 7.005988 16.031332 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 26.082870 +ENSDARG00000039914 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 2.000488 -0.000000 -0.000000 8.007823 12.017613 6.004399 -0.000000 1.000122 1.000122 33.133653 3.001099 1.000122 6.004399 -0.000000 -0.000000 -0.000000 2.000488 11.014797 -0.000000 -0.000000 10.012227 -0.000000 8.007823 -0.000000 -0.000000 6.004399 3.001099 1.000122 -0.000000 1.000122 11.014797 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 15.027533 1.000122 28.096142 -0.000000 -0.000000 -0.000000 21.054018 1.000122 46.260251 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 1.000122 2.000488 2.000488 5.003054 3.001099 -0.000000 2.000488 9.009902 1.000122 1.000122 -0.000000 1.000122 -0.000000 -0.000000 22.059294 2.000488 -0.000000 -0.000000 5.003054 -0.000000 1.000122 10.012227 -0.000000 1.000122 2.000488 -0.000000 1.000122 5.003054 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 2.000488 1.000122 2.000488 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 17.035376 58.414563 -0.000000 -0.000000 -0.000000 1.000122 14.023980 12.017613 1.000122 -0.000000 12.017613 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 8.007823 1.000122 4.001954 -0.000000 15.027533 1.000122 0 2.000488 -0.000000 5.003054 1.000122 -0.000000 -0.000000 3.001099 14.023980 -0.000000 -0.000000 -0.000000 6.004399 -0.000000 1.000122 9.009902 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 18.039667 +ENSDARG00000068992 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 28.096142 -0.000000 -0.000000 2.000488 1.000122 8.007823 7.005988 3.001099 -0.000000 1.000122 1.000122 16.031332 7.005988 -0.000000 5.003054 1.000122 -0.000000 20.048988 -0.000000 4.001954 -0.000000 -0.000000 5.003054 2.000488 10.012227 -0.000000 -0.000000 10.012227 -0.000000 1.000122 -0.000000 1.000122 3.001099 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 10.012227 -0.000000 1.000122 -0.000000 15.027533 -0.000000 15.027533 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 24.070588 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 11.014797 1.000122 3.001099 1.000122 1.000122 2.000488 1.000122 -0.000000 -0.000000 1.000122 3.001099 2.000488 -0.000000 9.009902 4.001954 -0.000000 1.000122 33.133653 -0.000000 1.000122 -0.000000 1.000122 -0.000000 3.001099 1.000122 1.000122 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 10.012227 1.000122 -0.000000 -0.000000 10.012227 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 6.004399 12.017613 -0.000000 -0.000000 1.000122 1.000122 14.023980 10.012227 2.000488 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 78.752241 -0.000000 -0.000000 1.000122 -0.000000 7.005988 -0.000000 16.031332 -0.000000 3.001099 1.000122 4.001954 -0.000000 0 2.000488 7.005988 7.005988 -0.000000 -0.000000 -0.000000 6.004399 4.001954 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 18.039667 +ENSDARG00000017673 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 8.007823 -0.000000 -0.000000 6.004399 4.001954 6.004399 -0.000000 -0.000000 -0.000000 34.141899 37.168128 -0.000000 6.004399 -0.000000 -0.000000 29.103148 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 17.035376 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 4.001954 5.003054 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 21.054018 1.000122 9.009902 -0.000000 -0.000000 -0.000000 20.048988 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 1.000122 1.000122 -0.000000 -0.000000 1.000122 -0.000000 21.054018 1.000122 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 1.000122 1.000122 -0.000000 -0.000000 13.020674 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 17.035376 -0.000000 -0.000000 -0.000000 39.186856 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 19.044204 1.000122 -0.000000 -0.000000 3.001099 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 15.027533 17.035376 -0.000000 -0.000000 -0.000000 1.000122 31.117905 4.001954 3.001099 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 29.103148 -0.000000 1.000122 -0.000000 13.020674 2.000488 0 2.000488 -0.000000 1.000122 1.000122 1.000122 -0.000000 7.005988 16.031332 -0.000000 -0.000000 -0.000000 2.000488 1.000122 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 30.110403 +ENSDARG00000039034 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 8.007823 1.000122 -0.000000 -0.000000 -0.000000 12.017613 4.001954 9.009902 -0.000000 -0.000000 -0.000000 15.027533 11.014797 -0.000000 9.009902 -0.000000 -0.000000 10.012227 2.000488 5.003054 -0.000000 -0.000000 1.000122 -0.000000 23.064818 -0.000000 1.000122 8.007823 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 0 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 16.031332 -0.000000 20.048988 -0.000000 -0.000000 -0.000000 23.064818 1.000122 8.007823 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 33.133653 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 1.000122 -0.000000 2.000488 1.000122 -0.000000 -0.000000 3.001099 1.000122 2.000488 1.000122 -0.000000 -0.000000 3.001099 -0.000000 1.000122 34.141899 2.000488 -0.000000 -0.000000 13.020674 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 1.000122 1.000122 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 1.000122 -0.000000 28.096142 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 18.039667 27.089382 -0.000000 -0.000000 -0.000000 -0.000000 25.076606 4.001954 -0.000000 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 22.059294 -0.000000 2.000488 -0.000000 5.003054 -0.000000 0 2.000488 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 41.206580 +ENSDARG00000001889 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 17.035376 2.000488 -0.000000 -0.000000 -0.000000 30.110403 30.110403 -0.000000 2.000488 -0.000000 -0.000000 14.023980 -0.000000 6.004399 -0.000000 -0.000000 1.000122 -0.000000 12.017613 -0.000000 -0.000000 14.023980 -0.000000 -0.000000 -0.000000 1.000122 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 16.031332 -0.000000 31.117905 -0.000000 -0.000000 -0.000000 23.064818 2.000488 9.009902 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 37.168128 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 17.035376 3.001099 -0.000000 -0.000000 21.054018 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 19.044204 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 6.004399 37.168128 -0.000000 -0.000000 -0.000000 -0.000000 36.159136 2.000488 4.001954 1.000122 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 16.031332 -0.000000 19.044204 -0.000000 2.000488 -0.000000 12.017613 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 28.096142 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 15.027533 +ENSDARG00000036577 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 10.012227 16.031332 4.001954 -0.000000 2.000488 1.000122 45.249018 8.007823 -0.000000 9.009902 -0.000000 -0.000000 2.000488 -0.000000 6.004399 -0.000000 -0.000000 1.000122 2.000488 15.027533 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 8.007823 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 18.039667 -0.000000 20.048988 -0.000000 -0.000000 -0.000000 29.103148 2.000488 15.027533 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 1.000122 1.000122 -0.000000 -0.000000 10.012227 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 34.141899 4.001954 -0.000000 -0.000000 10.012227 -0.000000 -0.000000 4.001954 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 12.017613 27.089382 -0.000000 -0.000000 -0.000000 -0.000000 20.048988 4.001954 2.000488 -0.000000 9.009902 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 3.001099 2.000488 -0.000000 -0.000000 2.000488 9.009902 -0.000000 14.023980 -0.000000 4.001954 -0.000000 23.064818 1.000122 0 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 5.003054 6.004399 -0.000000 -0.000000 -0.000000 13.020674 1.000122 -0.000000 3.001099 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 26.082870 +ENSDARG00000075542 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 2.000488 2.000488 -0.000000 -0.000000 1.000122 11.014797 3.001099 -0.000000 -0.000000 -0.000000 18.039667 12.017613 -0.000000 7.005988 1.000122 -0.000000 6.004399 -0.000000 6.004399 -0.000000 1.000122 1.000122 -0.000000 25.076606 1.000122 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 -0.000000 3.001099 -0.000000 -0.000000 1.000122 31.117905 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 109.449362 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 2.000488 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 13.020674 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 6.004399 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 1.000122 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 5.003054 -0.000000 1.000122 -0.000000 -0.000000 6.004399 2.000488 1.000122 -0.000000 9.009902 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 1.000122 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 9.009902 -0.000000 5.003054 -0.000000 6.004399 4.001954 0 1.000122 4.001954 -0.000000 2.000488 -0.000000 -0.000000 7.005988 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 113.559749 +ENSDARG00000029150 -0.000000 1.000122 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 20.048988 -0.000000 2.000488 -0.000000 -0.000000 4.001954 2.000488 4.001954 -0.000000 6.004399 1.000122 14.023980 15.027533 -0.000000 4.001954 3.001099 -0.000000 31.117905 3.001099 5.003054 -0.000000 1.000122 1.000122 1.000122 11.014797 -0.000000 -0.000000 6.004399 1.000122 -0.000000 -0.000000 4.001954 6.004399 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 0 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 13.020674 -0.000000 19.044204 -0.000000 -0.000000 -0.000000 14.023980 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 22.059294 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 5.003054 2.000488 -0.000000 2.000488 -0.000000 1.000122 6.004399 1.000122 -0.000000 1.000122 3.001099 -0.000000 1.000122 11.014797 -0.000000 -0.000000 -0.000000 19.044204 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 18.039667 2.000488 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 46.260251 1.000122 -0.000000 -0.000000 -0.000000 10.012227 6.004399 5.003054 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 18.039667 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 18.039667 -0.000000 -0.000000 -0.000000 5.003054 2.000488 0 1.000122 3.001099 4.001954 -0.000000 -0.000000 -0.000000 1.000122 12.017613 -0.000000 1.000122 -0.000000 5.003054 1.000122 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 16.031332 +ENSDARG00000016494 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 20.048988 -0.000000 -0.000000 -0.000000 -0.000000 22.059294 3.001099 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 19.044204 -0.000000 -0.000000 1.000122 -0.000000 20.048988 -0.000000 1.000122 6.004399 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 12.017613 1.000122 5.003054 -0.000000 -0.000000 1.000122 50.307682 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 10.012227 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 8.007823 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 8.007823 136.240904 -0.000000 -0.000000 -0.000000 -0.000000 35.150393 5.003054 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 2.000488 2.000488 -0.000000 1.000122 -0.000000 -0.000000 1.000122 0 2.000488 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 3.001099 16.031332 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 26.082870 +ENSDARG00000021864 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 47.271734 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 2.000488 7.005988 -0.000000 2.000488 3.001099 13.020674 11.014797 -0.000000 -0.000000 3.001099 2.000488 18.039667 -0.000000 2.000488 -0.000000 -0.000000 1.000122 1.000122 6.004399 -0.000000 -0.000000 19.044204 -0.000000 1.000122 -0.000000 5.003054 3.001099 -0.000000 8.007823 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 8.007823 1.000122 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 2.000488 1.000122 3.001099 -0.000000 1.000122 8.007823 -0.000000 -0.000000 -0.000000 5.003054 1.000122 -0.000000 5.003054 1.000122 -0.000000 -0.000000 48.283467 -0.000000 1.000122 -0.000000 1.000122 1.000122 4.001954 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 5.003054 7.005988 -0.000000 -0.000000 8.007823 -0.000000 10.012227 1.000122 11.014797 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 39.186856 1.000122 -0.000000 -0.000000 -0.000000 4.001954 1.000122 10.012227 -0.000000 -0.000000 -0.000000 3.001099 1.000122 0 2.000488 23.064818 7.005988 -0.000000 -0.000000 -0.000000 4.001954 4.001954 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 12.017613 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 6.004399 +ENSDARG00000103057 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 16.031332 4.001954 -0.000000 -0.000000 -0.000000 22.059294 12.017613 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 2.000488 3.001099 -0.000000 1.000122 -0.000000 -0.000000 20.048988 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 22.059294 -0.000000 12.017613 -0.000000 -0.000000 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 33.133653 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 1.000122 1.000122 -0.000000 3.001099 1.000122 -0.000000 1.000122 -0.000000 -0.000000 1.000122 26.082870 1.000122 -0.000000 -0.000000 21.054018 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 13.020674 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 13.020674 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 43.227300 2.000488 2.000488 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 14.023980 -0.000000 6.004399 -0.000000 24.070588 4.001954 0 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 21.054018 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 9.009902 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 27.089382 +ENSDARG00000051783 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 1.000122 -0.000000 46.260251 -0.000000 3.001099 -0.000000 -0.000000 7.005988 9.009902 6.004399 -0.000000 1.000122 3.001099 8.007823 9.009902 -0.000000 1.000122 1.000122 -0.000000 29.103148 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 13.020674 -0.000000 -0.000000 -0.000000 1.000122 4.001954 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 1.000122 -0.000000 3.001099 -0.000000 -0.000000 8.007823 -0.000000 12.017613 -0.000000 3.001099 -0.000000 3.001099 -0.000000 9.009902 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 1.000122 19.044204 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 -0.000000 1.000122 -0.000000 2.000488 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 5.003054 4.001954 -0.000000 -0.000000 35.150393 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 1.000122 -0.000000 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 9.009902 -0.000000 -0.000000 3.001099 -0.000000 1.000122 3.001099 7.005988 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 43.227300 -0.000000 1.000122 -0.000000 -0.000000 3.001099 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 0 3.001099 10.012227 5.003054 -0.000000 -0.000000 -0.000000 1.000122 5.003054 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 8.007823 +ENSDARG00000009212 -0.000000 2.000488 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 50.307682 -0.000000 1.000122 -0.000000 -0.000000 3.001099 4.001954 4.001954 -0.000000 3.001099 -0.000000 21.054018 10.012227 -0.000000 4.001954 1.000122 1.000122 29.103148 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 1.000122 4.001954 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 2.000488 8.007823 -0.000000 3.001099 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 0 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 2.000488 -0.000000 16.031332 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 8.007823 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 12.017613 3.001099 -0.000000 -0.000000 -0.000000 -0.000000 3.001099 1.000122 -0.000000 -0.000000 1.000122 -0.000000 1.000122 3.001099 2.000488 -0.000000 5.003054 -0.000000 -0.000000 1.000122 2.000488 -0.000000 -0.000000 7.005988 -0.000000 -0.000000 -0.000000 18.039667 -0.000000 -0.000000 1.000122 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 4.001954 10.012227 -0.000000 1.000122 4.001954 -0.000000 10.012227 4.001954 11.014797 -0.000000 6.004399 -0.000000 -0.000000 1.000122 1.000122 -0.000000 -0.000000 -0.000000 24.070588 1.000122 -0.000000 -0.000000 1.000122 6.004399 1.000122 9.009902 -0.000000 2.000488 -0.000000 9.009902 1.000122 0 1.000122 7.005988 2.000488 -0.000000 -0.000000 -0.000000 4.001954 3.001099 3.001099 -0.000000 -0.000000 2.000488 2.000488 -0.000000 5.003054 -0.000000 1.000122 -0.000000 1.000122 1.000122 -0.000000 10.012227 +ENSDARG00000021124 -0.000000 1.000122 9.009902 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 9.009902 -0.000000 1.000122 -0.000000 -0.000000 7.005988 5.003054 7.005988 -0.000000 3.001099 -0.000000 15.027533 38.177367 -0.000000 4.001954 1.000122 -0.000000 15.027533 -0.000000 4.001954 -0.000000 -0.000000 -0.000000 -0.000000 6.004399 -0.000000 -0.000000 11.014797 -0.000000 -0.000000 -0.000000 3.001099 6.004399 -0.000000 2.000488 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0 -0.000000 -0.000000 1.000122 -0.000000 1.000122 9.009902 1.000122 10.012227 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 10.012227 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 21.054018 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.001954 1.000122 -0.000000 1.000122 -0.000000 2.000488 3.001099 -0.000000 1.000122 -0.000000 3.001099 -0.000000 -0.000000 28.096142 2.000488 -0.000000 -0.000000 25.076606 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 11.014797 1.000122 -0.000000 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 11.014797 21.054018 -0.000000 -0.000000 1.000122 -0.000000 10.012227 2.000488 2.000488 -0.000000 5.003054 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 13.020674 -0.000000 -0.000000 -0.000000 -0.000000 9.009902 -0.000000 5.003054 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 0 -0.000000 -0.000000 -0.000000 -0.000000 1.000122 -0.000000 1.000122 10.012227 -0.000000 -0.000000 -0.000000 5.003054 -0.000000 1.000122 4.001954 -0.000000 1.000122 -0.000000 -0.000000 -0.000000 -0.000000 17.035376
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat2.umi.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,31 @@ + AACACC AACCTC AACGAG AACTGG AAGCAC AAGCCA AAGGTG AAGTGC ACAAGC ACAGAC ACAGGA ACAGTG ACATGG ACCAAC ACCAGA ACCATG ACGGTA ACGTAC ACGTGA ACGTTG ACTCAC ACTCGA ACTCTG ACTTCG AGAACG AGACAG AGACCA AGACTC AGATGC AGCGAA AGCTAG AGCTCA AGCTTC AGGAAG AGGACA AGGATC AGGCTA AGTACC AGTAGG AGTGCA AGTGTC ATACGG ATCACG ATCAGC ATCCAC ATCCGA ATCGCA ATCGTG ATCTCC ATGACC ATGAGG ATGCAG ATGCTC ATGGAC ATGTCG ATTCGC ATTGCG CAATGC CACCAA CACGTA CACTCA CACTTC CAGAAG CAGGAA CATGCA CATGTC CATTGG CCAATC CCACAA CCAGTA CCATAG CCATCA CCGATA CCGTAA CCTACA CCTATG CCTGAA CCTTGA CGAACA CGATGA CGATTG CGCATA CGCTAA CGGTTA CGTAAG CGTCTA CGTTAC CGTTCA CTAACG CTAAGC CTAGAC CTAGGA CTAGTG CTATCC CTCAGA CTCATG CTCGAA CTGCTA CTGTTG CTTCGA GAAGAC GAAGGA GAATCC GAATGG GACAAC GACAGA GACGAA GAGCAA GAGGTA GAGTGA GAGTTG GATACG GATCGA GATCTG GATTGC GCAACA GCAATG GCAGAA GCATGA GCATTC GCCATA GCGTTA GCTAAG GCTCTA GCTTAC GCTTCA GGAATC GGACAA GGATAC GGATCA GGCTTA GGTAAC GGTAGA GGTATG GGTGTA GGTTAG GTAACC GTACAG GTACCA GTACTC GTATCG GTATGC GTCTCA GTGAAG GTGACA GTGATC GTGGAA GTTAGG GTTGAG TAACGG TACAGG TACCAC TACCGA TACGCA TACTCC TAGCTC TAGGAC TAGTGG TATCCG TATCGC TCAACG TCACAG TCATCC TCCGAA TCTAGG TCTTGC TGAACC TGAAGG TGAGGA TGATCG TGCAAC TGCAGA TGGTGA TGGTTG TGTACG TGTAGC TGTCGA TGTCTG TGTTCC TGTTGG TTACGC TTCACC TTCCAG TTCGAC TTCTCG TTGCAC TTGCGA TTGCTG TTGGAG TTGGCA TTGGTC TTGTGC +ENSDARG00000099970 5 1 14 0 2 2 2 0 159 3 81 9 1 191 130 69 0 0 2 387 134 0 37 1 5 107 3 49 0 1 45 13 170 4 5 21 5 1 0 7 63 2 5 1 0 3 5 0 0 2 7 3 0 0 559 1 142 0 6 2 250 2 260 1 0 4 1 1 2 0 1 2 3 1 3 0 1 1 0 242 12 0 5 1 1 2 5 2 3 128 1 95 5 71 3 24 2 6 1 55 3 3 351 4 6 2 350 0 1 16 2 6 4 0 2 37 1 1 6 3 2 1 6 7 6 3 0 95 2 1 4 238 1 2 0 2 0 5 308 250 0 4 20 1 313 59 10 5 37 4 0 2 4 0 1 0 328 1 3 0 2 33 3 144 2 51 2 238 5 0 59 55 69 2 0 1 31 39 4 0 0 80 2 3 38 0 6 1 2 0 2 170 +ENSDARG00000104945 0 3 6 1 0 2 4 1 9 12 1 1 0 19 21 29 1 1 1 143 23 0 29 1 1 2 4 28 0 2 6 7 31 0 3 13 1 1 1 14 60 1 1 0 0 2 0 1 0 2 0 0 0 1 26 1 77 0 0 0 55 3 18 1 1 2 2 0 0 1 0 2 2 4 3 0 1 2 0 57 3 0 4 1 1 7 2 1 2 0 1 2 3 1 5 3 2 2 1 4 3 1 48 1 1 0 26 5 4 10 0 1 3 0 3 15 0 0 6 1 1 0 2 4 2 0 0 17 5 3 2 2 3 0 0 0 1 0 31 66 0 1 0 0 40 19 10 1 24 1 3 0 1 2 1 0 3 1 0 2 4 9 3 14 1 8 2 34 5 0 9 1 6 0 1 2 17 27 3 0 1 31 2 1 22 1 2 0 11 0 1 51 +ENSDARG00000045639 0 2 0 0 0 1 0 0 1 0 1 0 0 52 25 4 0 2 0 116 37 0 6 0 1 0 0 20 0 0 1 2 31 0 0 13 1 1 0 2 5 0 0 1 0 1 1 0 0 0 1 0 0 2 43 0 23 0 0 0 91 0 44 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 57 4 0 0 0 0 6 1 0 0 0 1 0 1 1 2 1 0 1 0 0 0 0 86 0 0 0 27 1 2 3 0 0 0 0 0 29 0 0 0 0 0 0 1 3 1 0 0 15 0 0 0 3 0 0 0 0 0 1 35 88 1 0 0 2 69 10 4 0 7 0 0 1 3 0 0 0 2 2 0 0 0 25 0 49 0 6 1 21 4 0 7 0 0 0 1 0 6 32 0 0 0 7 0 0 21 0 0 0 2 0 0 41 +ENSDARG00000070453 1 0 1 0 0 0 1 0 1 0 0 1 0 9 21 0 0 0 0 49 19 0 23 0 0 0 0 16 0 0 0 0 34 0 0 16 0 0 0 7 7 0 0 0 0 0 0 1 0 0 0 0 0 0 7 0 18 0 1 0 111 2 0 0 1 0 2 0 0 0 1 0 0 0 0 0 1 0 0 44 1 0 0 0 0 1 0 0 2 0 0 0 0 1 2 0 0 0 0 0 0 0 34 0 0 2 9 0 2 0 0 0 1 0 0 6 0 0 1 1 0 0 1 1 0 1 0 14 0 0 0 1 0 0 0 0 1 0 14 125 0 0 1 0 45 5 0 0 1 0 0 0 0 2 0 0 0 1 0 0 1 8 0 31 1 0 0 0 1 0 11 0 0 0 0 0 21 28 0 0 0 11 0 0 7 0 0 0 0 0 0 101 +ENSDARG00000014201 0 1 10 0 0 0 0 0 3 0 0 0 0 23 7 21 0 0 0 38 38 0 4 0 0 0 0 11 0 0 1 1 27 0 0 28 0 1 0 4 7 1 0 0 0 0 0 0 0 0 0 0 0 0 22 0 27 0 0 0 21 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 102 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 56 1 0 0 59 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 16 1 0 0 0 1 0 0 0 0 0 41 34 0 0 0 0 33 8 2 1 1 0 2 0 0 0 0 0 0 1 1 0 1 14 1 21 0 6 0 0 3 0 1 0 1 0 0 0 19 21 0 0 0 9 0 1 8 0 0 0 0 0 0 58 +ENSDARG00000055455 0 1 3 0 0 0 0 0 1 0 4 2 1 18 29 7 1 1 0 48 12 0 10 1 0 38 2 13 0 0 3 1 25 0 0 9 0 0 0 9 3 0 2 0 0 0 0 0 0 0 0 1 0 0 15 0 15 1 0 0 37 1 17 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 14 1 0 1 0 0 5 1 0 0 0 0 5 2 0 0 11 1 0 0 0 1 0 50 1 0 1 32 0 0 5 0 0 0 0 0 9 0 1 0 0 0 0 0 1 1 1 0 3 1 0 0 1 1 0 0 1 0 2 37 51 0 1 0 1 28 14 4 0 7 1 0 0 0 0 0 0 1 2 1 0 0 4 1 18 1 7 1 57 2 0 3 0 4 0 0 0 11 20 0 0 0 4 0 1 10 0 1 0 0 0 0 38 +ENSDARG00000035715 0 0 9 0 0 0 0 0 1 0 1 5 0 20 19 11 0 17 0 34 28 0 11 0 0 24 1 17 0 0 11 3 22 0 1 9 0 0 0 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 22 0 16 0 1 0 24 0 20 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 24 5 1 1 0 0 2 0 1 1 0 0 1 0 1 1 3 0 0 0 2 1 0 29 4 0 1 32 0 0 6 1 2 0 0 0 9 0 0 1 0 0 0 0 0 0 0 0 12 1 0 0 0 0 0 0 0 0 0 32 37 0 0 0 0 39 10 3 0 17 0 1 0 0 0 0 1 6 1 0 0 0 6 0 20 0 4 0 32 1 0 2 0 0 0 0 0 9 19 0 0 0 13 0 0 2 0 0 0 1 0 0 39 +ENSDARG00000055216 0 1 6 0 0 0 0 0 2 1 2 1 0 13 16 3 1 0 3 35 28 0 5 0 0 10 0 18 0 0 7 1 16 0 1 12 0 0 0 4 5 0 0 0 1 0 0 0 0 1 0 0 0 0 11 0 55 0 0 0 33 0 13 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 41 4 0 0 0 0 4 0 0 0 0 0 4 1 0 0 0 0 0 0 1 0 1 41 5 0 0 36 0 2 2 1 0 1 0 0 7 0 0 1 0 1 0 0 0 0 0 0 14 1 1 0 0 0 0 0 0 0 0 18 48 0 0 0 0 38 5 6 0 15 0 0 0 0 0 0 0 1 2 0 0 0 10 0 26 0 5 1 30 0 0 2 0 1 0 0 0 8 36 0 0 0 4 1 0 16 0 0 0 0 0 0 23 +ENSDARG00000037997 0 0 4 0 1 1 0 0 1 0 2 0 0 5 6 16 0 0 1 28 48 0 3 0 0 6 0 6 0 3 1 4 28 0 0 30 0 0 0 8 11 1 1 0 0 0 0 0 0 0 2 1 0 0 11 0 19 0 0 0 43 0 8 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 51 3 0 0 0 0 6 0 0 0 0 0 0 0 0 2 1 0 2 0 2 0 0 12 0 0 0 27 1 1 0 0 0 0 1 0 5 0 1 2 1 1 0 1 0 0 0 0 30 0 0 0 0 0 0 0 0 1 1 9 44 1 0 1 0 73 1 4 0 26 0 0 0 0 0 0 0 3 0 0 1 0 13 1 54 0 0 0 5 3 0 0 2 1 1 0 0 1 40 0 0 1 4 0 0 10 0 0 0 2 0 0 9 +ENSDARG00000077777 1 3 14 0 0 0 0 2 6 0 3 0 0 7 3 4 0 32 1 15 22 0 20 6 0 13 2 7 1 1 10 0 14 1 0 16 1 0 0 4 3 0 5 0 0 0 0 0 0 0 1 0 0 0 19 1 11 0 0 0 20 0 22 0 0 0 1 0 0 1 2 0 0 0 0 0 0 2 1 22 3 0 0 0 1 4 0 1 3 20 2 0 4 6 14 9 0 0 0 10 1 0 15 0 0 0 42 0 0 1 0 2 0 1 0 5 0 0 0 0 0 0 0 1 0 0 1 17 1 0 1 11 0 0 0 1 0 1 5 26 0 1 2 0 14 3 3 0 19 0 0 2 0 0 0 0 27 1 0 0 1 11 1 20 1 3 0 23 1 0 0 2 0 1 0 0 1 21 0 0 0 11 2 0 18 0 0 1 0 0 0 13 +ENSDARG00000008363 0 0 1 0 1 0 0 0 5 38 11 0 0 5 13 3 0 2 1 22 8 0 52 1 0 7 0 2 0 0 8 8 16 0 0 10 0 0 0 1 9 0 10 0 0 1 1 0 0 0 0 0 0 0 19 0 0 0 0 0 11 5 2 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 19 1 0 1 0 0 0 0 0 0 4 0 16 2 9 4 3 0 0 1 2 6 0 8 1 0 1 67 0 0 0 2 0 1 1 1 1 0 0 0 0 0 0 0 0 2 0 0 5 0 0 0 22 0 0 0 1 0 5 10 0 0 0 2 3 10 1 0 0 8 1 0 0 0 0 0 0 3 0 0 0 0 3 1 1 0 5 25 8 44 0 4 3 21 0 0 0 3 10 0 0 0 5 0 0 1 0 0 0 0 0 0 11 +ENSDARG00000037870 0 0 0 0 0 0 0 0 18 1 9 0 0 10 9 6 0 4 0 21 15 0 3 7 0 25 1 20 0 0 1 0 10 0 0 11 1 0 0 2 5 0 1 0 0 0 0 0 0 0 0 1 0 0 14 0 21 0 3 0 21 0 24 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 1 27 0 0 0 0 0 0 0 0 3 48 0 0 2 1 6 0 1 0 1 22 0 1 14 2 0 0 45 0 0 1 0 0 1 0 0 2 0 0 1 0 0 0 0 0 1 0 0 12 1 0 0 22 0 0 0 0 0 1 9 8 0 0 1 1 22 3 3 0 10 0 1 0 0 0 0 0 14 0 1 0 0 8 1 6 0 2 1 6 0 0 2 3 7 0 1 0 5 6 0 0 0 3 0 0 3 0 0 1 0 0 0 20 +ENSDARG00000051875 0 0 0 1 0 0 0 0 0 0 0 0 0 8 11 7 0 0 0 59 25 0 5 0 1 0 0 13 0 1 0 1 19 1 0 2 0 0 0 11 4 0 0 0 0 0 0 0 0 0 0 0 0 0 19 1 47 0 0 1 38 2 2 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 45 0 0 0 1 0 5 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 32 0 0 1 38 0 0 0 0 1 1 0 0 6 0 0 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 24 28 1 0 0 0 23 9 4 0 8 0 0 0 0 0 0 1 0 0 0 0 0 7 0 14 0 9 1 0 0 0 6 0 0 0 0 1 3 18 0 0 0 4 0 0 3 0 1 0 0 0 2 37 +ENSDARG00000037746 1 0 2 1 0 0 0 0 8 0 4 0 1 2 5 5 0 4 1 14 46 0 2 11 0 10 0 8 0 0 1 1 11 0 0 29 0 1 0 5 9 0 2 1 0 0 0 0 0 0 0 2 0 1 3 0 9 0 0 0 16 0 6 0 1 1 0 3 0 0 2 1 1 0 0 0 0 1 1 50 3 0 0 1 0 5 0 0 0 17 0 0 1 2 0 1 0 0 3 7 0 1 8 2 0 1 49 0 0 2 0 3 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 24 0 0 0 5 0 0 0 0 0 2 3 10 0 1 4 1 27 1 4 0 4 0 1 1 1 0 0 0 15 0 0 0 0 6 1 15 0 3 0 6 2 0 0 0 8 0 0 0 5 23 1 2 0 2 0 0 5 0 0 2 3 0 1 42 +ENSDARG00000020850 0 0 5 0 0 0 0 0 46 0 1 0 0 3 3 4 0 14 3 16 30 0 6 2 0 22 4 2 0 0 2 0 4 0 0 8 1 0 0 4 3 0 8 0 0 0 0 0 0 0 0 1 0 0 2 0 5 0 2 0 8 0 15 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 24 0 0 0 0 0 5 0 0 0 5 1 0 1 1 3 9 0 0 0 13 1 0 6 3 0 0 50 2 0 3 2 1 1 0 0 3 0 0 0 1 0 0 0 1 0 0 0 16 0 0 0 14 0 0 0 0 0 1 7 13 0 0 6 0 18 2 11 0 4 2 0 0 0 0 0 0 80 0 1 0 1 5 0 10 0 3 1 2 0 0 2 10 4 0 0 0 3 10 1 0 0 3 3 0 13 0 1 0 0 0 0 13 +ENSDARG00000018259 0 0 0 0 0 0 1 0 0 3 11 0 1 9 11 2 0 0 0 34 18 0 11 0 0 7 1 15 1 0 3 0 26 0 0 4 1 0 0 3 5 0 0 0 0 1 0 0 0 0 0 0 0 0 9 0 16 0 0 0 34 3 33 0 0 0 0 0 2 0 0 1 0 1 0 0 0 1 0 23 2 0 0 0 0 2 0 0 0 0 0 4 0 0 0 0 0 1 0 0 0 0 31 1 0 0 21 2 0 2 0 1 1 0 0 3 0 0 0 0 0 1 0 1 2 0 0 5 0 0 0 0 0 1 0 0 0 0 14 25 0 0 1 0 23 8 1 0 7 2 1 0 0 1 1 0 0 0 0 0 2 5 1 12 0 4 1 24 2 0 3 1 5 0 0 0 7 16 0 0 0 5 0 0 2 0 1 0 0 0 1 26 +ENSDARG00000039914 0 0 0 0 0 0 0 0 1 1 2 0 0 8 12 6 0 1 1 33 3 1 6 0 0 0 2 11 0 0 10 0 8 0 0 6 3 1 0 1 11 0 1 0 0 0 1 0 0 0 0 0 0 0 15 1 28 0 0 0 21 1 46 0 0 0 0 0 2 0 1 0 1 0 0 0 0 0 0 11 1 0 0 0 0 4 0 0 1 2 2 5 3 0 2 9 1 1 0 1 0 0 22 2 0 0 5 0 1 10 0 1 2 0 1 5 0 1 1 0 0 0 0 0 0 0 0 9 2 1 2 1 0 0 0 0 0 0 17 58 0 0 0 1 14 12 1 0 12 0 0 1 0 0 0 0 5 0 0 0 0 8 0 8 1 4 0 15 1 0 2 0 5 1 0 0 3 14 0 0 0 6 0 1 9 0 0 0 1 0 0 18 +ENSDARG00000068992 0 0 1 0 0 0 0 0 28 0 0 2 1 8 7 3 0 1 1 16 7 0 5 1 0 20 0 4 0 0 5 2 10 0 0 10 0 1 0 1 3 0 15 0 0 0 0 0 0 0 2 0 0 0 9 0 10 0 1 0 15 0 15 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 24 4 0 0 0 0 2 0 0 0 11 1 3 1 1 2 1 0 0 1 3 2 0 9 4 0 1 33 0 1 0 1 0 3 1 1 2 0 0 0 0 0 0 0 0 0 1 0 10 1 0 0 10 0 1 0 0 0 1 6 12 0 0 1 1 14 10 2 0 5 0 0 0 1 0 0 0 78 0 0 1 0 7 0 16 0 3 1 4 0 0 2 7 7 0 0 0 6 4 0 0 0 5 0 0 11 0 0 0 0 0 1 18 +ENSDARG00000017673 0 0 0 0 0 0 0 0 1 2 8 0 0 6 4 6 0 0 0 34 37 0 6 0 0 29 0 4 0 0 0 0 17 0 0 4 0 0 0 4 5 0 1 0 1 0 0 0 0 0 0 0 0 0 21 1 9 0 0 0 20 0 10 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 21 1 0 0 0 1 1 0 1 1 0 0 13 0 1 0 0 0 0 0 0 0 0 17 0 0 0 39 0 1 0 0 0 1 0 0 6 0 0 0 0 0 0 1 0 0 1 0 19 1 0 0 3 0 1 0 0 0 1 15 17 0 0 0 1 31 4 3 0 1 0 1 0 0 1 0 0 1 2 0 0 0 5 0 29 0 1 0 13 2 0 2 0 1 1 1 0 7 16 0 0 0 2 1 0 5 0 0 0 0 0 0 30 +ENSDARG00000039034 0 0 2 0 0 0 0 0 8 1 0 0 0 12 4 9 0 0 0 15 11 0 9 0 0 10 2 5 0 0 1 0 23 0 1 8 0 0 0 7 0 0 1 0 0 0 0 1 0 0 0 0 0 1 16 0 20 0 0 0 23 1 8 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 33 2 0 0 0 0 3 0 1 0 2 1 0 0 3 1 2 1 0 0 3 0 1 34 2 0 0 13 0 0 3 0 0 1 1 0 10 0 0 0 0 0 0 1 0 0 0 0 4 0 1 0 28 0 0 0 0 0 0 18 27 0 0 0 0 25 4 0 0 10 0 0 0 0 0 0 0 2 0 0 0 0 8 0 22 0 2 0 5 0 0 2 1 0 0 0 0 0 10 0 0 0 8 0 0 7 0 0 0 1 0 0 41 +ENSDARG00000001889 0 1 2 0 0 0 0 0 0 0 0 0 0 9 17 2 0 0 0 30 30 0 2 0 0 14 0 6 0 0 1 0 12 0 0 14 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 31 0 0 0 23 2 9 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 37 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 3 0 0 21 0 1 0 0 1 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 1 0 0 0 0 0 1 6 37 0 0 0 0 36 2 4 1 1 0 0 0 0 0 0 0 1 0 0 0 0 16 0 19 0 2 0 12 0 0 0 0 0 0 0 0 0 28 0 0 0 1 0 0 11 0 0 0 0 0 0 15 +ENSDARG00000036577 0 0 2 0 0 2 0 1 0 0 4 0 0 10 16 4 0 2 1 45 8 0 9 0 0 2 0 6 0 0 1 2 15 0 0 6 0 0 0 8 1 0 1 0 0 0 0 0 0 0 0 0 0 0 18 0 20 0 0 0 29 2 15 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 8 0 0 0 0 0 3 0 1 1 0 0 10 1 0 0 0 0 0 0 0 0 0 34 4 0 0 10 0 0 4 0 1 0 0 0 6 0 0 1 0 0 0 1 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 12 27 0 0 0 0 20 4 2 0 9 1 0 0 1 0 0 0 3 2 0 0 2 9 0 14 0 4 0 23 1 0 0 0 5 0 0 0 5 6 0 0 0 13 1 0 3 0 1 0 0 0 0 26 +ENSDARG00000075542 0 0 1 0 0 0 0 0 7 2 2 0 0 1 11 3 0 0 0 18 12 0 7 1 0 6 0 6 0 1 1 0 25 1 0 8 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 11 0 3 0 0 1 31 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 108 1 0 0 0 0 0 0 0 1 0 1 2 0 0 1 0 0 0 0 1 0 0 0 0 1 0 13 0 0 1 0 1 0 0 1 6 0 0 1 0 0 0 0 0 0 0 0 4 1 0 0 2 0 0 0 0 0 0 5 5 0 1 0 0 6 2 1 0 9 0 1 0 0 0 0 0 11 1 0 0 0 5 0 9 0 5 0 6 4 0 1 4 0 2 0 0 7 2 0 0 0 1 0 0 1 0 0 0 0 0 0 112 +ENSDARG00000029150 0 1 3 0 0 0 0 0 20 0 2 0 0 4 2 4 0 6 1 14 15 0 4 3 0 31 3 5 0 1 1 1 11 0 0 6 1 0 0 4 6 0 7 0 0 0 1 0 0 0 1 0 0 0 13 0 19 0 0 0 14 0 6 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 22 0 0 0 0 0 3 0 0 0 5 2 0 2 0 1 6 1 0 1 3 0 1 11 0 0 0 19 0 0 1 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 18 2 0 0 1 0 0 0 0 0 0 7 46 1 0 0 0 10 6 5 0 7 0 0 0 0 0 1 0 18 0 0 0 0 3 0 18 0 0 0 5 2 0 1 3 4 0 0 0 1 12 0 1 0 5 1 0 2 0 0 0 0 0 0 16 +ENSDARG00000016494 0 0 0 0 0 0 1 0 2 0 0 0 0 4 20 0 0 0 0 22 3 0 5 0 0 0 0 19 0 0 1 0 20 0 1 6 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 12 1 5 0 0 1 50 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 1 0 0 0 0 4 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 1 1 0 0 8 0 0 1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 1 0 0 8 134 0 0 0 0 35 5 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 7 2 2 0 1 0 0 1 0 2 0 1 0 0 0 3 16 0 0 0 9 0 0 1 0 0 0 0 0 0 26 +ENSDARG00000021864 0 0 0 0 0 0 0 0 47 0 0 0 0 1 2 7 0 2 3 13 11 0 0 3 2 18 0 2 0 0 1 1 6 0 0 19 0 1 0 5 3 0 8 1 0 0 0 0 0 0 0 1 0 0 0 0 5 0 0 0 8 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 0 0 0 0 0 0 0 0 0 9 2 1 3 0 1 8 0 0 0 5 1 0 5 1 0 0 48 0 1 0 1 1 4 1 0 0 0 0 0 0 1 0 0 0 0 0 0 7 0 0 0 5 0 0 0 0 0 0 5 7 0 0 8 0 10 1 11 0 2 0 0 0 0 0 0 0 39 1 0 0 0 4 1 10 0 0 0 3 1 0 2 23 7 0 0 0 4 4 0 0 0 1 0 0 12 0 0 0 0 0 0 6 +ENSDARG00000103057 0 0 1 0 0 0 0 1 5 0 0 0 0 4 16 4 0 0 0 22 12 0 3 0 0 0 2 3 0 1 0 0 20 0 0 6 0 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 22 0 12 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 33 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 3 1 0 1 0 0 1 26 1 0 0 21 0 0 0 0 0 1 0 0 11 0 0 0 0 0 0 1 1 0 0 0 13 0 0 0 2 0 0 0 1 0 0 13 2 0 0 0 0 43 2 2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 14 0 6 0 24 4 0 0 0 0 0 0 0 2 21 0 0 0 1 1 0 9 0 3 0 0 0 0 27 +ENSDARG00000051783 1 0 0 0 0 1 1 0 46 0 3 0 0 7 9 6 0 1 3 8 9 0 1 1 0 29 0 3 0 0 0 0 7 0 0 13 0 0 0 1 4 0 4 0 0 0 0 0 0 1 0 3 0 0 8 0 12 0 3 0 3 0 9 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 1 19 0 0 0 0 0 3 0 1 0 2 0 0 1 0 0 5 0 0 0 1 0 0 5 4 0 0 35 0 0 0 2 0 1 0 0 3 0 0 0 0 1 0 0 0 0 0 0 9 0 0 0 5 0 0 0 0 0 0 9 9 0 0 3 0 1 3 7 1 0 1 0 0 0 0 0 0 43 0 1 0 0 3 0 8 0 0 0 2 0 0 3 10 5 0 0 0 1 5 0 0 0 2 0 0 6 0 0 0 1 0 0 8 +ENSDARG00000009212 0 2 3 0 0 0 0 0 50 0 1 0 0 3 4 4 0 3 0 21 10 0 4 1 1 29 0 2 0 0 0 1 4 0 0 7 0 0 0 2 8 0 3 0 0 0 1 0 0 0 0 0 1 0 2 0 16 0 0 0 9 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 3 0 0 0 0 3 1 0 0 1 0 1 3 2 0 5 0 0 1 2 0 0 7 0 0 0 18 0 0 1 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 11 0 0 0 5 0 0 0 0 0 1 4 10 0 1 4 0 10 4 11 0 6 0 0 1 1 0 0 0 24 1 0 0 1 6 1 9 0 2 0 9 1 0 1 7 2 0 0 0 4 3 3 0 0 2 2 0 5 0 1 0 1 1 0 10 +ENSDARG00000021124 0 1 9 0 0 0 1 0 9 0 1 0 0 7 5 7 0 3 0 15 38 0 4 1 0 15 0 4 0 0 0 0 6 0 0 11 0 0 0 3 6 0 2 0 0 0 0 0 0 0 0 1 0 1 9 1 10 0 0 0 9 0 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 21 1 0 0 1 0 0 0 0 0 4 1 0 1 0 2 3 0 1 0 3 0 0 28 2 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 11 1 0 0 1 0 0 0 0 0 0 11 21 0 0 1 0 10 2 2 0 5 0 1 0 0 0 0 0 13 0 0 0 0 9 0 5 0 0 0 5 0 0 0 0 0 0 1 0 1 10 0 0 0 5 0 1 4 0 1 0 0 0 0 17
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.element.custom.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 1.100000 0 1.129692 -10.100000 1.100000 1.037630 0.000000 0 0.000000 +gene2 0.397940 0 1.159040 1.050428 1.065051 1.070787 1.146779 0 0.000000 +gene3 1.150515 0 1.159040 1.157790 1.049237 1.123798 1.109687 0 1.020180 +gene4 0.000000 0 0.000000 0.000000 0.000000 0.000000 0.000000 0 0.000000 +gene5 1.000000 0 0.000000 -10.000000 1.006008 1.129692 0.000000 0 1.146712
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.element.scalerem5.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 0.00 0 1 4.90 0 1.10 0.00 0 0.00 +gene2 0.50 0 3 4.00 0 1.22 4.35 0 0.00 +gene3 2.00 0 3 3.21 0 1.56 3.45 0 1.05 +gene4 0.00 0 0 0.00 0 0.00 0.00 0 0.00 +gene5 1.00 0 0 0.00 0 1.00 0.00 0 1.90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.colsum.gt10.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell3 cell4 cell5 cell7 +gene1 10.00 6 -10.10 10 0.00 +gene2 0.50 3 29.00 20 4.35 +gene3 2.00 3 3.21 30 8.45 +gene4 0.00 0 0.00 0 0.00 +gene5 1.00 0 -10.00 440 0.00
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.colsum.neq0.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell3 cell4 cell5 cell6 cell7 cell9 +gene1 10.00 6 -10.10 10 1.10 0.00 0.00 +gene2 0.50 3 29.00 20 1.22 4.35 0.00 +gene3 2.00 3 3.21 30 1.56 8.45 1.05 +gene4 0.00 0 0.00 0 0.00 0.00 0.00 +gene5 1.00 0 -10.00 440 6.00 0.00 1.90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.elemgt2.mm2.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 10.00000 0 6 -10.10000 10 1.10000 0.00000 0 0.00000 +gene2 0.50000 0 3 29.00000 20 1.22000 4.35000 0 0.00000 +gene3 2.00000 0 3 3.21000 30 1.56000 8.45000 0 1.05000 +gene5 1.00000 0 0 -10.00000 440 6.00000 0.00000 0 1.90000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.elemnmatch0.mm4.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell4 cell5 cell6 cell7 cell9 +gene1 10.0 -10.1 10 1.1 0.0 0.0 +gene2 0.5 29.0 20 1.22 4.35 0.0 +gene3 2.0 3.21 30 1.56 8.45 1.05 +gene4 0.0 0.0 0 0.0 0.0 0.0 +gene5 1.0 -10.0 440 6.0 0.0 1.9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.medvalcol.ge2.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell3 cell5 +gene1 6 10 +gene2 3 20 +gene3 3 30 +gene4 0 0 +gene5 0 440
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fs.rowsum.gt.50.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,3 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene2 0.50 0 3 29.00 20 1.22 4.35 0 0.00 +gene5 1.00 0 0 -10.00 440 6.00 0.00 0 1.90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fulltable.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 9.348972 5.043817 -10.251376 9.474774 0.249844 -0.674871 -0.684475 +gene2 -0.151028 2.043817 28.848624 19.474774 0.369844 3.675129 -0.684475 +gene3 1.348972 2.043817 3.058624 29.474774 0.709844 7.775129 0.365525 +gene4 -0.651028 -0.956183 -0.151376 -0.525226 -0.850156 -0.674871 -0.684475 +gene5 0.348972 -0.956183 -10.151376 439.474774 5.149844 -0.674871 1.215525
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.matapp.colcust.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,9 @@ +cell1 14.50 +cell2 0.00 +cell3 15.00 +cell4 12.11 +cell5 520.00 +cell6 11.10 +cell7 12.80 +cell8 0.00 +cell9 2.95
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.matapp.rowmax.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ +gene1 10 +gene2 29 +gene3 30 +gene4 0 +gene5 440
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.multiple.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 23.401197 2.995732 15.258097 -17.907465 23.401197 5.249273 2.995732 2.995732 2.995732 +gene2 4.020425 2.995732 9.135494 61.891820 43.688879 5.494944 11.892532 2.995732 2.995732 +gene3 7.091042 2.995732 9.135494 9.564583 63.912023 6.190840 20.248148 2.995732 5.146901 +gene4 2.995732 2.995732 2.995732 2.995732 2.995732 2.995732 2.995732 2.995732 2.995732 +gene5 5.044522 2.995732 2.995732 -17.697415 886.131226 15.258097 2.995732 2.995732 6.886487
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.select.colsonly.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell2 cell3 cell4 cell2 cell2 +gene1 0 6 -10.10 0 0 +gene2 0 3 29.00 0 0 +gene3 0 3 3.21 0 0 +gene4 0 0 0.00 0 0 +gene5 0 0 -10.00 0 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.select.rowsonly.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene2 0.50 0 3 29.00 20 1.22 4.35 0 0.00 +gene3 2.00 0 3 3.21 30 1.56 8.45 0 1.05 +gene4 0.00 0 0 0.00 0 0.00 0.00 0 0.00 +gene5 1.00 0 0 -10.00 440 6.00 0.00 0 1.90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.select.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,5 @@ + cell2 cell3 cell4 cell2 cell2 +gene2 0 3 29.00 0 0 +gene3 0 3 3.21 0 0 +gene4 0 0 0.00 0 0 +gene5 0 0 -10.00 0 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.tsv Sat Aug 17 16:25:37 2019 -0400 @@ -0,0 +1,6 @@ + cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 +gene1 10 0 6 -10.1 10 1.1 0 0 0 +gene2 0.5 0 3 29 20 1.22 4.35 0 0 +gene3 2 0 3 3.21 30 1.56 8.45 0 1.05 +gene4 0 0 0 0 0 0 0 0 0 +gene5 1 0 0 -10 440 6 0 0 1.9