Repository 'anndata_inspect'
hg clone https://toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect

Changeset 3:286a24ac079c (2020-01-06)
Previous changeset 2:6a1a3dab235a (2019-12-12) Next changeset 4:70f5f1fee692 (2020-01-18)
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/anndata/ commit dc9d19d1f902f3ed54009cd0e68c8518c284b856"
modified:
macros.xml
added:
loompy_to_tsv.py
modify_loom.py
test-data/addlayer1.tsv
test-data/addloomout1.loom
test-data/addloomout2.loom
test-data/addloomout3.loom
test-data/addtest.loom
test-data/cols.tsv
test-data/converted.loom.test
test-data/finallayer.tsv
test-data/firstlayer.tsv
test-data/loomtest.loom
test-data/rows.tsv
test-data/secondlayer.tsv
tsv_to_loompy.py
b
diff -r 6a1a3dab235a -r 286a24ac079c loompy_to_tsv.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/loompy_to_tsv.py Mon Jan 06 13:45:39 2020 -0500
[
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+"""Converts a loompy file to tsv file(s). Each layer becomes a new file."""
+
+import argparse
+
+import loompy
+
+parser = argparse.ArgumentParser(description="Loompy file converter flags")
+parser.add_argument('--version', action='version', version='%(prog)s 0.1.0',
+                    help="Displays tool version")
+parser.add_argument("-f", "--file", help="loom file to import")
+args = parser.parse_args()
+
+file = args.file
+
+matrices = []
+allcols = []
+colstrings = []
+allrows = []
+
+# Build background info for all attributes and layers
+loompyfile = loompy.connect(file)
+row_attributes = loompyfile.ra.keys()  # List of row attributes
+for row in row_attributes:  # Each list represents rownames for row_attributes
+    c_row = loompyfile.ra[row]
+    c_row = [str(r) for r in c_row]
+    allrows.append(c_row)
+col_attributes = loompyfile.ca.keys()  # List of column attributes
+for col in col_attributes:  # each list represents colnames for col_attributes
+    c_col = loompyfile.ca[col]
+    c_col = [str(c) for c in c_col]
+    allcols.append(c_col)
+layers = loompyfile.layers.keys()  # List of layers
+for layer in layers:  # List with each element being a loompy layer
+    c_layer = loompyfile[layer]
+    c_layer = c_layer[:, :]
+    c_layer = c_layer.astype(str)
+    matrices.append(c_layer)
+
+# Create column attribute output
+with open("attributes/col_attr.tsv", "w") as colout:
+    col_attributes = "\t".join(col_attributes) + "\n"
+    colout.write(col_attributes)
+    for length in range(0, len(c_col)):
+        attributestring = ""
+        for col in allcols:
+            attributestring = attributestring + col[length] + "\t"
+        while attributestring[-1] == "\t":
+            attributestring = attributestring[:-1]
+        colout.write(attributestring)
+        colout.write("\n")
+# Create row attribute output
+with open("attributes/row_attr.tsv", "w") as rowout:
+    row_attributes = "\t".join(row_attributes) + "\n"
+    rowout.write(row_attributes)
+    for length in range(0, len(c_row)):
+        attributestring = ""
+        for row in allrows:
+            attributestring = attributestring + row[length] + "\t"
+        while attributestring[-1] == "\t":
+            attributestring = attributestring[:-1]
+        rowout.write(attributestring)
+        rowout.write("\n")
+
+# Build output files for each layer
+for x in range(0, len(layers)):
+    # Output file name generation
+    if layers[x] in layers[0: x]:  # Different output names if layers have same names somehow
+        repeats = layers[0, x].count(layer[x])
+        outputname = "output/" + layers[x] + repeats + ".tsv"
+    elif layers[x] == "":  # Empty layer name
+        outputname = "output/mainmatrix.tsv"
+    else:
+        outputname = "output/" + str(layers[x]) + ".tsv"  # Usual case
+# Matrix output
+    with open(outputname, "w") as outputmatrix:
+        for line in matrices[x]:
+            line = "\t".join(line)
+            line += "\n"
+            line = line
+            outputmatrix.write(line)
b
diff -r 6a1a3dab235a -r 286a24ac079c macros.xml
--- a/macros.xml Thu Dec 12 09:23:54 2019 -0500
+++ b/macros.xml Mon Jan 06 13:45:39 2020 -0500
[
@@ -15,13 +15,19 @@
         </citations>
     </xml>
     <xml name="version_command">
-        <version_command><![CDATA[python -c "import anndata as ad;print('anndata version: %s' % ad.__version__)"]]></version_command>
+        <version_command><![CDATA[python -c "import anndata as ad;print('anndata version: %s' % ad.__version__); import loompy;print('\nloompy version: %s' % loompy.__version__)"]]></version_command>
     </xml>
     <token name="@CMD@"><![CDATA[
 cat '$script_file' &&
 python '$script_file'
     ]]>
     </token>
+    <token name="@LOOMCMD@"><![CDATA[
+mkdir ./output &&
+mkdir ./attributes &&
+python '$__tool_directory__/loompy_to_tsv.py' -f '${hd5_format.input}'
+    ]]>
+    </token>
     <token name="@CMD_imports@"><![CDATA[
 import anndata as ad
     ]]>
@@ -33,15 +39,27 @@
 
 AnnData stores a data matrix `X` together with annotations of observations `obs`, variables `var` and unstructured annotations `uns`.
 
-.. image:: https://falexwolf.de/img/scanpy/anndata.svg 
+.. image:: https://falexwolf.de/img/scanpy/anndata.svg
 
 
-AnnData stores observations (samples) of variables (features) in the rows of a matrix. This is the convention of the modern classics 
-of statistics (`Hastie et al., 2009 <https://web.stanford.edu/~hastie/ElemStatLearn/>`__)  and machine learning (Murphy, 2012), the convention of dataframes both in R and Python and the established statistics 
+AnnData stores observations (samples) of variables (features) in the rows of a matrix. This is the convention of the modern classics
+of statistics (`Hastie et al., 2009 <https://web.stanford.edu/~hastie/ElemStatLearn/>`__)  and machine learning (Murphy, 2012), the convention of dataframes both in R and Python and the established statistics
 and machine learning packages in Python (statsmodels, scikit-learn).
 
 More details on the `AnnData documentation
 <https://anndata.readthedocs.io/en/latest/anndata.AnnData.html>`__
+
+
+**Loom data**
+
+Loom files are an efficient file format for very large omics datasets, consisting of a main matrix, optional additional layers, a variable number of row and column annotations, and sparse graph objects.
+
+.. image:: https://linnarssonlab.org/loompy/_images/Loom_components.png
+
+
+Loom files to store single-cell gene expression data: the main matrix contains the actual expression values (one column per cell, one row per gene); row and column annotations contain metadata for genes
+and cells, such as Name, Chromosome, Position (for genes), and Strain, Sex, Age (for cells).
+
     ]]>
     </token>
     <xml name="params_chunk_X">
