Next changeset 1:dddadbbac949 (2019-08-30) |
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762" |
added:
allowed_functions.xml scripts/safety.py scripts/table_compute.py table_compute.xml test-data/examples.1.tsv test-data/examples.2.tsv test-data/examples.3p1.tsv test-data/examples.3p2.tsv test-data/examples.4.tsv test-data/examples.5.tsv test-data/examples.6p1.tsv test-data/examples.6p2.tsv test-data/examples.6p3.tsv test-data/examples.7.tsv test-data/examples.8.tsv test-data/mat1.trans.tsv test-data/mat1.umi.tsv test-data/mat2.trans.tsv test-data/mat2.umi.tsv test-data/small.element.custom.tsv test-data/small.element.scalerem5.tsv test-data/small.fs.colsum.gt10.tsv test-data/small.fs.colsum.neq0.tsv test-data/small.fs.elemgt2.mm2.tsv test-data/small.fs.elemnmatch0.mm4.tsv test-data/small.fs.medvalcol.ge2.tsv test-data/small.fs.rowsum.gt.50.tsv test-data/small.fulltable.tsv test-data/small.matapp.colcust.tsv test-data/small.matapp.rowmax.tsv test-data/small.multiple.tsv test-data/small.select.colsonly.tsv test-data/small.select.rowsonly.tsv test-data/small.select.tsv test-data/small.tsv |
b |
diff -r 000000000000 -r 1b0f96ed73f2 allowed_functions.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/allowed_functions.xml Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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> |
b |
diff -r 000000000000 -r 1b0f96ed73f2 scripts/safety.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/safety.py Sat Aug 17 16:25:37 2019 -0400 |
[ |
b'@@ -0,0 +1,211 @@\n+import re\n+\n+\n+class Safety():\n+ """\n+ Class to safely evaluate mathematical expression on single\n+ or table data\n+ """\n+\n+ __allowed_tokens = (\n+ \'(\', \')\', \'if\', \'else\', \'or\', \'and\', \'not\', \'in\',\n+ \'+\', \'-\', \'*\', \'/\', \'%\', \',\', \'!=\', \'==\', \'>\', \'>=\', \'<\', \'<=\',\n+ \'min\', \'max\', \'sum\',\n+ )\n+ __allowed_ref_types = {\n+ \'pd.DataFrame\': {\n+ \'abs\', \'add\', \'agg\', \'aggregate\', \'align\', \'all\', \'any\', \'append\',\n+ \'apply\', \'applymap\', \'as_matrix\', \'asfreq\', \'at\', \'axes\', \'bool\',\n+ \'clip\', \'clip_lower\', \'clip_upper\', \'columns\', \'combine\',\n+ \'compound\', \'corr\', \'count\', \'cov\', \'cummax\', \'cummin\', \'cumprod\',\n+ \'cumsum\', \'describe\', \'div\', \'divide\', \'dot\', \'drop\',\n+ \'drop_duplicates\', \'droplevel\', \'dropna\', \'duplicated\', \'empty\',\n+ \'eq\', \'equals\', \'expanding\', \'ffill\', \'fillna\', \'filter\', \'first\',\n+ \'first_valid_index\', \'floordiv\', \'ge\', \'groupby\', \'gt\', \'head\',\n+ \'iat\', \'iloc\', \'index\', \'insert\', \'interpolate\', \'isin\', \'isna\',\n+ \'isnull\', \'items\', \'iteritems\', \'iterrows\', \'itertuples\', \'ix\',\n+ \'join\', \'keys\', \'kurt\', \'kurtosis\', \'last\', \'last_valid_index\',\n+ \'le\', \'loc\', \'lookup\', \'lt\', \'mad\', \'mask\', \'max\', \'mean\',\n+ \'median\', \'melt\', \'merge\', \'min\', \'mod\', \'mode\', \'mul\', \'multiply\',\n+ \'ndim\', \'ne\', \'nlargest\', \'notna\', \'notnull\', \'nsmallest\',\n+ \'nunique\', \'pct_change\', \'pivot\', \'pivot_table\', \'pop\', \'pow\',\n+ \'prod\', \'product\', \'quantile\', \'radd\', \'rank\', \'rdiv\', \'replace\',\n+ \'resample\', \'rfloordiv\', \'rmod\', \'rmul\', \'rolling\', \'round\',\n+ \'rpow\', \'rsub\', \'rtruediv\', \'sample\', \'select\',\n+ \'sem\', \'shape\', \'shift\', \'size\', \'skew\', \'slice_shift\',\n+ \'squeeze\', \'stack\', \'std\', \'sub\', \'subtract\', \'sum\', \'swapaxes\',\n+ \'swaplevel\', \'T\', \'tail\', \'take\', \'transform\', \'transpose\',\n+ \'truediv\', \'truncate\', \'tshift\', \'unstack\', \'var\', \'where\',\n+ },\n+ \'pd.Series\': {\n+ \'abs\', \'add\', \'agg\', \'aggregate\', \'align\', \'all\', \'any\', \'append\',\n+ \'apply\', \'argsort\', \'as_matrix\', \'asfreq\', \'asof\', \'astype\', \'at\',\n+ \'at_time\', \'autocorr\', \'axes\', \'between\', \'between_time\', \'bfill\',\n+ \'bool\', \'cat\', \'clip\', \'clip_lower\', \'clip_upper\', \'combine\',\n+ \'combine_first\', \'compound\', \'corr\', \'count\', \'cov\', \'cummax\',\n+ \'cummin\', \'cumprod\', \'cumsum\', \'describe\', \'diff\', \'div\', \'divide\',\n+ \'divmod\', \'dot\', \'drop\', \'drop_duplicates\', \'droplevel\', \'dropna\',\n+ \'dt\', \'dtype\', \'dtypes\', \'duplicated\', \'empty\', \'eq\', \'equals\',\n+ \'ewm\', \'expanding\', \'factorize\', \'ffill\', \'fillna\', \'filter\',\n+ \'first\', \'first_valid_index\', \'flags\', \'floordiv\', \'ge\', \'groupby\',\n+ \'gt\', \'hasnans\', \'head\', \'iat\', \'idxmax\', \'idxmin\', \'iloc\', \'imag\',\n+ \'index\', \'interpolate\', \'is_monotonic\', \'is_monotonic_decreasing\',\n+ \'is_monotonic_increasing\', \'is_unique\', \'isin\', \'isna\', \'isnull\',\n+ \'item\', \'items\', \'iteritems\', \'ix\', \'keys\', \'kurt\', \'kurtosis\',\n+ \'last\', \'last_valid_index\', \'le\', \'loc\', \'lt\', \'mad\', \'map\',\n+ \'mask\', \'max\', \'mean\', \'median\', \'min\', \'mod\', \'mode\', \'mul\',\n+ \'multiply\', \'name\', \'ndim\', \'ne\', \'nlargest\', \'nonzero\', \'notna\',\n+ \'notnull\', \'nsmallest\', \'nunique\', \'pct_change\', \'pop\', \'pow\',\n+ \'prod\', \'product\', \'ptp\', \'quantile\', \'radd\', \'rank\', \'rdiv\',\n+ \'rdivmod\', \'real\', \'repeat\', \'replace\', \'resample\', \'rfloordiv\',\n+ \'rmod\', \'rmul\', \'rolling\', \'round\', \'rpow\', \'rsub\', \'rtruediv\',\n+ \'sample\', \'searchsorted\', \'select\', \'sem\', \'shape\', \'shift\',\n+ \'size\', \'skew\', \'slice_shift\', \'sort_index\', \'sort_values\',\n+ \'squeeze\', \'std\', \'sub\', \'subtract\', \'sum\', \'swapaxes\',\n+ \'swaplevel\', \'T\', \'tail\', \'take\', \'transfo'..b' if ref_type is None or ref_type not in self.__allowed_ref_types:\n+ self.allowed_qualified[\'_this\'] = set()\n+ else:\n+ self.allowed_qualified[\n+ \'_this\'\n+ ] = self.__allowed_ref_types[ref_type]\n+ if custom_qualified is not None:\n+ self.allowed_qualified.update(custom_qualified)\n+ self.expr = expression\n+ self.__assertSafe()\n+\n+ def generateFunction(self):\n+ "Generates a function to be evaluated outside the class"\n+ cust_fun = "def fun(%s):\\n\\treturn(%s)" % (self.these[0], self.expr)\n+ return cust_fun\n+\n+ def __assertSafe(self):\n+ indeed, problematic_token = self.__isSafeStatement()\n+ if not indeed:\n+ self.detailedExcuse(problematic_token)\n+ raise ValueError("Custom Expression is not safe.")\n+\n+ @staticmethod\n+ def detailedExcuse(word):\n+ "Gives a verbose statement for why users should not use some specific operators."\n+ mess = None\n+ if word == "for":\n+ mess = "for loops and comprehensions are not allowed. Use numpy or pandas table operations instead."\n+ elif word == ":":\n+ mess = "Colons are not allowed. Use inline Python if/else statements."\n+ elif word == "=":\n+ mess = "Variable assignment is not allowed. Use object methods to substitute values."\n+ elif word in ("[", "]"):\n+ mess = "Direct indexing of arrays is not allowed. Use numpy or pandas functions/methods to address specific parts of tables."\n+ else:\n+ mess = "Not an allowed token in this operation"\n+ print("( \'%s\' ) %s" % (word, mess))\n+\n+ def __isSafeStatement(self):\n+ """\n+ Determines if a user-expression is safe to evaluate.\n+\n+ To be considered safe an expression may contain only:\n+ - standard Python operators and numbers\n+ - inline conditional expressions\n+ - select functions and objects\n+ by default, these come from the math, numpy and pandas\n+ libraries, and must be qualified with the modules\' conventional\n+ names math, np, pd; can be overridden at the instance level\n+ - references to a whitelist of objects (pd.DataFrames by default)\n+ and their methods\n+ """\n+\n+ safe = True\n+ # examples of user-expressions\n+ # \'-math.log(1 - elem/4096) * 4096 if elem != bn else elem - 0.5\'\n+ # \'vec.median() + vec.sum()\'\n+\n+ # 1. Break expressions into tokens\n+ # e.g.,\n+ # [\n+ # \'-\', \'math.log\', \'(\', \'1\', \'-\', \'elem\', \'/\', \'4096\', \')\', \'*\',\n+ # \'4096\', \'if\', \'elem\', \'!=\', \'bn\', \'else\', \'elem\', \'-\', \'0.5\'\n+ # ]\n+ # or\n+ # [\'vec.median\', \'(\', \')\', \'+\', \'vec.sum\', \'(\', \')\']\n+ tokens = [\n+ e for e in re.split(\n+ r\'([a-zA-Z0-9_.]+|[^a-zA-Z0-9_.() ]+|[()])\', self.expr\n+ ) if e.strip()\n+ ]\n+\n+ # 2. Subtract allowed standard tokens\n+ rem = [e for e in tokens if e not in self.__allowed_tokens]\n+\n+ # 3. Subtract allowed qualified objects from allowed modules\n+ # and whitelisted references and their attributes\n+ rem2 = []\n+ for e in rem:\n+ parts = e.split(\'.\')\n+ if len(parts) == 1:\n+ if parts[0] in self.these:\n+ continue\n+ if len(parts) == 2:\n+ if parts[0] in self.these:\n+ parts[0] = \'_this\'\n+ if parts[0] in self.allowed_qualified:\n+ if parts[1] in self.allowed_qualified[parts[0]]:\n+ continue\n+ rem2.append(e)\n+\n+ # 4. Assert that rest are real numbers\n+ e = \'\'\n+ for e in rem2:\n+ try:\n+ _ = float(e)\n+ except ValueError:\n+ safe = False\n+ break\n+\n+ return safe, e\n' |
b |
diff -r 000000000000 -r 1b0f96ed73f2 scripts/table_compute.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/table_compute.py Sat Aug 17 16:25:37 2019 -0400 |
[ |
b'@@ -0,0 +1,310 @@\n+#!/usr/bin/env python3\n+"""\n+Table Compute tool - a wrapper around pandas with parameter input validation.\n+"""\n+\n+__version__ = "0.8"\n+\n+import csv\n+import math\n+from sys import argv\n+\n+import numpy as np\n+import pandas as pd\n+import userconfig as uc\n+from safety import Safety\n+# This should be generated in the same directory\n+\n+# Version command should not need to copy the config\n+if len(argv) == 2 and argv[1] == "--version":\n+ print(__version__)\n+ exit(-1)\n+\n+\n+class Utils:\n+ @staticmethod\n+ def getOneValueMathOp(op_name):\n+ "Returns a simple one value math operator such as log, sqrt, etc"\n+ return getattr(math, op_name)\n+\n+ @staticmethod\n+ def getVectorPandaOp(op_name):\n+ "Returns a valid DataFrame vector operator"\n+ return getattr(pd.DataFrame, op_name)\n+\n+ @staticmethod\n+ def getTwoValuePandaOp(op_name, pd_obj):\n+ "Returns a valid two value DataFrame or Series operator"\n+ return getattr(type(pd_obj), "__" + op_name + "__")\n+\n+\n+# Math is imported but not directly used because users\n+# may specify a "math.<function>" when inserting a custom\n+# function. To remove linting errors, which break CI testing\n+# we will just use an arbitrary math statement here.\n+__ = math.log\n+\n+\n+# Set decimal precision\n+pd.options.display.precision = uc.Default["precision"]\n+\n+user_mode = uc.Default["user_mode"]\n+user_mode_single = None\n+out_table = None\n+params = uc.Data["params"]\n+\n+if user_mode == "single":\n+ # Read in TSV file\n+ data = pd.read_csv(\n+ uc.Data["tables"][0]["reader_file"],\n+ header=uc.Data["tables"][0]["reader_header"],\n+ index_col=uc.Data["tables"][0]["reader_row_col"],\n+ keep_default_na=uc.Default["narm"],\n+ sep=\'\\t\'\n+ )\n+ # Fix whitespace issues in index or column names\n+ data.columns = [col.strip() if type(col) is str else col\n+ for col in data.columns]\n+ data.index = [row.strip() if type(row) is str else row\n+ for row in data.index]\n+\n+ user_mode_single = params["user_mode_single"]\n+\n+ if user_mode_single == "precision":\n+ # Useful for changing decimal precision on write out\n+ out_table = data\n+\n+ elif user_mode_single == "select":\n+ cols_specified = params["select_cols_wanted"]\n+ rows_specified = params["select_rows_wanted"]\n+\n+ # Select all indexes if empty array of values\n+ if not cols_specified:\n+ cols_specified = range(len(data.columns))\n+ if not rows_specified:\n+ rows_specified = range(len(data))\n+\n+ # do not use duplicate indexes\n+ # e.g. [2,3,2,5,5,4,2] to [2,3,5,4]\n+ nodupes_col = not params["select_cols_unique"]\n+ nodupes_row = not params["select_rows_unique"]\n+\n+ if nodupes_col:\n+ cols_specified = [x for i, x in enumerate(cols_specified)\n+ if x not in cols_specified[:i]]\n+ if nodupes_row:\n+ rows_specified = [x for i, x in enumerate(rows_specified)\n+ if x not in rows_specified[:i]]\n+\n+ out_table = data.iloc[rows_specified, cols_specified]\n+\n+ elif user_mode_single == "filtersumval":\n+ mode = params["filtersumval_mode"]\n+ axis = params["filtersumval_axis"]\n+ operation = params["filtersumval_op"]\n+ compare_operation = params["filtersumval_compare"]\n+ value = params["filtersumval_against"]\n+ minmatch = params["filtersumval_minmatch"]\n+\n+ if mode == "operation":\n+ # Perform axis operation\n+ summary_op = Utils.getVectorPandaOp(operation)\n+ axis_summary = summary_op(data, axis=axis)\n+ # Perform vector comparison\n+ compare_op = Utils.getTwoValuePandaOp(\n+ compare_operation, axis_summary\n+ )\n+ axis_bool = compare_op(axis_summary, value)\n+\n+ elif mode == "element":\n+ if operation.star'..b'PandaOp(\n+ params["element_scale_op"], data\n+ )\n+ scale_value = params["element_scale_value"]\n+ out_table = data.mask(\n+ bool_mat, scale_op(data.where(bool_mat), scale_value)\n+ )\n+ elif mode == "custom":\n+ element_customop = params["element_customop"]\n+\n+ def fun(elem):\n+ """Dummy Function"""\n+ return elem\n+\n+ ss = Safety(element_customop, [\'elem\'])\n+ fun_string = ss.generateFunction()\n+ exec(fun_string) # SUPER DUPER SAFE...\n+\n+ out_table = data.mask(\n+ bool_mat, data.where(bool_mat).applymap(fun)\n+ )\n+ else:\n+ print("No such element mode!", mode)\n+ exit(-1)\n+\n+ elif user_mode_single == "fulltable":\n+ general_mode = params["mode"]\n+\n+ if general_mode == "melt":\n+ melt_ids = params["MELT"]["melt_ids"]\n+ melt_values = params["MELT"]["melt_values"]\n+\n+ out_table = pd.melt(data, id_vars=melt_ids, value_vars=melt_values)\n+ elif general_mode == "pivot":\n+ pivot_index = params["PIVOT"]["pivot_index"]\n+ pivot_column = params["PIVOT"]["pivot_column"]\n+ pivot_values = params["PIVOT"]["pivot_values"]\n+\n+ out_table = data.pivot(\n+ index=pivot_index, columns=pivot_column, values=pivot_values\n+ )\n+ elif general_mode == "custom":\n+ custom_func = params["fulltable_customop"]\n+\n+ def fun(tableau):\n+ """Dummy Function"""\n+ return tableau\n+\n+ ss = Safety(custom_func, [\'table\'], \'pd.DataFrame\')\n+ fun_string = ss.generateFunction()\n+ exec(fun_string) # SUPER DUPER SAFE...\n+\n+ out_table = fun(data)\n+\n+ else:\n+ print("No such mode!", user_mode_single)\n+ exit(-1)\n+\n+\n+elif user_mode == "multiple":\n+\n+ table_sections = uc.Data["tables"]\n+\n+ if not table_sections:\n+ print("Multiple table sets not given!")\n+ exit(-1)\n+\n+ reader_skip = uc.Default["reader_skip"]\n+\n+ # Data\n+ table = []\n+ # 1-based handlers for users "table1", "table2", etc.\n+ table_names = []\n+ # Actual 0-based references "table[0]", "table[1]", etc.\n+ table_names_real = []\n+\n+ # Read and populate tables\n+ for x, t_sect in enumerate(table_sections):\n+ tmp = pd.read_csv(\n+ t_sect["file"],\n+ header=t_sect["header"],\n+ index_col=t_sect["row_names"],\n+ keep_default_na=uc.Default["narm"],\n+ sep="\\t"\n+ )\n+ table.append(tmp)\n+ table_names.append("table" + str(x + 1))\n+ table_names_real.append("table[" + str(x) + "]")\n+\n+ custom_op = params["fulltable_customop"]\n+ ss = Safety(custom_op, table_names, \'pd.DataFrame\')\n+ fun_string = ss.generateFunction()\n+ # Change the argument to table\n+ fun_string = fun_string.replace("fun(table1):", "fun():")\n+ # table1 to table[1]\n+ for name, name_real in zip(table_names, table_names_real):\n+ fun_string = fun_string.replace(name, name_real)\n+\n+ fun_string = fun_string.replace("fun():", "fun(table):")\n+ exec(fun_string) # SUPER DUPER SAFE...\n+ out_table = fun(table)\n+\n+else:\n+ print("No such mode!", user_mode)\n+ exit(-1)\n+\n+if not isinstance(out_table, (pd.DataFrame, pd.Series)):\n+ print(\'The specified operation did not result in a table to return.\')\n+ raise RuntimeError(\n+ \'The operation did not generate a pd.DataFrame or pd.Series to return.\'\n+ )\n+out_parameters = {\n+ "sep": "\\t",\n+ "float_format": "%%.%df" % pd.options.display.precision,\n+ "header": uc.Default["out_headers_col"],\n+ "index": uc.Default["out_headers_row"]\n+}\n+if user_mode_single not in (\'matrixapply\', None):\n+ out_parameters["quoting"] = csv.QUOTE_NONE\n+\n+out_table.to_csv(uc.Default["outtable"], **out_parameters)\n' |
b |
diff -r 000000000000 -r 1b0f96ed73f2 table_compute.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/table_compute.xml Sat Aug 17 16:25:37 2019 -0400 |
[ |
b'@@ -0,0 +1,1441 @@\n+<tool id="table_compute" name="Table Compute" version="@VERSION@">\n+ <description>computes operations on table data</description>\n+ <macros>\n+ <token name="@VERSION@">0.8</token>\n+ <token name="@COPEN@"><![CDATA[<code>]]></token>\n+ <token name="@CCLOSE@"><![CDATA[</code>]]></token>\n+ <import>allowed_functions.xml</import>\n+ <!-- text field validators -->\n+ <macro name="validator_text" >\n+ <validator type="regex" message="No special characters allowed">^(?:\\w+)?$</validator>\n+ <sanitizer sanitize="false" />\n+ </macro>\n+ <macro name="validator_text_required" >\n+ <validator type="regex" message="No special characters allowed">^(?:\\w+)?$</validator>\n+ <validator type="empty_field" />\n+ </macro>\n+ <macro name="validator_index_identifiers" >\n+ <validator type="regex" message="Specify a comma-separated list of index names without special characters">^(?:\\w+(?:, *\\w+)*)?$</validator>\n+ <sanitizer sanitize="false" />\n+ </macro>\n+ <macro name="validator_index_ranges">\n+ <validator type="regex" message="Specify a comma-separated list index numbers or ranges">^(?:\\d+(?::\\d)*(?:, *\\d+(?::\\d)*)*)?$</validator>\n+ <sanitizer sanitize="false" />\n+ </macro>\n+ <macro name="validator_functiondef">\n+ <validator type="regex" message="An expression is required and is allowed to contain only letters, numbers and the characters \'_ !-+=/*%.<>()\'">^[\\w !\\-+=/*%,.<>()]+$</validator>\n+ <sanitizer sanitize="false" />\n+ </macro>\n+ <!-- macro for main input tests -->\n+ <macro name="test_inputs_single" >\n+ <conditional name="singtabop" >\n+ <param name="use_type" value="single" />\n+ <param name="input" value="small.tsv" />\n+ <conditional name="user" >\n+ <yield />\n+ </conditional>\n+ </conditional>\n+ </macro>\n+ <!-- macro for umi to transcript tests -->\n+ <macro name="umi2trans" >\n+ <yield />\n+ <conditional name="user" >\n+ <param name="mode" value="element" />\n+ <param name="element_op" value="gt" />\n+ <param name="element_value" value="0" />\n+ <conditional name="element" >\n+ <param name="mode" value="custom" />\n+ <param name="custom_expr" value="-math.log(1 - elem/4096) * 4096 if elem != 4096 else elem - 0.5" />\n+ </conditional>\n+ </conditional>\n+ </macro>\n+ <!-- macro for file inputs -->\n+ <macro name="file_opts">\n+ <param name="input" type="data" format="tsv,tabular" label="Table" />\n+ <param name="col_row_names" type="select" display="checkboxes" multiple="true" optional="true"\n+ label="This input data has">\n+ <option value="has_col_names" selected="true">Column names on the first row</option>\n+ <option value="has_row_names" selected="true">Row names on the first column"</option>\n+ </param>\n+ </macro>\n+ <!-- element value macro -->\n+ <macro name="elem_val_macro" >\n+ <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" />\n+ </macro>\n+ </macros>\n+ <requirements>\n+ <requirement type="package" version="0.25">pandas</requirement>\n+ <requirement type="package" version="1.17">numpy</requirement>\n+ </requirements>\n+\n+ <version_command><![CDATA[\n+ touch \'$__tool_directory__/scripts/userconfig.py\' && python \'$__tool_directory__/scripts/table_compute.py\' --version\n+ ]]></version_command>\n+\n+ <command detect_errors="exit_code"><![CDATA[\n+ ## Can only impo'..b'on \'table\' along axis (0 or 1)* \xe2\x86\x92 ::\n+\n+ table - table.mean(0)/table.std(0)\n+\n+\n+Example 6: Perform operations on multiple tables\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+We have the following three input tables:\n+\n+Table 1\n+\n+ === === === ===\n+ . c1 c2 c3\n+ === === === ===\n+ g1 10 20 30\n+ g2 3 10 9\n+ g3 4 8 10\n+ === === === ===\n+\n+Table 2\n+\n+ === === ===\n+ . c1 c2\n+ === === ===\n+ g1 1 2\n+ g2 3 4\n+ g3 6 5\n+ === === ===\n+\n+Table 3\n+\n+ === === === ===\n+ . c1 c2 c3\n+ === === === ===\n+ g1 1 2 3\n+ g2 1 2 3\n+ === === === ===\n+\n+\n+*Note that the dimensions of these tables do not match.*\n+\n+Dimensions:\n+ * Table1 [3,3]\n+ * Table2 [3,2]\n+ * Table3 [2,3]\n+\n+In order to perform simple operations between Tables, they must be of the same dimensions.\n+\n+To add Table2 to Table3 we would have to transpose one of the tables using the in-built `T` method::\n+\n+ table2 + table3.T\n+\n+or::\n+\n+ table2.T + table3\n+\n+We can also perform more general operations using all 3 tables, such as taking the minimum value of\n+the maximum values of Table2 and Table3, and dividing the Table1 values by it::\n+\n+ table1 / min(table2.values.max(), table3.values.max())\n+\n+\n+To perform these types of operations in Galaxy we would select the following:\n+\n+ * *Input Single or Multiple Tables* \xe2\x86\x92 **Multiple Tables**\n+ * *(For each inserted table)*\n+ * *Column names on first row?* \xe2\x86\x92 **Yes**\n+ * *Row names on first column?* \xe2\x86\x92 **Yes**\n+ * *Custom Expression* \xe2\x86\x92 ::\n+\n+ <insert your desired function>\n+\n+Please note that the last example shown above was chosen to illustrate the\n+limitations of the tool. Nested attributes like `table2.values.max` are\n+disallowed in expressions in the tool so the above would have to be replaced\n+with the harder to read workaround::\n+\n+ table1 / min(np.max(np.max(table2)), np.max(np.max(table3)))\n+\n+Also note that, currently `min()`, `max()` and `sum()` are the only built-in\n+Python functions that can be used inside expressions. If you want to use\n+additional functions, these have to be qualified functions from the `math`,\n+`np` or `pd` libraries.\n+\n+\n+Example 7: Melt\n+~~~~~~~~~~~~~~~\n+\n+We have the following table\n+\n+ === === === ===\n+ . A B C\n+ === === === ===\n+ 0 a B 1\n+ 1 b B 3\n+ 2 c B 5\n+ === === === ===\n+\n+and we want:\n+\n+ === === ======== =====\n+ . A variable value\n+ === === ======== =====\n+ 0 a B B\n+ 1 b B B\n+ 2 c B B\n+ 3 a C 1\n+ 4 b C 3\n+ 5 c C 5\n+ === === ======== =====\n+\n+\n+In Galaxy we would select the following:\n+\n+ * *Input Single or Multiple Tables* \xe2\x86\x92 **Single Table**\n+ * *Column names on first row?* \xe2\x86\x92 **Yes**\n+ * *Row names on first column?* \xe2\x86\x92 **Yes**\n+ * *Type of table operation* \xe2\x86\x92 **Perform a Full Table Operation**\n+\n+ * *Operation* \xe2\x86\x92 **Melt**\n+ * *Variable IDs* \xe2\x86\x92 "A"\n+ * *Unpivoted IDs* \xe2\x86\x92 "B,C"\n+\n+This converts the "B" and "C" columns into variables.\n+\n+\n+Example 8: Pivot\n+~~~~~~~~~~~~~~~~\n+\n+We have the following table\n+\n+ === === === === ===\n+ . foo bar baz zoo\n+ === === === === ===\n+ 0 one A 1 x\n+ 1 one B 2 y\n+ 2 one C 3 z\n+ 3 two A 4 q\n+ 4 two B 5 w\n+ 5 two C 6 t\n+ === === === === ===\n+\n+and we want:\n+\n+ === === === ===\n+ . A B C\n+ === === === ===\n+ one 1 2 3\n+ two 4 5 6\n+ === === === ===\n+\n+In Galaxy we would select the following:\n+\n+ * *Input Single or Multiple Tables* \xe2\x86\x92 **Single Table**\n+ * *Column names on first row?* \xe2\x86\x92 **Yes**\n+ * *Row names on first column?* \xe2\x86\x92 **Yes**\n+ * *Type of table operation* \xe2\x86\x92 **Perform a Full Table Operation**\n+\n+ * *Operation* \xe2\x86\x92 **Pivot**\n+ * *Index* \xe2\x86\x92 "foo"\n+ * *Column* \xe2\x86\x92 "bar"\n+ * *Values* \xe2\x86\x92 "baz"\n+\n+This splits the matrix using "foo" and "bar" using only the values from "baz". Header values may contain extra information.\n+\n+]]></help>\n+ <citations></citations>\n+</tool>\n' |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.1.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.1.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.2.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.2.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.3p1.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.3p1.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.3p2.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.3p2.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.4.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.4.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.5.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.5.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.6p1.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p1.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.6p2.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p2.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -0,0 +1,4 @@ + c1 c2 +g1 1 2 +g2 3 4 +g3 6 5 \ No newline at end of file |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.6p3.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.6p3.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -0,0 +1,3 @@ + c1 c2 c3 +g1 1 2 3 +g2 1 2 3 \ No newline at end of file |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.7.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.7.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/examples.8.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/examples.8.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/mat1.trans.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat1.trans.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/mat1.umi.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat1.umi.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/mat2.trans.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat2.trans.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
b'@@ -0,0 +1,31 @@\n+\tAACACC\tAACCTC\tAACGAG\tAACTGG\tAAGCAC\tAAGCCA\tAAGGTG\tAAGTGC\tACAAGC\tACAGAC\tACAGGA\tACAGTG\tACATGG\tACCAAC\tACCAGA\tACCATG\tACGGTA\tACGTAC\tACGTGA\tACGTTG\tACTCAC\tACTCGA\tACTCTG\tACTTCG\tAGAACG\tAGACAG\tAGACCA\tAGACTC\tAGATGC\tAGCGAA\tAGCTAG\tAGCTCA\tAGCTTC\tAGGAAG\tAGGACA\tAGGATC\tAGGCTA\tAGTACC\tAGTAGG\tAGTGCA\tAGTGTC\tATACGG\tATCACG\tATCAGC\tATCCAC\tATCCGA\tATCGCA\tATCGTG\tATCTCC\tATGACC\tATGAGG\tATGCAG\tATGCTC\tATGGAC\tATGTCG\tATTCGC\tATTGCG\tCAATGC\tCACCAA\tCACGTA\tCACTCA\tCACTTC\tCAGAAG\tCAGGAA\tCATGCA\tCATGTC\tCATTGG\tCCAATC\tCCACAA\tCCAGTA\tCCATAG\tCCATCA\tCCGATA\tCCGTAA\tCCTACA\tCCTATG\tCCTGAA\tCCTTGA\tCGAACA\tCGATGA\tCGATTG\tCGCATA\tCGCTAA\tCGGTTA\tCGTAAG\tCGTCTA\tCGTTAC\tCGTTCA\tCTAACG\tCTAAGC\tCTAGAC\tCTAGGA\tCTAGTG\tCTATCC\tCTCAGA\tCTCATG\tCTCGAA\tCTGCTA\tCTGTTG\tCTTCGA\tGAAGAC\tGAAGGA\tGAATCC\tGAATGG\tGACAAC\tGACAGA\tGACGAA\tGAGCAA\tGAGGTA\tGAGTGA\tGAGTTG\tGATACG\tGATCGA\tGATCTG\tGATTGC\tGCAACA\tGCAATG\tGCAGAA\tGCATGA\tGCATTC\tGCCATA\tGCGTTA\tGCTAAG\tGCTCTA\tGCTTAC\tGCTTCA\tGGAATC\tGGACAA\tGGATAC\tGGATCA\tGGCTTA\tGGTAAC\tGGTAGA\tGGTATG\tGGTGTA\tGGTTAG\tGTAACC\tGTACAG\tGTACCA\tGTACTC\tGTATCG\tGTATGC\tGTCTCA\tGTGAAG\tGTGACA\tGTGATC\tGTGGAA\tGTTAGG\tGTTGAG\tTAACGG\tTACAGG\tTACCAC\tTACCGA\tTACGCA\tTACTCC\tTAGCTC\tTAGGAC\tTAGTGG\tTATCCG\tTATCGC\tTCAACG\tTCACAG\tTCATCC\tTCCGAA\tTCTAGG\tTCTTGC\tTGAACC\tTGAAGG\tTGAGGA\tTGATCG\tTGCAAC\tTGCAGA\tTGGTGA\tTGGTTG\tTGTACG\tTGTAGC\tTGTCGA\tTGTCTG\tTGTTCC\tTGTTGG\tTTACGC\tTTCACC\tTTCCAG\tTTCGAC\tTTCTCG\tTTGCAC\tTTGCGA\tTTGCTG\tTTGGAG\tTTGGCA\tTTGGTC\tTTGTGC\n+ENSDARG00000099970\t5.003054\t1.000122\t14.023980\t-0.000000\t2.000488\t2.000488\t2.000488\t-0.000000\t162.168323\t3.001099\t81.811621\t9.009902\t1.000122\t195.596716\t132.107705\t69.587787\t-0.000000\t-0.000000\t2.000488\t406.522221\t136.240904\t-0.000000\t37.168128\t1.000122\t5.003054\t108.422409\t3.001099\t49.295449\t-0.000000\t1.000122\t45.249018\t13.020674\t173.628588\t4.001954\t5.003054\t21.054018\t5.003054\t1.000122\t-0.000000\t7.005988\t63.489523\t2.000488\t5.003054\t1.000122\t-0.000000\t3.001099\t5.003054\t-0.000000\t0\t2.000488\t7.005988\t3.001099\t-0.000000\t-0.000000\t601.014180\t1.000122\t144.519836\t-0.000000\t6.004399\t2.000488\t257.954777\t2.000488\t268.618673\t1.000122\t-0.000000\t4.001954\t1.000122\t1.000122\t2.000488\t-0.000000\t1.000122\t2.000488\t3.001099\t1.000122\t3.001099\t-0.000000\t1.000122\t1.000122\t-0.000000\t249.443605\t12.017613\t-0.000000\t5.003054\t1.000122\t1.000122\t2.000488\t5.003054\t2.000488\t3.001099\t130.042668\t1.000122\t96.119021\t5.003054\t71.622561\t3.001099\t24.070588\t2.000488\t6.004399\t1.000122\t55.372602\t3.001099\t3.001099\t366.957653\t4.001954\t6.004399\t2.000488\t365.864074\t-0.000000\t1.000122\t16.031332\t2.000488\t6.004399\t4.001954\t-0.000000\t2.000488\t37.168128\t1.000122\t1.000122\t6.004399\t3.001099\t2.000488\t1.000122\t6.004399\t7.005988\t6.004399\t3.001099\t-0.000000\t96.119021\t2.000488\t1.000122\t4.001954\t245.194642\t1.000122\t2.000488\t-0.000000\t2.000488\t-0.000000\t5.003054\t320.195430\t257.954777\t-0.000000\t4.001954\t20.048988\t1.000122\t325.605548\t59.429052\t10.012227\t5.003054\t37.168128\t4.001954\t-0.000000\t2.000488\t4.001954\t-0.000000\t1.000122\t-0.000000\t341.878911\t1.000122\t3.001099\t-0.000000\t2.000488\t33.133653\t3.001099\t146.592186\t2.000488\t51.320165\t2.000488\t245.194642\t5.003054\t0\t59.429052\t55.372602\t69.587787\t2.000488\t-0.000000\t1.000122\t31.117905\t39.186856\t4.001954\t-0.000000\t-0.000000\t80.791574\t2.000488\t3.001099\t38.177367\t-0.000000\t6.004399\t1.000122\t2.000488\t-0.000000\t2.000488\t173.628588\n+ENSDARG00000104945\t-0.000000\t3.001099\t6.004399\t1.000122\t-0.000000\t2.000488\t4.001954\t1.000122\t9.009902\t12.017613\t1.000122\t1.000122\t-0.000000\t19.044204\t21.054018\t29.103148\t1.000122\t1.000122\t1.000122\t145.555880\t23.064818\t-0.000000\t29.103148\t1.000122\t1.000122\t2.000488\t4.001954\t28.096142\t-0.000000\t2.000488\t6.004399\t7.005988\t31.117905\t-0.000000\t3.001099\t13.020674\t1.000122\t1.000122\t1.000122\t14.023980\t60.443792\t1.000122\t1.000122\t-0.000000\t-0.000000\t2.000488\t-0.000000\t1.000122\t0\t2.000488\t-0.000000\t-0.000000\t-0.000000\t1.000122\t26.082870\t1.000122\t77.732955\t-0.000000\t-0.000000\t-0.000000\t55.372602\t3.001099\t18.039667\t1.000122\t1.000122\t2.000488\t2.000488\t-0.000000\t-0.000000\t1.000122\t-0.000000\t2.000488\t2.000488\t4.001954\t3.001099\t-0.000000\t1.000122\t2.000488\t-0.000000\t57.400325\t3.001099\t-0.000000\t4.00'..b'23\t-0.000000\t-0.000000\t-0.000000\t2.000488\t-0.000000\t0\t3.001099\t10.012227\t5.003054\t-0.000000\t-0.000000\t-0.000000\t1.000122\t5.003054\t-0.000000\t-0.000000\t-0.000000\t2.000488\t-0.000000\t-0.000000\t6.004399\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t-0.000000\t8.007823\n+ENSDARG00000009212\t-0.000000\t2.000488\t3.001099\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t50.307682\t-0.000000\t1.000122\t-0.000000\t-0.000000\t3.001099\t4.001954\t4.001954\t-0.000000\t3.001099\t-0.000000\t21.054018\t10.012227\t-0.000000\t4.001954\t1.000122\t1.000122\t29.103148\t-0.000000\t2.000488\t-0.000000\t-0.000000\t-0.000000\t1.000122\t4.001954\t-0.000000\t-0.000000\t7.005988\t-0.000000\t-0.000000\t-0.000000\t2.000488\t8.007823\t-0.000000\t3.001099\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t0\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t2.000488\t-0.000000\t16.031332\t-0.000000\t-0.000000\t-0.000000\t9.009902\t-0.000000\t8.007823\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t12.017613\t3.001099\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t3.001099\t1.000122\t-0.000000\t-0.000000\t1.000122\t-0.000000\t1.000122\t3.001099\t2.000488\t-0.000000\t5.003054\t-0.000000\t-0.000000\t1.000122\t2.000488\t-0.000000\t-0.000000\t7.005988\t-0.000000\t-0.000000\t-0.000000\t18.039667\t-0.000000\t-0.000000\t1.000122\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t2.000488\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t2.000488\t-0.000000\t-0.000000\t-0.000000\t11.014797\t-0.000000\t-0.000000\t-0.000000\t5.003054\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t1.000122\t4.001954\t10.012227\t-0.000000\t1.000122\t4.001954\t-0.000000\t10.012227\t4.001954\t11.014797\t-0.000000\t6.004399\t-0.000000\t-0.000000\t1.000122\t1.000122\t-0.000000\t-0.000000\t-0.000000\t24.070588\t1.000122\t-0.000000\t-0.000000\t1.000122\t6.004399\t1.000122\t9.009902\t-0.000000\t2.000488\t-0.000000\t9.009902\t1.000122\t0\t1.000122\t7.005988\t2.000488\t-0.000000\t-0.000000\t-0.000000\t4.001954\t3.001099\t3.001099\t-0.000000\t-0.000000\t2.000488\t2.000488\t-0.000000\t5.003054\t-0.000000\t1.000122\t-0.000000\t1.000122\t1.000122\t-0.000000\t10.012227\n+ENSDARG00000021124\t-0.000000\t1.000122\t9.009902\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t9.009902\t-0.000000\t1.000122\t-0.000000\t-0.000000\t7.005988\t5.003054\t7.005988\t-0.000000\t3.001099\t-0.000000\t15.027533\t38.177367\t-0.000000\t4.001954\t1.000122\t-0.000000\t15.027533\t-0.000000\t4.001954\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t6.004399\t-0.000000\t-0.000000\t11.014797\t-0.000000\t-0.000000\t-0.000000\t3.001099\t6.004399\t-0.000000\t2.000488\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t0\t-0.000000\t-0.000000\t1.000122\t-0.000000\t1.000122\t9.009902\t1.000122\t10.012227\t-0.000000\t-0.000000\t-0.000000\t9.009902\t-0.000000\t10.012227\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t21.054018\t1.000122\t-0.000000\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t4.001954\t1.000122\t-0.000000\t1.000122\t-0.000000\t2.000488\t3.001099\t-0.000000\t1.000122\t-0.000000\t3.001099\t-0.000000\t-0.000000\t28.096142\t2.000488\t-0.000000\t-0.000000\t25.076606\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t-0.000000\t11.014797\t1.000122\t-0.000000\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t11.014797\t21.054018\t-0.000000\t-0.000000\t1.000122\t-0.000000\t10.012227\t2.000488\t2.000488\t-0.000000\t5.003054\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t13.020674\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t9.009902\t-0.000000\t5.003054\t-0.000000\t-0.000000\t-0.000000\t5.003054\t-0.000000\t0\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t1.000122\t-0.000000\t1.000122\t10.012227\t-0.000000\t-0.000000\t-0.000000\t5.003054\t-0.000000\t1.000122\t4.001954\t-0.000000\t1.000122\t-0.000000\t-0.000000\t-0.000000\t-0.000000\t17.035376\n' |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/mat2.umi.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mat2.umi.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
b'@@ -0,0 +1,31 @@\n+\tAACACC\tAACCTC\tAACGAG\tAACTGG\tAAGCAC\tAAGCCA\tAAGGTG\tAAGTGC\tACAAGC\tACAGAC\tACAGGA\tACAGTG\tACATGG\tACCAAC\tACCAGA\tACCATG\tACGGTA\tACGTAC\tACGTGA\tACGTTG\tACTCAC\tACTCGA\tACTCTG\tACTTCG\tAGAACG\tAGACAG\tAGACCA\tAGACTC\tAGATGC\tAGCGAA\tAGCTAG\tAGCTCA\tAGCTTC\tAGGAAG\tAGGACA\tAGGATC\tAGGCTA\tAGTACC\tAGTAGG\tAGTGCA\tAGTGTC\tATACGG\tATCACG\tATCAGC\tATCCAC\tATCCGA\tATCGCA\tATCGTG\tATCTCC\tATGACC\tATGAGG\tATGCAG\tATGCTC\tATGGAC\tATGTCG\tATTCGC\tATTGCG\tCAATGC\tCACCAA\tCACGTA\tCACTCA\tCACTTC\tCAGAAG\tCAGGAA\tCATGCA\tCATGTC\tCATTGG\tCCAATC\tCCACAA\tCCAGTA\tCCATAG\tCCATCA\tCCGATA\tCCGTAA\tCCTACA\tCCTATG\tCCTGAA\tCCTTGA\tCGAACA\tCGATGA\tCGATTG\tCGCATA\tCGCTAA\tCGGTTA\tCGTAAG\tCGTCTA\tCGTTAC\tCGTTCA\tCTAACG\tCTAAGC\tCTAGAC\tCTAGGA\tCTAGTG\tCTATCC\tCTCAGA\tCTCATG\tCTCGAA\tCTGCTA\tCTGTTG\tCTTCGA\tGAAGAC\tGAAGGA\tGAATCC\tGAATGG\tGACAAC\tGACAGA\tGACGAA\tGAGCAA\tGAGGTA\tGAGTGA\tGAGTTG\tGATACG\tGATCGA\tGATCTG\tGATTGC\tGCAACA\tGCAATG\tGCAGAA\tGCATGA\tGCATTC\tGCCATA\tGCGTTA\tGCTAAG\tGCTCTA\tGCTTAC\tGCTTCA\tGGAATC\tGGACAA\tGGATAC\tGGATCA\tGGCTTA\tGGTAAC\tGGTAGA\tGGTATG\tGGTGTA\tGGTTAG\tGTAACC\tGTACAG\tGTACCA\tGTACTC\tGTATCG\tGTATGC\tGTCTCA\tGTGAAG\tGTGACA\tGTGATC\tGTGGAA\tGTTAGG\tGTTGAG\tTAACGG\tTACAGG\tTACCAC\tTACCGA\tTACGCA\tTACTCC\tTAGCTC\tTAGGAC\tTAGTGG\tTATCCG\tTATCGC\tTCAACG\tTCACAG\tTCATCC\tTCCGAA\tTCTAGG\tTCTTGC\tTGAACC\tTGAAGG\tTGAGGA\tTGATCG\tTGCAAC\tTGCAGA\tTGGTGA\tTGGTTG\tTGTACG\tTGTAGC\tTGTCGA\tTGTCTG\tTGTTCC\tTGTTGG\tTTACGC\tTTCACC\tTTCCAG\tTTCGAC\tTTCTCG\tTTGCAC\tTTGCGA\tTTGCTG\tTTGGAG\tTTGGCA\tTTGGTC\tTTGTGC\n+ENSDARG00000099970\t5\t1\t14\t0\t2\t2\t2\t0\t159\t3\t81\t9\t1\t191\t130\t69\t0\t0\t2\t387\t134\t0\t37\t1\t5\t107\t3\t49\t0\t1\t45\t13\t170\t4\t5\t21\t5\t1\t0\t7\t63\t2\t5\t1\t0\t3\t5\t0\t0\t2\t7\t3\t0\t0\t559\t1\t142\t0\t6\t2\t250\t2\t260\t1\t0\t4\t1\t1\t2\t0\t1\t2\t3\t1\t3\t0\t1\t1\t0\t242\t12\t0\t5\t1\t1\t2\t5\t2\t3\t128\t1\t95\t5\t71\t3\t24\t2\t6\t1\t55\t3\t3\t351\t4\t6\t2\t350\t0\t1\t16\t2\t6\t4\t0\t2\t37\t1\t1\t6\t3\t2\t1\t6\t7\t6\t3\t0\t95\t2\t1\t4\t238\t1\t2\t0\t2\t0\t5\t308\t250\t0\t4\t20\t1\t313\t59\t10\t5\t37\t4\t0\t2\t4\t0\t1\t0\t328\t1\t3\t0\t2\t33\t3\t144\t2\t51\t2\t238\t5\t0\t59\t55\t69\t2\t0\t1\t31\t39\t4\t0\t0\t80\t2\t3\t38\t0\t6\t1\t2\t0\t2\t170\n+ENSDARG00000104945\t0\t3\t6\t1\t0\t2\t4\t1\t9\t12\t1\t1\t0\t19\t21\t29\t1\t1\t1\t143\t23\t0\t29\t1\t1\t2\t4\t28\t0\t2\t6\t7\t31\t0\t3\t13\t1\t1\t1\t14\t60\t1\t1\t0\t0\t2\t0\t1\t0\t2\t0\t0\t0\t1\t26\t1\t77\t0\t0\t0\t55\t3\t18\t1\t1\t2\t2\t0\t0\t1\t0\t2\t2\t4\t3\t0\t1\t2\t0\t57\t3\t0\t4\t1\t1\t7\t2\t1\t2\t0\t1\t2\t3\t1\t5\t3\t2\t2\t1\t4\t3\t1\t48\t1\t1\t0\t26\t5\t4\t10\t0\t1\t3\t0\t3\t15\t0\t0\t6\t1\t1\t0\t2\t4\t2\t0\t0\t17\t5\t3\t2\t2\t3\t0\t0\t0\t1\t0\t31\t66\t0\t1\t0\t0\t40\t19\t10\t1\t24\t1\t3\t0\t1\t2\t1\t0\t3\t1\t0\t2\t4\t9\t3\t14\t1\t8\t2\t34\t5\t0\t9\t1\t6\t0\t1\t2\t17\t27\t3\t0\t1\t31\t2\t1\t22\t1\t2\t0\t11\t0\t1\t51\n+ENSDARG00000045639\t0\t2\t0\t0\t0\t1\t0\t0\t1\t0\t1\t0\t0\t52\t25\t4\t0\t2\t0\t116\t37\t0\t6\t0\t1\t0\t0\t20\t0\t0\t1\t2\t31\t0\t0\t13\t1\t1\t0\t2\t5\t0\t0\t1\t0\t1\t1\t0\t0\t0\t1\t0\t0\t2\t43\t0\t23\t0\t0\t0\t91\t0\t44\t0\t0\t0\t1\t0\t1\t0\t1\t0\t0\t1\t1\t0\t0\t1\t0\t57\t4\t0\t0\t0\t0\t6\t1\t0\t0\t0\t1\t0\t1\t1\t2\t1\t0\t1\t0\t0\t0\t0\t86\t0\t0\t0\t27\t1\t2\t3\t0\t0\t0\t0\t0\t29\t0\t0\t0\t0\t0\t0\t1\t3\t1\t0\t0\t15\t0\t0\t0\t3\t0\t0\t0\t0\t0\t1\t35\t88\t1\t0\t0\t2\t69\t10\t4\t0\t7\t0\t0\t1\t3\t0\t0\t0\t2\t2\t0\t0\t0\t25\t0\t49\t0\t6\t1\t21\t4\t0\t7\t0\t0\t0\t1\t0\t6\t32\t0\t0\t0\t7\t0\t0\t21\t0\t0\t0\t2\t0\t0\t41\n+ENSDARG00000070453\t1\t0\t1\t0\t0\t0\t1\t0\t1\t0\t0\t1\t0\t9\t21\t0\t0\t0\t0\t49\t19\t0\t23\t0\t0\t0\t0\t16\t0\t0\t0\t0\t34\t0\t0\t16\t0\t0\t0\t7\t7\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t7\t0\t18\t0\t1\t0\t111\t2\t0\t0\t1\t0\t2\t0\t0\t0\t1\t0\t0\t0\t0\t0\t1\t0\t0\t44\t1\t0\t0\t0\t0\t1\t0\t0\t2\t0\t0\t0\t0\t1\t2\t0\t0\t0\t0\t0\t0\t0\t34\t0\t0\t2\t9\t0\t2\t0\t0\t0\t1\t0\t0\t6\t0\t0\t1\t1\t0\t0\t1\t1\t0\t1\t0\t14\t0\t0\t0\t1\t0\t0\t0\t0\t1\t0\t14\t125\t0\t0\t1\t0\t45\t5\t0\t0\t1\t0\t0\t0\t0\t2\t0\t0\t0\t1\t0\t0\t1\t8\t0\t31\t1\t0\t0\t0\t1\t0\t11\t0\t0\t0\t0\t0\t21\t28\t0\t0\t0\t11\t0\t0\t7\t0\t0\t0\t0\t0\t0\t101\n+ENSDARG00000014201\t0\t1\t10\t0\t0\t0\t0\t0\t3\t0\t0\t0\t0\t23\t7\t21\t0\t0\t0\t38\t38\t0\t4\t0\t0\t0\t0\t11\t0\t0\t1\t1\t27\t0\t0\t28\t0\t1\t0\t4\t7\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t22\t0\t27\t0\t0\t0\t21\t1\t0\t0\t0\t0\t3\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t102\t0\t0\t0\t0\t0\t0\t1\t0\t1\t0\t0\t1\t1\t0\t1\t0\t1\t0\t0\t0\t1\t0\t56\t1\t0\t0\t59\t1\t0\t0\t0\t0\t0\t0\t0\t2\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t16\t1\t0\t0\t0\t1\t0\t0\t0\t0\t0\t41\t34\t0\t0\t0\t0\t33\t8\t2\t1\t1\t0\t2\t0\t0\t0\t0\t0\t0\t1\t1\t0\t1\t14\t1\t21\t0\t6\t0\t0\t3\t0\t1\t0\t1\t0\t0\t0\t19\t21\t0\t0\t0\t9\t0\t1\t8\t0\t0\t0\t0\t0\t0\t58\n+ENSDARG00000055455\t0\t1\t3\t0\t0\t0\t0\t0\t1\t0\t4\t2\t1\t18\t29\t7\t1\t1\t0\t48\t12\t0\t10\t1\t0\t38\t2\t13\t0\t0\t3\t1\t25\t0\t0\t9\t0\t0\t0\t9\t3\t0\t2\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t15\t0\t15\t1\t0\t0\t37\t1\t17\t0\t0\t0\t1\t1\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t14\t1\t0\t1\t0\t0\t5\t1\t0\t0\t0\t0\t5\t2\t0\t0\t11\t1\t0\t0\t0\t1\t0\t50\t1\t0\t1\t32\t0\t0\t5\t0\t0\t0\t0\t0\t9\t0\t1\t0\t0\t0\t0\t0\t1\t1\t1\t0\t3\t1\t0\t0\t1\t1\t0\t0\t1\t0\t2\t37\t51\t0\t1\t0\t1\t28\t14\t4\t0\t7\t1\t0\t0\t0\t0\t0\t0\t1\t2\t1\t0\t0\t4\t1\t18\t1\t7\t1\t57\t2\t0\t3\t0\t4\t0\t0\t0\t11\t20\t0\t0\t0\t4\t0\t1\t10\t0\t1\t0\t0\t0\t0\t3'..b'1\t0\t0\t0\t0\t2\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t17\t3\t0\t0\t21\t0\t1\t0\t0\t1\t0\t0\t0\t8\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t19\t0\t0\t0\t1\t0\t0\t0\t0\t0\t1\t6\t37\t0\t0\t0\t0\t36\t2\t4\t1\t1\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t16\t0\t19\t0\t2\t0\t12\t0\t0\t0\t0\t0\t0\t0\t0\t0\t28\t0\t0\t0\t1\t0\t0\t11\t0\t0\t0\t0\t0\t0\t15\n+ENSDARG00000036577\t0\t0\t2\t0\t0\t2\t0\t1\t0\t0\t4\t0\t0\t10\t16\t4\t0\t2\t1\t45\t8\t0\t9\t0\t0\t2\t0\t6\t0\t0\t1\t2\t15\t0\t0\t6\t0\t0\t0\t8\t1\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t18\t0\t20\t0\t0\t0\t29\t2\t15\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t8\t0\t0\t0\t0\t0\t3\t0\t1\t1\t0\t0\t10\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t34\t4\t0\t0\t10\t0\t0\t4\t0\t1\t0\t0\t0\t6\t0\t0\t1\t0\t0\t0\t1\t0\t0\t0\t0\t7\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t12\t27\t0\t0\t0\t0\t20\t4\t2\t0\t9\t1\t0\t0\t1\t0\t0\t0\t3\t2\t0\t0\t2\t9\t0\t14\t0\t4\t0\t23\t1\t0\t0\t0\t5\t0\t0\t0\t5\t6\t0\t0\t0\t13\t1\t0\t3\t0\t1\t0\t0\t0\t0\t26\n+ENSDARG00000075542\t0\t0\t1\t0\t0\t0\t0\t0\t7\t2\t2\t0\t0\t1\t11\t3\t0\t0\t0\t18\t12\t0\t7\t1\t0\t6\t0\t6\t0\t1\t1\t0\t25\t1\t0\t8\t0\t0\t0\t0\t3\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t11\t0\t3\t0\t0\t1\t31\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t108\t1\t0\t0\t0\t0\t0\t0\t0\t1\t0\t1\t2\t0\t0\t1\t0\t0\t0\t0\t1\t0\t0\t0\t0\t1\t0\t13\t0\t0\t1\t0\t1\t0\t0\t1\t6\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t4\t1\t0\t0\t2\t0\t0\t0\t0\t0\t0\t5\t5\t0\t1\t0\t0\t6\t2\t1\t0\t9\t0\t1\t0\t0\t0\t0\t0\t11\t1\t0\t0\t0\t5\t0\t9\t0\t5\t0\t6\t4\t0\t1\t4\t0\t2\t0\t0\t7\t2\t0\t0\t0\t1\t0\t0\t1\t0\t0\t0\t0\t0\t0\t112\n+ENSDARG00000029150\t0\t1\t3\t0\t0\t0\t0\t0\t20\t0\t2\t0\t0\t4\t2\t4\t0\t6\t1\t14\t15\t0\t4\t3\t0\t31\t3\t5\t0\t1\t1\t1\t11\t0\t0\t6\t1\t0\t0\t4\t6\t0\t7\t0\t0\t0\t1\t0\t0\t0\t1\t0\t0\t0\t13\t0\t19\t0\t0\t0\t14\t0\t6\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t1\t0\t22\t0\t0\t0\t0\t0\t3\t0\t0\t0\t5\t2\t0\t2\t0\t1\t6\t1\t0\t1\t3\t0\t1\t11\t0\t0\t0\t19\t0\t0\t1\t0\t0\t0\t0\t0\t5\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t18\t2\t0\t0\t1\t0\t0\t0\t0\t0\t0\t7\t46\t1\t0\t0\t0\t10\t6\t5\t0\t7\t0\t0\t0\t0\t0\t1\t0\t18\t0\t0\t0\t0\t3\t0\t18\t0\t0\t0\t5\t2\t0\t1\t3\t4\t0\t0\t0\t1\t12\t0\t1\t0\t5\t1\t0\t2\t0\t0\t0\t0\t0\t0\t16\n+ENSDARG00000016494\t0\t0\t0\t0\t0\t0\t1\t0\t2\t0\t0\t0\t0\t4\t20\t0\t0\t0\t0\t22\t3\t0\t5\t0\t0\t0\t0\t19\t0\t0\t1\t0\t20\t0\t1\t6\t0\t0\t0\t0\t3\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t12\t1\t5\t0\t0\t1\t50\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t10\t1\t0\t0\t0\t0\t4\t0\t0\t0\t0\t0\t0\t1\t0\t1\t0\t0\t0\t0\t0\t0\t0\t3\t0\t0\t0\t1\t0\t0\t0\t0\t1\t1\t0\t0\t8\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t7\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t8\t134\t0\t0\t0\t0\t35\t5\t0\t0\t0\t1\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t7\t2\t2\t0\t1\t0\t0\t1\t0\t2\t0\t1\t0\t0\t0\t3\t16\t0\t0\t0\t9\t0\t0\t1\t0\t0\t0\t0\t0\t0\t26\n+ENSDARG00000021864\t0\t0\t0\t0\t0\t0\t0\t0\t47\t0\t0\t0\t0\t1\t2\t7\t0\t2\t3\t13\t11\t0\t0\t3\t2\t18\t0\t2\t0\t0\t1\t1\t6\t0\t0\t19\t0\t1\t0\t5\t3\t0\t8\t1\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t5\t0\t0\t0\t8\t1\t11\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t2\t11\t0\t0\t0\t0\t0\t0\t0\t0\t0\t9\t2\t1\t3\t0\t1\t8\t0\t0\t0\t5\t1\t0\t5\t1\t0\t0\t48\t0\t1\t0\t1\t1\t4\t1\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t7\t0\t0\t0\t5\t0\t0\t0\t0\t0\t0\t5\t7\t0\t0\t8\t0\t10\t1\t11\t0\t2\t0\t0\t0\t0\t0\t0\t0\t39\t1\t0\t0\t0\t4\t1\t10\t0\t0\t0\t3\t1\t0\t2\t23\t7\t0\t0\t0\t4\t4\t0\t0\t0\t1\t0\t0\t12\t0\t0\t0\t0\t0\t0\t6\n+ENSDARG00000103057\t0\t0\t1\t0\t0\t0\t0\t1\t5\t0\t0\t0\t0\t4\t16\t4\t0\t0\t0\t22\t12\t0\t3\t0\t0\t0\t2\t3\t0\t1\t0\t0\t20\t0\t0\t6\t0\t0\t0\t1\t2\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t22\t0\t12\t0\t0\t0\t8\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t33\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t2\t0\t1\t1\t0\t3\t1\t0\t1\t0\t0\t1\t26\t1\t0\t0\t21\t0\t0\t0\t0\t0\t1\t0\t0\t11\t0\t0\t0\t0\t0\t0\t1\t1\t0\t0\t0\t13\t0\t0\t0\t2\t0\t0\t0\t1\t0\t0\t13\t2\t0\t0\t0\t0\t43\t2\t2\t0\t1\t0\t0\t0\t1\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t14\t0\t6\t0\t24\t4\t0\t0\t0\t0\t0\t0\t0\t2\t21\t0\t0\t0\t1\t1\t0\t9\t0\t3\t0\t0\t0\t0\t27\n+ENSDARG00000051783\t1\t0\t0\t0\t0\t1\t1\t0\t46\t0\t3\t0\t0\t7\t9\t6\t0\t1\t3\t8\t9\t0\t1\t1\t0\t29\t0\t3\t0\t0\t0\t0\t7\t0\t0\t13\t0\t0\t0\t1\t4\t0\t4\t0\t0\t0\t0\t0\t0\t1\t0\t3\t0\t0\t8\t0\t12\t0\t3\t0\t3\t0\t9\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t3\t0\t0\t0\t1\t19\t0\t0\t0\t0\t0\t3\t0\t1\t0\t2\t0\t0\t1\t0\t0\t5\t0\t0\t0\t1\t0\t0\t5\t4\t0\t0\t35\t0\t0\t0\t2\t0\t1\t0\t0\t3\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t9\t0\t0\t0\t5\t0\t0\t0\t0\t0\t0\t9\t9\t0\t0\t3\t0\t1\t3\t7\t1\t0\t1\t0\t0\t0\t0\t0\t0\t43\t0\t1\t0\t0\t3\t0\t8\t0\t0\t0\t2\t0\t0\t3\t10\t5\t0\t0\t0\t1\t5\t0\t0\t0\t2\t0\t0\t6\t0\t0\t0\t1\t0\t0\t8\n+ENSDARG00000009212\t0\t2\t3\t0\t0\t0\t0\t0\t50\t0\t1\t0\t0\t3\t4\t4\t0\t3\t0\t21\t10\t0\t4\t1\t1\t29\t0\t2\t0\t0\t0\t1\t4\t0\t0\t7\t0\t0\t0\t2\t8\t0\t3\t0\t0\t0\t1\t0\t0\t0\t0\t0\t1\t0\t2\t0\t16\t0\t0\t0\t9\t0\t8\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t12\t3\t0\t0\t0\t0\t3\t1\t0\t0\t1\t0\t1\t3\t2\t0\t5\t0\t0\t1\t2\t0\t0\t7\t0\t0\t0\t18\t0\t0\t1\t0\t1\t0\t0\t0\t2\t0\t0\t0\t0\t0\t0\t0\t2\t0\t0\t0\t11\t0\t0\t0\t5\t0\t0\t0\t0\t0\t1\t4\t10\t0\t1\t4\t0\t10\t4\t11\t0\t6\t0\t0\t1\t1\t0\t0\t0\t24\t1\t0\t0\t1\t6\t1\t9\t0\t2\t0\t9\t1\t0\t1\t7\t2\t0\t0\t0\t4\t3\t3\t0\t0\t2\t2\t0\t5\t0\t1\t0\t1\t1\t0\t10\n+ENSDARG00000021124\t0\t1\t9\t0\t0\t0\t1\t0\t9\t0\t1\t0\t0\t7\t5\t7\t0\t3\t0\t15\t38\t0\t4\t1\t0\t15\t0\t4\t0\t0\t0\t0\t6\t0\t0\t11\t0\t0\t0\t3\t6\t0\t2\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t1\t9\t1\t10\t0\t0\t0\t9\t0\t10\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t21\t1\t0\t0\t1\t0\t0\t0\t0\t0\t4\t1\t0\t1\t0\t2\t3\t0\t1\t0\t3\t0\t0\t28\t2\t0\t0\t25\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t11\t1\t0\t0\t1\t0\t0\t0\t0\t0\t0\t11\t21\t0\t0\t1\t0\t10\t2\t2\t0\t5\t0\t1\t0\t0\t0\t0\t0\t13\t0\t0\t0\t0\t9\t0\t5\t0\t0\t0\t5\t0\t0\t0\t0\t0\t0\t1\t0\t1\t10\t0\t0\t0\t5\t0\t1\t4\t0\t1\t0\t0\t0\t0\t17\n' |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.element.custom.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.element.scalerem5.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.colsum.gt10.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.colsum.neq0.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.elemgt2.mm2.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.elemnmatch0.mm4.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.medvalcol.ge2.tsv --- /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 |
b |
@@ -0,0 +1,6 @@ + cell3 cell5 +gene1 6 10 +gene2 3 20 +gene3 3 30 +gene4 0 0 +gene5 0 440 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fs.rowsum.gt.50.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.fulltable.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.fulltable.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.matapp.colcust.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.matapp.rowmax.tsv --- /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 |
b |
@@ -0,0 +1,5 @@ +gene1 10 +gene2 29 +gene3 30 +gene4 0 +gene5 440 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.multiple.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.multiple.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.select.colsonly.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.select.rowsonly.tsv --- /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 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.select.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.select.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |
b |
diff -r 000000000000 -r 1b0f96ed73f2 test-data/small.tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/small.tsv Sat Aug 17 16:25:37 2019 -0400 |
b |
@@ -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 |