b
diff -r 6a1a3dab235a -r 286a24ac079c modify_loom.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modify_loom.py Mon Jan 06 13:45:39 2020 -0500
[
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+"""This program adds layers, row attributes or column attributes for loom files"""
+
+import argparse
+
+import loompy
+import numpy as np
+
+parser = argparse.ArgumentParser(description="Loompy file converter flags")
+parser.add_argument('--VERSION', action='version', version='%(prog)s 0.1.0',
+                    help="Displays tool version")
+parser.add_argument('--file', '-f',
+                    help="Loom file to which data will be added")
+parser.add_argument('--rowfile', '-r', help="File of row attributes & values")
+parser.add_argument('--colfile', '-c',
+                    help="File of column attributes and values")
+parser.add_argument('--layers', '-l', nargs='*',
+                    help="Input tsv files. First file becomes main layer.")
+parser.add_argument('--add', '-a', choices=["rows", "cols", "layers"],
+                    help="Selects rows, columns or layers to be added to file")
+args = parser.parse_args()
+
+lfile = args.file
+if args.rowfile:
+    rowfile = args.rowfile
+if args.colfile:
+    colfile = args.colfile
+if args.layers:
+    alllayers = args.layers
+addselect = args.add
+# Check proper flags for chosen attributes are being added
+if addselect == "cols" and not args.colfile:
+    raise Exception("To add column attributes, column flag and file must be provided")
+if addselect == "rows" and not args.rowfile:
+    raise Exception("To add row attributes, row flag and file must be provided")
+if addselect == "layers" and not args.layers:
+    raise Exception("To add layers, a layer flag and file(s) must be provided")
+
+layernames = []
+rowdict = {}
+coldict = {}
+
+with loompy.connect(lfile) as loomfile:
+    # Loom file dimensions
+    nrow = loomfile.shape[0]
+    ncol = loomfile.shape[1]
+    if addselect == "layers":
+        layernames = []
+        # Generate layer names based on file names
+        for x in range(0, len(alllayers)):
+            layer = alllayers[x]
+            layer = layer.split("/")[-1].split(".")[-2]  # Takes away path, takes off extension
+            layernames.append(layer)
+        # Add in the layers themselves
+        for layer in range(0, len(alllayers)):
+            matrix = ""
+            with open(alllayers[layer], "r") as infile:
+                rows = 0
+                count = 0
+                for line in infile:
+                    if count == 0:
+                        cols = len(line.split("\t"))
+                        if cols != ncol:
+                            raise Exception("Dimensions of new matrix incorrect for this loom file. New matrices must be %d by %d" % (nrow, ncol))
+                    matrix = matrix + line + "\t"
+                    rows += 1
+                if rows != nrow:
+                    raise Exception("Dimensions of new matrix incorrect for this loom file. New matrices must be %d by %d")
+            matrix = matrix.split("\t")
+            matrix = [float(n) for n in matrix[:-1]]
+            matrix = np.asarray(matrix).reshape(nrow, ncol)
+            loomfile[layernames[layer]] = matrix
+    elif addselect == "rows":
+        with open(rowfile, "r") as rows:
+            count = 0
+            for line in rows:
+                line = line.strip().split("\t")
+                if count == 0:  # First time through
+                    row_attributes = line
+                    for x in row_attributes:
+                        rowdict[x] = []
+                    count += 1
+                else:
+                    for x in range(0, len(line)):
+                        rowdict[row_attributes[x]].append(line[x])
+        for x in row_attributes:
+            if len(rowdict[x]) != nrow:
+                raise Exception("Incorrect length of row. Row length must be: %d" % nrow)
+            loomfile.ra[x] = rowdict[x]
+    elif addselect == "cols":
+        with open(colfile, "r") as cols:
+            count = 0
+            for line in cols:
+                line = line.replace('\"', "")
+                line = line.replace(' ', "")
+                line = line.strip().split("\t")
+                if count == 0:  # First time through
+                    col_attributes = line
+                    for x in col_attributes:
+                        coldict[x] = []
+                    count += 1
+                else:
+                    for x in range(0, len(line)):
+                        coldict[col_attributes[x]].append(line[x])
+        for y in col_attributes:
+            if len(coldict[y]) != ncol:
+                raise Exception("Incorrect length of column. Column length must be: %d" % ncol)
+            loomfile.ca[y] = coldict[y]
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/addlayer1.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/addlayer1.tsv Mon Jan 06 13:45:39 2020 -0500
b
b'@@ -0,0 +1,9 @@\n+-4.38397705861083\t14.292813312163\t-3.50113245239144\t0.822254333007829\t1.00150289648448\t2.43591204698924\t-0.356677013622828\t-6.11947364969354\t2.56281003005924\t6.63909009032078\t-0.78946499862756\t4.69845868698249\t0.555316773542253\t1.14493347970535\t-2.13170480396421\t0.671242754395511\t-1.24598424970653\t2.35762885939\t0.808249063291586\t2.13338650412044\t-0.442400711567299\t0.185262494040311\t2.11898976841304\t1.33325569029047\t-1.59297725345935\t-0.966752781646448\t3.58792591654639\t1.66406580309397\t0.63327385793388\t-0.308925411126234\t1.62030751470511\t-0.551680746030133\t0.481109445913889\t-1.29522624182828\t-1.2921145302749\t1.35092954319461\t0.357971803776218\t0.602387478388324\t-0.86450428384588\t-0.253516849675122\t-0.191991523300002\t-1.23045693386899\t1.10601149579208\t0.474927307151347\t0.0295127518668576\t0.347320109574423\t-0.124263697792595\t-1.1355438083115\t-0.408955132576027\t0.652951279673313\t-0.560853895759609\t-1.50956633618222\t-0.372228084801999\t0.649248591501578\t1.24501120925882\t-0.333165552309464\t-0.632289365875825\t-0.489136074968853\t0.606241184362324\t-0.0697756202083343\t0.723366081694609\t0.269156075893411\t-1.1927509857456\t1.82685437466378\t0.112075843817834\t-0.393322613665142\t1.28166028199521\t-1.44150233543534\t0.439168555592787\t0.344017904319427\t1.81395743926678\t0.508805925557063\t0.848238740356503\t1.11258006953971\t-0.54997200023266\t0.809927913686388\t-0.738427841761447\t-0.453122730649697\t-0.486373667035062\t0.746360065063862\t0.700920021470684\t-0.313589192332652\t-0.906138725835488\t-0.661793483747946\t-0.271124869295733\t-0.00930238204411152\t0.3215219758547\t-1.25380192942129\t-1.55728763598058\t0.0952110940501214\t0.00839453406532392\t-0.0541448293428013\t0.18477775291979\t-0.62373646202135\t-0.0772377796590389\t-0.662366716574923\t-1.03592409403641\t-0.89249106169138\t-0.717710251591651\t0.776880357163071\n+9.30281248024864\t11.5335015413635\t2.30875450845203\t-1.38857898424223\t1.03817215518254\t3.6567570331059\t10.4188385719381\t-16.3128929934454\t-3.60726875451658\t13.7068591589974\t1.33467070509089\t5.38122487635218\t0.0543994941205517\t-2.70133427961325\t0.0833615201988052\t0.536168996886923\t-0.0760546449729948\t-0.78214225809622\t-1.95248285633292\t-0.326587425115489\t-1.35500688419885\t2.95434733271686\t0.505653381720533\t-0.295669096974786\t2.26651004107081\t3.53486650501347\t3.220565758935\t6.7321178798513\t1.94091616482302\t-1.69913768324206\t-4.05100974370053\t-1.27783882963281\t-1.01355047824763\t3.74963974715759\t-2.58850482422048\t6.8833099016512\t0.662009356554069\t3.44073177658161\t-0.418512226093587\t4.47846431563314\t-1.74206293554388\t1.84260608944111\t-4.30015045993517\t0.685087251537494\t3.24882497326721\t1.8095695466243\t0.867087349923969\t-3.63680218472816\t4.1068657392081\t-1.47022937993631\t-5.04481250049395\t1.16372912821134\t-0.673610496402694\t-0.480268341823079\t-1.75373530199601\t0.89984292745755\t-0.685746934741278\t1.35462132079302\t-2.52570708801692\t-2.74016842015935\t-0.393885487708287\t1.35180900874174\t0.566787604497255\t3.47016490744519\t1.19410589958458\t0.0954571935227406\t0.465830133214735\t0.969800327817249\t-2.30608823177911\t-1.36361346526534\t-1.07384772734754\t-1.28884764388441\t-1.1808330583485\t-2.23980854377317\t-1.85162318607013\t-0.069323155428631\t-0.398294053191192\t0.533970283418857\t0.996857378845262\t0.0816831777715224\t0.444550338509664\t-2.91836706827678\t-0.267414770797715\t-0.892474756707529\t2.17409610136124\t1.74372514825455\t1.50066087410441\t2.38996632942927\t0.0469000573619218\t-0.664299183380684\t2.60790199917983\t-2.40710478607531\t1.24547812809717\t2.41674046127559\t-1.46444549406779\t0.364174652919165\t1.30109643082257\t-0.577449382132677\t-1.86505783133924\t-1.99746975425092\n+-5.89727512326108\t-1.77246933119333\t1.52782219208749\t2.53511205650502\t-2.53100068245452\t-0.024300692685485\t1.54330662794615\t-2.74799503275627\t-3.35444290166925\t4.19511229947865\t0.465153187650876\t1.75331948382231\t-1.16526308150911\t-0.0943840089716619\t-0.24095624876061\t1.66521052849681\t-2.11688113706039\t-0.812191599443991\t1.84008723741373\t1.09605489701982\t0.353335700092688\t-0.523288451494122\t-0.2990'..b'5107\t-0.0154265589569301\t0.389711467291695\t-0.239877266341895\t0.352795111764336\t-0.190135198230446\t-0.208684600336429\t2.07918244700086\t-0.361025972011884\t1.63078492845337\t0.488804843489253\t-0.682220518809875\t-0.29463668542297\t0.311427730874536\t0.503090238195356\t-0.373064491000882\t0.23417554807577\t-1.48465915072341\t-1.46085021332334\t-0.495461794448377\t-0.17775442234612\n+-3.97575208570735\t11.0544858387352\t7.6173060428113\t6.63048929774542\t-5.30994749122935\t1.88722422257416\t4.09251614216244\t1.44648639362641\t-7.25006907798796\t6.86869361179653\t0.491494050662433\t-2.25651388279331\t9.5161454340774\t1.01476184398758\t2.5399705796852\t-2.21669881532076\t3.98394683759498\t3.59383510388346\t6.12746355517479\t-0.715726354893143\t3.55159403974729\t-1.11574398116924\t-0.525929195057429\t0.878154489745832\t-0.230493171744922\t0.714464510169232\t-0.157245107145587\t-3.4342599800683\t0.48505980459346\t0.702993897575898\t-0.135378631070949\t2.07954004197705\t-0.690953937097613\t1.27624456885549\t1.21947693928713\t1.65808520486344\t0.961593556571414\t-0.311912078906821\t-0.188898767072046\t-0.840060825549656\t-1.12921186104506\t1.56017494876464\t0.411131589159066\t-0.0521633935484305\t-1.69684514175225\t-0.0333681471142678\t-0.13906225301883\t1.24899138448782\t-0.313535620881124\t-0.310399053687893\t0.998855535319549\t-0.491386912744097\t-2.65588822465539\t-0.262301430974959\t-0.37741200187771\t-0.41429490709306\t-0.561255237373123\t-1.15276356159977\t2.78298825141619\t-0.502905861300848\t-0.675640036112791\t0.861407188085173\t0.670870463440124\t1.79627949867291\t-1.49071314746396\t1.10513353172237\t0.892902985092724\t-0.050023000293664\t-2.0951156395428\t-1.56875762272546\t0.361989901125448\t-0.225302477699307\t0.169862551615696\t-0.49530667266779\t0.458175186664475\t-1.32231097560469\t0.786081372282524\t-0.0484494603142322\t0.706878176692001\t1.15487020448148\t0.531640766037383\t-0.138810686002109\t0.591943064902141\t1.1023101065439\t1.76277780537503\t-0.905355575172113\t0.134769770511889\t-0.497015408904865\t-0.742656863985804\t-0.067343788917104\t-0.540927632084057\t-0.0580727941856462\t-1.0462842718808\t-0.00500540976328367\t-0.824608358220491\t-1.44352688132908\t1.75740458742792\t-0.44311879378313\t-0.662584623920899\t0.888462747166643\n+-5.277006254183\t2.42397087953038\t-0.943798001822603\t2.85780940799815\t2.36895039654097\t-2.69659967635116\t1.54629605482182\t-8.96928156931566\t-1.64262157483957\t1.43852747962271\t-0.967981915016056\t-0.390735428021631\t-2.15024133526923\t0.277271702300901\t1.8053039804015\t-0.535107559431625\t1.67768924818208\t-0.421010853147353\t-1.16464550016846\t-0.0251453460136133\t0.436658055348297\t-0.29540721194163\t0.333748713475055\t-0.723208532365344\t0.471110811941787\t0.726089991234918\t-0.157382569241171\t-0.379234094421878\t0.748812558274635\t-0.41301464848253\t0.566057622213117\t-1.64460356067673\t0.891204658261791\t-0.34932773880327\t-1.30922369726531\t-0.173573387498366\t0.8056807178332\t0.208881576008633\t-1.60357889692679\t0.908540313457729\t-0.292428392920166\t-0.0118489017469322\t-0.891712950604345\t1.16207204758746\t0.430624050805364\t-0.410051657015908\t0.730349459202633\t-0.331488261254584\t-1.11548393909722\t0.956994457204229\t-0.175931934021692\t-1.2036342551925\t-0.231987307226876\t0.750428558384009\t1.32527020615915\t-0.0420682884240139\t-0.092958898049259\t-0.0122267448532016\t0.726126639304472\t-0.694555932842187\t-0.262226740797341\t-1.0291540856062\t0.0793211050194524\t-0.670890710123743\t2.29978649016219\t-1.04786389277271\t0.0673332449001132\t-0.0371298860750165\t-0.190086855611152\t0.569211538833251\t0.919033137444811\t0.0635277673597158\t1.00004676925338\t0.463824012820739\t-0.661533287421813\t-0.532636001812366\t0.13594592076042\t0.353092106176299\t0.362734586198694\t0.648858597916376\t-0.947487352382305\t-0.890204579930725\t-0.481659475836321\t-0.382386249884642\t-0.565389965376474\t0.69470847650723\t0.565209012057139\t-0.594122862421382\t0.374110007433118\t0.906000246931211\t1.14643222017558\t-0.864426844788516\t-0.107902667694253\t-1.33878812133165\t-0.648727117620733\t-0.682898186419176\t0.152703116395545\t1.18647033835958\t-0.730347642632863\t0.355381103259185\n'
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/addloomout1.loom
b
Binary file test-data/addloomout1.loom has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/addloomout2.loom
b
Binary file test-data/addloomout2.loom has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/addloomout3.loom
b
Binary file test-data/addloomout3.loom has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/addtest.loom
b
Binary file test-data/addtest.loom has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/cols.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cols.tsv Mon Jan 06 13:45:39 2020 -0500
b
@@ -0,0 +1,101 @@
+Testing testing testing2
+PC1 0 200
+PC2 1 201
+PC3 2 202
+PC4 3 203
+PC5 4 204
+PC6 5 205
+PC7 6 206
+PC8 7 207
+PC9 8 208
+PC10 9 209
+PC11 10 210
+PC12 11 211
+PC13 12 212
+PC14 13 213
+PC15 14 214
+PC16 15 215
+PC17 16 216
+PC18 17 217
+PC19 18 218
+PC20 19 219
+PC21 20 220
+PC22 21 221
+PC23 22 222
+PC24 23 223
+PC25 24 224
+PC26 25 225
+PC27 26 226
+PC28 27 227
+PC29 28 228
+PC30 29 229
+PC31 30 230
+PC32 31 231
+PC33 32 232
+PC34 33 233
+PC35 34 234
+PC36 35 235
+PC37 36 236
+PC38 37 237
+PC39 38 238
+PC40 39 239
+PC41 40 240
+PC42 41 241
+PC43 42 242
+PC44 43 243
+PC45 44 244
+PC46 45 245
+PC47 46 246
+PC48 47 247
+PC49 48 248
+PC50 49 249
+PC51 50 250
+PC52 51 251
+PC53 52 252
+PC54 53 253
+PC55 54 254
+PC56 55 255
+PC57 56 256
+PC58 57 257
+PC59 58 258
+PC60 59 259
+PC61 60 260
+PC62 61 261
+PC63 62 262
+PC64 63 263
+PC65 64 264
+PC66 65 265
+PC67 66 266
+PC68 67 267
+PC69 68 268
+PC70 69 269
+PC71 70 270
+PC72 71 271
+PC73 72 272
+PC74 73 273
+PC75 74 274
+PC76 75 275
+PC77 76 276
+PC78 77 277
+PC79 78 278
+PC80 79 279
+PC81 80 280
+PC82 81 281
+PC83 82 282
+PC84 83 283
+PC85 84 284
+PC86 85 285
+PC87 86 286
+PC88 87 287
+PC89 88 288
+PC90 89 289
+PC91 90 290
+PC92 91 291
+PC93 92 292
+PC94 93 293
+PC95 94 294
+PC96 95 295
+PC97 96 296
+PC98 97 297
+PC99 98 298
+PC100 99 299
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/converted.loom.test
b
Binary file test-data/converted.loom.test has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/finallayer.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/finallayer.tsv Mon Jan 06 13:45:39 2020 -0500
b
@@ -0,0 +1,9 @@
+900.0 901.0 902.0 903.0 904.0 905.0 906.0 907.0 908.0 909.0 910.0 911.0 912.0 913.0 914.0 915.0 916.0 917.0 918.0 919.0 920.0 921.0 922.0 923.0 924.0 925.0 926.0 927.0 928.0 929.0 930.0 931.0 932.0 933.0 934.0 935.0 936.0 937.0 938.0 939.0 940.0 941.0 942.0 943.0 944.0 945.0 946.0 947.0 948.0 949.0 950.0 951.0 952.0 953.0 954.0 955.0 956.0 957.0 958.0 959.0 960.0 961.0 962.0 963.0 964.0 965.0 966.0 967.0 968.0 969.0 970.0 971.0 972.0 973.0 974.0 975.0 976.0 977.0 978.0 979.0 980.0 981.0 982.0 983.0 984.0 985.0 986.0 987.0 988.0 989.0 990.0 991.0 992.0 993.0 994.0 995.0 996.0 997.0 998.0 999.0
+1000.0 1001.0 1002.0 1003.0 1004.0 1005.0 1006.0 1007.0 1008.0 1009.0 1010.0 1011.0 1012.0 1013.0 1014.0 1015.0 1016.0 1017.0 1018.0 1019.0 1020.0 1021.0 1022.0 1023.0 1024.0 1025.0 1026.0 1027.0 1028.0 1029.0 1030.0 1031.0 1032.0 1033.0 1034.0 1035.0 1036.0 1037.0 1038.0 1039.0 1040.0 1041.0 1042.0 1043.0 1044.0 1045.0 1046.0 1047.0 1048.0 1049.0 1050.0 1051.0 1052.0 1053.0 1054.0 1055.0 1056.0 1057.0 1058.0 1059.0 1060.0 1061.0 1062.0 1063.0 1064.0 1065.0 1066.0 1067.0 1068.0 1069.0 1070.0 1071.0 1072.0 1073.0 1074.0 1075.0 1076.0 1077.0 1078.0 1079.0 1080.0 1081.0 1082.0 1083.0 1084.0 1085.0 1086.0 1087.0 1088.0 1089.0 1090.0 1091.0 1092.0 1093.0 1094.0 1095.0 1096.0 1097.0 1098.0 1099.0
+1100.0 1101.0 1102.0 1103.0 1104.0 1105.0 1106.0 1107.0 1108.0 1109.0 1110.0 1111.0 1112.0 1113.0 1114.0 1115.0 1116.0 1117.0 1118.0 1119.0 1120.0 1121.0 1122.0 1123.0 1124.0 1125.0 1126.0 1127.0 1128.0 1129.0 1130.0 1131.0 1132.0 1133.0 1134.0 1135.0 1136.0 1137.0 1138.0 1139.0 1140.0 1141.0 1142.0 1143.0 1144.0 1145.0 1146.0 1147.0 1148.0 1149.0 1150.0 1151.0 1152.0 1153.0 1154.0 1155.0 1156.0 1157.0 1158.0 1159.0 1160.0 1161.0 1162.0 1163.0 1164.0 1165.0 1166.0 1167.0 1168.0 1169.0 1170.0 1171.0 1172.0 1173.0 1174.0 1175.0 1176.0 1177.0 1178.0 1179.0 1180.0 1181.0 1182.0 1183.0 1184.0 1185.0 1186.0 1187.0 1188.0 1189.0 1190.0 1191.0 1192.0 1193.0 1194.0 1195.0 1196.0 1197.0 1198.0 1199.0
+1200.0 1201.0 1202.0 1203.0 1204.0 1205.0 1206.0 1207.0 1208.0 1209.0 1210.0 1211.0 1212.0 1213.0 1214.0 1215.0 1216.0 1217.0 1218.0 1219.0 1220.0 1221.0 1222.0 1223.0 1224.0 1225.0 1226.0 1227.0 1228.0 1229.0 1230.0 1231.0 1232.0 1233.0 1234.0 1235.0 1236.0 1237.0 1238.0 1239.0 1240.0 1241.0 1242.0 1243.0 1244.0 1245.0 1246.0 1247.0 1248.0 1249.0 1250.0 1251.0 1252.0 1253.0 1254.0 1255.0 1256.0 1257.0 1258.0 1259.0 1260.0 1261.0 1262.0 1263.0 1264.0 1265.0 1266.0 1267.0 1268.0 1269.0 1270.0 1271.0 1272.0 1273.0 1274.0 1275.0 1276.0 1277.0 1278.0 1279.0 1280.0 1281.0 1282.0 1283.0 1284.0 1285.0 1286.0 1287.0 1288.0 1289.0 1290.0 1291.0 1292.0 1293.0 1294.0 1295.0 1296.0 1297.0 1298.0 1299.0
+1300.0 1301.0 1302.0 1303.0 1304.0 1305.0 1306.0 1307.0 1308.0 1309.0 1310.0 1311.0 1312.0 1313.0 1314.0 1315.0 1316.0 1317.0 1318.0 1319.0 1320.0 1321.0 1322.0 1323.0 1324.0 1325.0 1326.0 1327.0 1328.0 1329.0 1330.0 1331.0 1332.0 1333.0 1334.0 1335.0 1336.0 1337.0 1338.0 1339.0 1340.0 1341.0 1342.0 1343.0 1344.0 1345.0 1346.0 1347.0 1348.0 1349.0 1350.0 1351.0 1352.0 1353.0 1354.0 1355.0 1356.0 1357.0 1358.0 1359.0 1360.0 1361.0 1362.0 1363.0 1364.0 1365.0 1366.0 1367.0 1368.0 1369.0 1370.0 1371.0 1372.0 1373.0 1374.0 1375.0 1376.0 1377.0 1378.0 1379.0 1380.0 1381.0 1382.0 1383.0 1384.0 1385.0 1386.0 1387.0 1388.0 1389.0 1390.0 1391.0 1392.0 1393.0 1394.0 1395.0 1396.0 1397.0 1398.0 1399.0
+1400.0 1401.0 1402.0 1403.0 1404.0 1405.0 1406.0 1407.0 1408.0 1409.0 1410.0 1411.0 1412.0 1413.0 1414.0 1415.0 1416.0 1417.0 1418.0 1419.0 1420.0 1421.0 1422.0 1423.0 1424.0 1425.0 1426.0 1427.0 1428.0 1429.0 1430.0 1431.0 1432.0 1433.0 1434.0 1435.0 1436.0 1437.0 1438.0 1439.0 1440.0 1441.0 1442.0 1443.0 1444.0 1445.0 1446.0 1447.0 1448.0 1449.0 1450.0 1451.0 1452.0 1453.0 1454.0 1455.0 1456.0 1457.0 1458.0 1459.0 1460.0 1461.0 1462.0 1463.0 1464.0 1465.0 1466.0 1467.0 1468.0 1469.0 1470.0 1471.0 1472.0 1473.0 1474.0 1475.0 1476.0 1477.0 1478.0 1479.0 1480.0 1481.0 1482.0 1483.0 1484.0 1485.0 1486.0 1487.0 1488.0 1489.0 1490.0 1491.0 1492.0 1493.0 1494.0 1495.0 1496.0 1497.0 1498.0 1499.0
+1500.0 1501.0 1502.0 1503.0 1504.0 1505.0 1506.0 1507.0 1508.0 1509.0 1510.0 1511.0 1512.0 1513.0 1514.0 1515.0 1516.0 1517.0 1518.0 1519.0 1520.0 1521.0 1522.0 1523.0 1524.0 1525.0 1526.0 1527.0 1528.0 1529.0 1530.0 1531.0 1532.0 1533.0 1534.0 1535.0 1536.0 1537.0 1538.0 1539.0 1540.0 1541.0 1542.0 1543.0 1544.0 1545.0 1546.0 1547.0 1548.0 1549.0 1550.0 1551.0 1552.0 1553.0 1554.0 1555.0 1556.0 1557.0 1558.0 1559.0 1560.0 1561.0 1562.0 1563.0 1564.0 1565.0 1566.0 1567.0 1568.0 1569.0 1570.0 1571.0 1572.0 1573.0 1574.0 1575.0 1576.0 1577.0 1578.0 1579.0 1580.0 1581.0 1582.0 1583.0 1584.0 1585.0 1586.0 1587.0 1588.0 1589.0 1590.0 1591.0 1592.0 1593.0 1594.0 1595.0 1596.0 1597.0 1598.0 1599.0
+1600.0 1601.0 1602.0 1603.0 1604.0 1605.0 1606.0 1607.0 1608.0 1609.0 1610.0 1611.0 1612.0 1613.0 1614.0 1615.0 1616.0 1617.0 1618.0 1619.0 1620.0 1621.0 1622.0 1623.0 1624.0 1625.0 1626.0 1627.0 1628.0 1629.0 1630.0 1631.0 1632.0 1633.0 1634.0 1635.0 1636.0 1637.0 1638.0 1639.0 1640.0 1641.0 1642.0 1643.0 1644.0 1645.0 1646.0 1647.0 1648.0 1649.0 1650.0 1651.0 1652.0 1653.0 1654.0 1655.0 1656.0 1657.0 1658.0 1659.0 1660.0 1661.0 1662.0 1663.0 1664.0 1665.0 1666.0 1667.0 1668.0 1669.0 1670.0 1671.0 1672.0 1673.0 1674.0 1675.0 1676.0 1677.0 1678.0 1679.0 1680.0 1681.0 1682.0 1683.0 1684.0 1685.0 1686.0 1687.0 1688.0 1689.0 1690.0 1691.0 1692.0 1693.0 1694.0 1695.0 1696.0 1697.0 1698.0 1699.0
+1700.0 1701.0 1702.0 1703.0 1704.0 1705.0 1706.0 1707.0 1708.0 1709.0 1710.0 1711.0 1712.0 1713.0 1714.0 1715.0 1716.0 1717.0 1718.0 1719.0 1720.0 1721.0 1722.0 1723.0 1724.0 1725.0 1726.0 1727.0 1728.0 1729.0 1730.0 1731.0 1732.0 1733.0 1734.0 1735.0 1736.0 1737.0 1738.0 1739.0 1740.0 1741.0 1742.0 1743.0 1744.0 1745.0 1746.0 1747.0 1748.0 1749.0 1750.0 1751.0 1752.0 1753.0 1754.0 1755.0 1756.0 1757.0 1758.0 1759.0 1760.0 1761.0 1762.0 1763.0 1764.0 1765.0 1766.0 1767.0 1768.0 1769.0 1770.0 1771.0 1772.0 1773.0 1774.0 1775.0 1776.0 1777.0 1778.0 1779.0 1780.0 1781.0 1782.0 1783.0 1784.0 1785.0 1786.0 1787.0 1788.0 1789.0 1790.0 1791.0 1792.0 1793.0 1794.0 1795.0 1796.0 1797.0 1798.0 1799.0
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/firstlayer.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/firstlayer.tsv Mon Jan 06 13:45:39 2020 -0500
b
b'@@ -0,0 +1,9 @@\n+-4.38397705861083\t14.292813312163\t-3.50113245239144\t0.822254333007829\t1.00150289648448\t2.43591204698924\t-0.356677013622828\t-6.11947364969354\t2.56281003005924\t6.63909009032078\t-0.78946499862756\t4.69845868698249\t0.555316773542253\t1.14493347970535\t-2.13170480396421\t0.671242754395511\t-1.24598424970653\t2.35762885939\t0.808249063291586\t2.13338650412044\t-0.442400711567299\t0.185262494040311\t2.11898976841304\t1.33325569029047\t-1.59297725345935\t-0.966752781646448\t3.58792591654639\t1.66406580309397\t0.63327385793388\t-0.308925411126234\t1.62030751470511\t-0.551680746030133\t0.481109445913889\t-1.29522624182828\t-1.2921145302749\t1.35092954319461\t0.357971803776218\t0.602387478388324\t-0.86450428384588\t-0.253516849675122\t-0.191991523300002\t-1.23045693386899\t1.10601149579208\t0.474927307151347\t0.0295127518668576\t0.347320109574423\t-0.124263697792595\t-1.1355438083115\t-0.408955132576027\t0.652951279673313\t-0.560853895759609\t-1.50956633618222\t-0.372228084801999\t0.649248591501578\t1.24501120925882\t-0.333165552309464\t-0.632289365875825\t-0.489136074968853\t0.606241184362324\t-0.0697756202083343\t0.723366081694609\t0.269156075893411\t-1.1927509857456\t1.82685437466378\t0.112075843817834\t-0.393322613665142\t1.28166028199521\t-1.44150233543534\t0.439168555592787\t0.344017904319427\t1.81395743926678\t0.508805925557063\t0.848238740356503\t1.11258006953971\t-0.54997200023266\t0.809927913686388\t-0.738427841761447\t-0.453122730649697\t-0.486373667035062\t0.746360065063862\t0.700920021470684\t-0.313589192332652\t-0.906138725835488\t-0.661793483747946\t-0.271124869295733\t-0.00930238204411152\t0.3215219758547\t-1.25380192942129\t-1.55728763598058\t0.0952110940501214\t0.00839453406532392\t-0.0541448293428013\t0.18477775291979\t-0.62373646202135\t-0.0772377796590389\t-0.662366716574923\t-1.03592409403641\t-0.89249106169138\t-0.717710251591651\t0.776880357163071\n+9.30281248024864\t11.5335015413635\t2.30875450845203\t-1.38857898424223\t1.03817215518254\t3.6567570331059\t10.4188385719381\t-16.3128929934454\t-3.60726875451658\t13.7068591589974\t1.33467070509089\t5.38122487635218\t0.0543994941205517\t-2.70133427961325\t0.0833615201988052\t0.536168996886923\t-0.0760546449729948\t-0.78214225809622\t-1.95248285633292\t-0.326587425115489\t-1.35500688419885\t2.95434733271686\t0.505653381720533\t-0.295669096974786\t2.26651004107081\t3.53486650501347\t3.220565758935\t6.7321178798513\t1.94091616482302\t-1.69913768324206\t-4.05100974370053\t-1.27783882963281\t-1.01355047824763\t3.74963974715759\t-2.58850482422048\t6.8833099016512\t0.662009356554069\t3.44073177658161\t-0.418512226093587\t4.47846431563314\t-1.74206293554388\t1.84260608944111\t-4.30015045993517\t0.685087251537494\t3.24882497326721\t1.8095695466243\t0.867087349923969\t-3.63680218472816\t4.1068657392081\t-1.47022937993631\t-5.04481250049395\t1.16372912821134\t-0.673610496402694\t-0.480268341823079\t-1.75373530199601\t0.89984292745755\t-0.685746934741278\t1.35462132079302\t-2.52570708801692\t-2.74016842015935\t-0.393885487708287\t1.35180900874174\t0.566787604497255\t3.47016490744519\t1.19410589958458\t0.0954571935227406\t0.465830133214735\t0.969800327817249\t-2.30608823177911\t-1.36361346526534\t-1.07384772734754\t-1.28884764388441\t-1.1808330583485\t-2.23980854377317\t-1.85162318607013\t-0.069323155428631\t-0.398294053191192\t0.533970283418857\t0.996857378845262\t0.0816831777715224\t0.444550338509664\t-2.91836706827678\t-0.267414770797715\t-0.892474756707529\t2.17409610136124\t1.74372514825455\t1.50066087410441\t2.38996632942927\t0.0469000573619218\t-0.664299183380684\t2.60790199917983\t-2.40710478607531\t1.24547812809717\t2.41674046127559\t-1.46444549406779\t0.364174652919165\t1.30109643082257\t-0.577449382132677\t-1.86505783133924\t-1.99746975425092\n+-5.89727512326108\t-1.77246933119333\t1.52782219208749\t2.53511205650502\t-2.53100068245452\t-0.024300692685485\t1.54330662794615\t-2.74799503275627\t-3.35444290166925\t4.19511229947865\t0.465153187650876\t1.75331948382231\t-1.16526308150911\t-0.0943840089716619\t-0.24095624876061\t1.66521052849681\t-2.11688113706039\t-0.812191599443991\t1.84008723741373\t1.09605489701982\t0.353335700092688\t-0.523288451494122\t-0.2990'..b'5107\t-0.0154265589569301\t0.389711467291695\t-0.239877266341895\t0.352795111764336\t-0.190135198230446\t-0.208684600336429\t2.07918244700086\t-0.361025972011884\t1.63078492845337\t0.488804843489253\t-0.682220518809875\t-0.29463668542297\t0.311427730874536\t0.503090238195356\t-0.373064491000882\t0.23417554807577\t-1.48465915072341\t-1.46085021332334\t-0.495461794448377\t-0.17775442234612\n+-3.97575208570735\t11.0544858387352\t7.6173060428113\t6.63048929774542\t-5.30994749122935\t1.88722422257416\t4.09251614216244\t1.44648639362641\t-7.25006907798796\t6.86869361179653\t0.491494050662433\t-2.25651388279331\t9.5161454340774\t1.01476184398758\t2.5399705796852\t-2.21669881532076\t3.98394683759498\t3.59383510388346\t6.12746355517479\t-0.715726354893143\t3.55159403974729\t-1.11574398116924\t-0.525929195057429\t0.878154489745832\t-0.230493171744922\t0.714464510169232\t-0.157245107145587\t-3.4342599800683\t0.48505980459346\t0.702993897575898\t-0.135378631070949\t2.07954004197705\t-0.690953937097613\t1.27624456885549\t1.21947693928713\t1.65808520486344\t0.961593556571414\t-0.311912078906821\t-0.188898767072046\t-0.840060825549656\t-1.12921186104506\t1.56017494876464\t0.411131589159066\t-0.0521633935484305\t-1.69684514175225\t-0.0333681471142678\t-0.13906225301883\t1.24899138448782\t-0.313535620881124\t-0.310399053687893\t0.998855535319549\t-0.491386912744097\t-2.65588822465539\t-0.262301430974959\t-0.37741200187771\t-0.41429490709306\t-0.561255237373123\t-1.15276356159977\t2.78298825141619\t-0.502905861300848\t-0.675640036112791\t0.861407188085173\t0.670870463440124\t1.79627949867291\t-1.49071314746396\t1.10513353172237\t0.892902985092724\t-0.050023000293664\t-2.0951156395428\t-1.56875762272546\t0.361989901125448\t-0.225302477699307\t0.169862551615696\t-0.49530667266779\t0.458175186664475\t-1.32231097560469\t0.786081372282524\t-0.0484494603142322\t0.706878176692001\t1.15487020448148\t0.531640766037383\t-0.138810686002109\t0.591943064902141\t1.1023101065439\t1.76277780537503\t-0.905355575172113\t0.134769770511889\t-0.497015408904865\t-0.742656863985804\t-0.067343788917104\t-0.540927632084057\t-0.0580727941856462\t-1.0462842718808\t-0.00500540976328367\t-0.824608358220491\t-1.44352688132908\t1.75740458742792\t-0.44311879378313\t-0.662584623920899\t0.888462747166643\n+-5.277006254183\t2.42397087953038\t-0.943798001822603\t2.85780940799815\t2.36895039654097\t-2.69659967635116\t1.54629605482182\t-8.96928156931566\t-1.64262157483957\t1.43852747962271\t-0.967981915016056\t-0.390735428021631\t-2.15024133526923\t0.277271702300901\t1.8053039804015\t-0.535107559431625\t1.67768924818208\t-0.421010853147353\t-1.16464550016846\t-0.0251453460136133\t0.436658055348297\t-0.29540721194163\t0.333748713475055\t-0.723208532365344\t0.471110811941787\t0.726089991234918\t-0.157382569241171\t-0.379234094421878\t0.748812558274635\t-0.41301464848253\t0.566057622213117\t-1.64460356067673\t0.891204658261791\t-0.34932773880327\t-1.30922369726531\t-0.173573387498366\t0.8056807178332\t0.208881576008633\t-1.60357889692679\t0.908540313457729\t-0.292428392920166\t-0.0118489017469322\t-0.891712950604345\t1.16207204758746\t0.430624050805364\t-0.410051657015908\t0.730349459202633\t-0.331488261254584\t-1.11548393909722\t0.956994457204229\t-0.175931934021692\t-1.2036342551925\t-0.231987307226876\t0.750428558384009\t1.32527020615915\t-0.0420682884240139\t-0.092958898049259\t-0.0122267448532016\t0.726126639304472\t-0.694555932842187\t-0.262226740797341\t-1.0291540856062\t0.0793211050194524\t-0.670890710123743\t2.29978649016219\t-1.04786389277271\t0.0673332449001132\t-0.0371298860750165\t-0.190086855611152\t0.569211538833251\t0.919033137444811\t0.0635277673597158\t1.00004676925338\t0.463824012820739\t-0.661533287421813\t-0.532636001812366\t0.13594592076042\t0.353092106176299\t0.362734586198694\t0.648858597916376\t-0.947487352382305\t-0.890204579930725\t-0.481659475836321\t-0.382386249884642\t-0.565389965376474\t0.69470847650723\t0.565209012057139\t-0.594122862421382\t0.374110007433118\t0.906000246931211\t1.14643222017558\t-0.864426844788516\t-0.107902667694253\t-1.33878812133165\t-0.648727117620733\t-0.682898186419176\t0.152703116395545\t1.18647033835958\t-0.730347642632863\t0.355381103259185\n'
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/loomtest.loom
b
Binary file test-data/loomtest.loom has changed
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/rows.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rows.tsv Mon Jan 06 13:45:39 2020 -0500
b
@@ -0,0 +1,10 @@
+Gene Protein Testing Testing2
+0 0 3 15
+1 1 4 16
+2 2 5 17
+3 3 6 18
+4 4 7 19
+5 5 8 20
+6 6 9 21
+7 7 10 22
+8 8 11 23
b
diff -r 6a1a3dab235a -r 286a24ac079c test-data/secondlayer.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/secondlayer.tsv Mon Jan 06 13:45:39 2020 -0500
b
@@ -0,0 +1,9 @@
+0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0
+100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 120.0 121.0 122.0 123.0 124.0 125.0 126.0 127.0 128.0 129.0 130.0 131.0 132.0 133.0 134.0 135.0 136.0 137.0 138.0 139.0 140.0 141.0 142.0 143.0 144.0 145.0 146.0 147.0 148.0 149.0 150.0 151.0 152.0 153.0 154.0 155.0 156.0 157.0 158.0 159.0 160.0 161.0 162.0 163.0 164.0 165.0 166.0 167.0 168.0 169.0 170.0 171.0 172.0 173.0 174.0 175.0 176.0 177.0 178.0 179.0 180.0 181.0 182.0 183.0 184.0 185.0 186.0 187.0 188.0 189.0 190.0 191.0 192.0 193.0 194.0 195.0 196.0 197.0 198.0 199.0
+200.0 201.0 202.0 203.0 204.0 205.0 206.0 207.0 208.0 209.0 210.0 211.0 212.0 213.0 214.0 215.0 216.0 217.0 218.0 219.0 220.0 221.0 222.0 223.0 224.0 225.0 226.0 227.0 228.0 229.0 230.0 231.0 232.0 233.0 234.0 235.0 236.0 237.0 238.0 239.0 240.0 241.0 242.0 243.0 244.0 245.0 246.0 247.0 248.0 249.0 250.0 251.0 252.0 253.0 254.0 255.0 256.0 257.0 258.0 259.0 260.0 261.0 262.0 263.0 264.0 265.0 266.0 267.0 268.0 269.0 270.0 271.0 272.0 273.0 274.0 275.0 276.0 277.0 278.0 279.0 280.0 281.0 282.0 283.0 284.0 285.0 286.0 287.0 288.0 289.0 290.0 291.0 292.0 293.0 294.0 295.0 296.0 297.0 298.0 299.0
+300.0 301.0 302.0 303.0 304.0 305.0 306.0 307.0 308.0 309.0 310.0 311.0 312.0 313.0 314.0 315.0 316.0 317.0 318.0 319.0 320.0 321.0 322.0 323.0 324.0 325.0 326.0 327.0 328.0 329.0 330.0 331.0 332.0 333.0 334.0 335.0 336.0 337.0 338.0 339.0 340.0 341.0 342.0 343.0 344.0 345.0 346.0 347.0 348.0 349.0 350.0 351.0 352.0 353.0 354.0 355.0 356.0 357.0 358.0 359.0 360.0 361.0 362.0 363.0 364.0 365.0 366.0 367.0 368.0 369.0 370.0 371.0 372.0 373.0 374.0 375.0 376.0 377.0 378.0 379.0 380.0 381.0 382.0 383.0 384.0 385.0 386.0 387.0 388.0 389.0 390.0 391.0 392.0 393.0 394.0 395.0 396.0 397.0 398.0 399.0
+400.0 401.0 402.0 403.0 404.0 405.0 406.0 407.0 408.0 409.0 410.0 411.0 412.0 413.0 414.0 415.0 416.0 417.0 418.0 419.0 420.0 421.0 422.0 423.0 424.0 425.0 426.0 427.0 428.0 429.0 430.0 431.0 432.0 433.0 434.0 435.0 436.0 437.0 438.0 439.0 440.0 441.0 442.0 443.0 444.0 445.0 446.0 447.0 448.0 449.0 450.0 451.0 452.0 453.0 454.0 455.0 456.0 457.0 458.0 459.0 460.0 461.0 462.0 463.0 464.0 465.0 466.0 467.0 468.0 469.0 470.0 471.0 472.0 473.0 474.0 475.0 476.0 477.0 478.0 479.0 480.0 481.0 482.0 483.0 484.0 485.0 486.0 487.0 488.0 489.0 490.0 491.0 492.0 493.0 494.0 495.0 496.0 497.0 498.0 499.0
+500.0 501.0 502.0 503.0 504.0 505.0 506.0 507.0 508.0 509.0 510.0 511.0 512.0 513.0 514.0 515.0 516.0 517.0 518.0 519.0 520.0 521.0 522.0 523.0 524.0 525.0 526.0 527.0 528.0 529.0 530.0 531.0 532.0 533.0 534.0 535.0 536.0 537.0 538.0 539.0 540.0 541.0 542.0 543.0 544.0 545.0 546.0 547.0 548.0 549.0 550.0 551.0 552.0 553.0 554.0 555.0 556.0 557.0 558.0 559.0 560.0 561.0 562.0 563.0 564.0 565.0 566.0 567.0 568.0 569.0 570.0 571.0 572.0 573.0 574.0 575.0 576.0 577.0 578.0 579.0 580.0 581.0 582.0 583.0 584.0 585.0 586.0 587.0 588.0 589.0 590.0 591.0 592.0 593.0 594.0 595.0 596.0 597.0 598.0 599.0
+600.0 601.0 602.0 603.0 604.0 605.0 606.0 607.0 608.0 609.0 610.0 611.0 612.0 613.0 614.0 615.0 616.0 617.0 618.0 619.0 620.0 621.0 622.0 623.0 624.0 625.0 626.0 627.0 628.0 629.0 630.0 631.0 632.0 633.0 634.0 635.0 636.0 637.0 638.0 639.0 640.0 641.0 642.0 643.0 644.0 645.0 646.0 647.0 648.0 649.0 650.0 651.0 652.0 653.0 654.0 655.0 656.0 657.0 658.0 659.0 660.0 661.0 662.0 663.0 664.0 665.0 666.0 667.0 668.0 669.0 670.0 671.0 672.0 673.0 674.0 675.0 676.0 677.0 678.0 679.0 680.0 681.0 682.0 683.0 684.0 685.0 686.0 687.0 688.0 689.0 690.0 691.0 692.0 693.0 694.0 695.0 696.0 697.0 698.0 699.0
+700.0 701.0 702.0 703.0 704.0 705.0 706.0 707.0 708.0 709.0 710.0 711.0 712.0 713.0 714.0 715.0 716.0 717.0 718.0 719.0 720.0 721.0 722.0 723.0 724.0 725.0 726.0 727.0 728.0 729.0 730.0 731.0 732.0 733.0 734.0 735.0 736.0 737.0 738.0 739.0 740.0 741.0 742.0 743.0 744.0 745.0 746.0 747.0 748.0 749.0 750.0 751.0 752.0 753.0 754.0 755.0 756.0 757.0 758.0 759.0 760.0 761.0 762.0 763.0 764.0 765.0 766.0 767.0 768.0 769.0 770.0 771.0 772.0 773.0 774.0 775.0 776.0 777.0 778.0 779.0 780.0 781.0 782.0 783.0 784.0 785.0 786.0 787.0 788.0 789.0 790.0 791.0 792.0 793.0 794.0 795.0 796.0 797.0 798.0 799.0
+800.0 801.0 802.0 803.0 804.0 805.0 806.0 807.0 808.0 809.0 810.0 811.0 812.0 813.0 814.0 815.0 816.0 817.0 818.0 819.0 820.0 821.0 822.0 823.0 824.0 825.0 826.0 827.0 828.0 829.0 830.0 831.0 832.0 833.0 834.0 835.0 836.0 837.0 838.0 839.0 840.0 841.0 842.0 843.0 844.0 845.0 846.0 847.0 848.0 849.0 850.0 851.0 852.0 853.0 854.0 855.0 856.0 857.0 858.0 859.0 860.0 861.0 862.0 863.0 864.0 865.0 866.0 867.0 868.0 869.0 870.0 871.0 872.0 873.0 874.0 875.0 876.0 877.0 878.0 879.0 880.0 881.0 882.0 883.0 884.0 885.0 886.0 887.0 888.0 889.0 890.0 891.0 892.0 893.0 894.0 895.0 896.0 897.0 898.0 899.0
b
diff -r 6a1a3dab235a -r 286a24ac079c tsv_to_loompy.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsv_to_loompy.py Mon Jan 06 13:45:39 2020 -0500
[
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+"""This module converts a tsv file into a binary loom file"""
+
+import argparse
+import os
+
+import loompy
+import numpy as np
+
+parser = argparse.ArgumentParser(description="Loompy file converter flags")
+parser.add_argument('--VERSION', action='version', version='%(prog)s 0.1.0',
+                    help="Displays tool version")
+parser.add_argument('--rowfile', '-r', help="File of row attributes & values")
+parser.add_argument('--colfile', '-c',
+                    help="File of column attributes and values")
+parser.add_argument('--output', '-o', help="Output file name")
+parser.add_argument('--files', '-f', nargs='*',
+                    help="Input tsv files. First file becomes main layer.")
+args = parser.parse_args()
+
+colsfile = args.colfile
+rowsfile = args.rowfile
+if args.output:
+    filename = args.output
+else:
+    filename = "converted.loom"
+alldata = args.files
+alayers = []
+layernames = []
+rowdict = {}
+coldict = {}
+
+#  Creates dictionary based on row file
+#  For each attribute:
+#  Attribute: [attribute values]
+with open(rowsfile, "r") as rows:
+    count = 0
+    for line in rows:
+        line = line.strip().split("\t")
+        if count == 0:  # First time through
+            row_attributes = line
+            for x in row_attributes:
+                rowdict[x] = []
+            count += 1
+        else:
+            for x in range(0, len(line)):
+                rowdict[row_attributes[x]].append(line[x])
+#  Same as above, but for columns
+with open(colsfile, "r") as cols:
+    count = 0
+    for line in cols:
+        line = line.replace('\"', "")
+        line = line.replace(' ', "")
+        line = line.strip().split("\t")
+        if count == 0:  # First time through
+            col_attributes = line
+            for x in col_attributes:
+                coldict[x] = []
+            count += 1
+        else:
+            for x in range(0, len(line)):
+                coldict[col_attributes[x]].append(line[x])
+#  Finding dimensions for the loom layers
+rowshape = len(rowdict[list(rowdict.keys())[0]])
+colshape = len(coldict[list(coldict.keys())[0]])
+
+#  Creates a list with each element being entire matrix of
+#  each layer file as floats
+for file in range(0, len(alldata)):
+    layer = alldata[file][:-4]
+    layer = layer.split("/")[-1]
+    if layer == "":
+        raise Exception("Please only use named files")
+    layernames.append(layer)
+    cfile = alldata[file]
+    with open(cfile, "r") as tsv:
+        cmatrix = []
+        for line in tsv:
+            line = line.strip().split("\t")
+            line = [float(i) for i in line]
+            cmatrix += line
+        alayers.append(cmatrix)
+
+#  Loompy cannot overwright existing files. If somehow it finds
+#  a second file with the same name, it must be deleted
+if os.path.isfile(filename):
+    os.remove(filename)
+#  To create the file properly, the first row and column attributes must be
+#  added separately in the form of individual dictionaries
+row_attrs = {row_attributes[0]: np.asarray(rowdict[row_attributes[0]])}
+col_attrs = {col_attributes[0]: np.asarray(coldict[col_attributes[0]])}
+matrix = np.asarray(alayers[0])
+matrix = matrix.astype(float)
+matrix = matrix.reshape(rowshape, colshape)
+#  Creation of initial loom file
+if "loom" not in filename[-5:]:
+    filename = filename + ".loom"
+loompy.create(filename, matrix, row_attrs, col_attrs)
+#  Adding all row and column attributes, then all layers
+with loompy.connect(filename) as loomfile:
+    for x in row_attributes:
+        loomfile.ra[x] = rowdict[x]
+    for y in col_attributes:
+        loomfile.ca[y] = coldict[y]
+    for z in range(1, len(alayers)):
+        matrix = np.asarray(alayers[z])
+        matrix = matrix.astype(float)
+        matrix = matrix.reshape(rowshape, colshape)
+        loomfile[layernames[z]] = matrix