changeset 3:064056f47ff2 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/music/ commit 20f8561478535013e111d982b99639f48f1bea79"
author bgruening
date Sat, 29 Jan 2022 12:49:59 +0000
parents 1eb4f2f83579
children 46fb28053b12
files macros.xml music-deconvolution.xml scripts/dendrogram.R scripts/estimateprops.R scripts/inspect.R test-data/default_output_no_disease.pdf test-data/mouse_scrna_exprs.tabular test-data/mouse_scrna_pheno.tabular
diffstat 8 files changed, 400 insertions(+), 148 deletions(-) [+]
line wrap: on
line diff
--- a/macros.xml	Tue Nov 30 13:05:47 2021 +0000
+++ b/macros.xml	Sat Jan 29 12:49:59 2022 +0000
@@ -1,9 +1,14 @@
 <macros>
-    <token name="@VERSION_SUFFIX@">1</token>
+    <token name="@VERSION_SUFFIX@">2</token>
     <!-- The ESet inspector/constructor and MuSiC tool can have
          independent Galaxy versions but should reference the same
          package version always. -->
     <token name="@TOOL_VERSION@">0.1.1</token>
+    <token name="@RDATATYPE@">rdata</token>
+    <!-- Below is disabled until Galaxy supports it. Still not present
+         in 21.09
+         <token name="@RDATATYPE@">rdata.eset</token>
+    -->
     <xml name="requirements">
         <requirements>
             <requirement type="package" version="@TOOL_VERSION@" >music-deconvolution</requirement>
--- a/music-deconvolution.xml	Tue Nov 30 13:05:47 2021 +0000
+++ b/music-deconvolution.xml	Sat Jan 29 12:49:59 2022 +0000
@@ -1,5 +1,5 @@
 <tool id="music_deconvolution" name="MuSiC" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@"
-      profile="20.09" license="GPL-3.0-or-later" >
+      profile="21.09" license="GPL-3.0-or-later" >
     <description>estimate cell type proportions in bulk RNA-seq data</description>
     <macros>
         <import>macros.xml</import>
@@ -25,20 +25,27 @@
 
 bulk_eset = readRDS('$bulk_eset')
 scrna_eset = readRDS('$scrna_eset')
+use_disease_factor = FALSE
+maxyscale = NA
 
 #if str($do.method) == "estimateprops":
 
+maxyscale = as.numeric('$do.maxyscale')  ## yields "NA" if blank
 phenotype_factors = null_str_vec('$do.phenotype_factors')
 phenotype_factors_always_exclude = null_str_vec('$do.phenotype_factors_always_exclude')
 celltypes_label = null_str_vec('$do.celltypes_label')
 samples_label = null_str_vec('$do.samples_label')
 celltypes = null_str_vec('$do.celltypes')
 methods = c("MuSiC", "NNLS")
-phenotype_target = null_str_vec('$do.phenotype_target')
-phenotype_target_threshold = as.numeric('$do.phenotype_target_threshold')
-sample_disease_group = null_str_vec('$do.sample_disease_group')
-sample_disease_group_scale = as.integer('$do.sample_disease_group_scale')
-compare_title = null_str_vec('$do.compare_title')
+
+    #if str($do.disease_factor.use) == "yes":
+use_disease_factor = TRUE
+phenotype_scrna_target = null_str_vec('$do.disease_factor.phenotype_scrna_target')
+phenotype_target = null_str_vec('$do.disease_factor.phenotype_target')
+phenotype_target_threshold = as.numeric('$do.disease_factor.phenotype_target_threshold')
+sample_disease_group = null_str_vec('$do.disease_factor.sample_disease_group')
+sample_disease_group_scale = as.integer('$do.disease_factor.sample_disease_group_scale')
+    #end if
 
 outfile_pdf='$out_pdf'
 
@@ -54,11 +61,11 @@
         #if $i == 0:
         $repeat.cluster_id = list(cell.types = null_str_vec('$repeat.celltypes'),
             marker.names = null_str_vec('$repeat.marker_name'),
-                     marker.list = read_list('$repeat.marker_list'))
+            marker.list = read_list('$repeat.marker_list'))
         #else
         , $repeat.cluster_id = list(cell.types = null_str_vec('$repeat.celltypes'),
-                     marker.names = null_str_vec('$repeat.marker_name'),
-                     marker.list = read_list('$repeat.marker_list'))
+            marker.names = null_str_vec('$repeat.marker_name'),
+            marker.list = read_list('$repeat.marker_list'))
         #end if
     #end for
 )
@@ -73,8 +80,8 @@
         </configfile>
     </configfiles>
     <inputs>
-        <param name="scrna_eset" label="scRNA Dataset" type="data" format="rdata.eset" />
-        <param name="bulk_eset" label="Bulk RNA Dataset" type="data" format="rdata.eset" />
+        <param name="scrna_eset" label="scRNA Dataset" type="data" format="@RDATATYPE@" />
+        <param name="bulk_eset" label="Bulk RNA Dataset" type="data" format="@RDATATYPE@" />
         <conditional name="do" >
             <param name="method" type="select" label="Purpose" >
                 <!-- The values here correspond to script names in the scripts folder
@@ -103,24 +110,36 @@
                        value="sampleID,SubjectName" >
                     <expand macro="validator_index_identifiers" />
                 </param>
-                <param name="phenotype_target" type="text" label="Phenotype Target"
-                       help="MUST exist in the bulk RNA datasets phenotype factors, as above." >
-                    <expand macro="validator_text" />
-                </param>
-                <param name="phenotype_target_threshold" type="float" label="Phenotype Target Threshold"
-                       value="-99"
-                       help="The (%) threshold at which the phenotype target manifests. Leave at -99 to select all." >
-                </param>
-                <param name="sample_disease_group" type="text" label="Sample Disease Group"
-                       help="MUST exist in the sample_groups above." >
-                    <expand macro="validator_text" />
-                </param>
-                <param name="sample_disease_group_scale" type="integer"
-                       label="Sample Disease Group (Scale)" value="5"
-                       help="Used to accentutate certain features in the plots. Increase this number to reduce the effect." />
-                <param name="compare_title" type="text" label="Plot Title" >
-                    <expand macro="validator_text" />
-                </param>
+                <conditional name="disease_factor" >
+                    <param name="use" type="select" label="Show proportions of a disease factor?" >
+                        <option value="no" selected="true" >No</option>
+                        <option value="yes" >Yes</option>
+                    </param>
+                    <when value="no" ></when>
+                    <when value="yes" >
+                        <param name="phenotype_scrna_target" type="text" label="scRNA Phenotype Cell Target"
+                               help="The name of a target scRNA cell type to select in the phenotype comparison." >
+                            <expand macro="validator_text" />
+                        </param>
+                        <param name="phenotype_target" type="text" label="Bulk Phenotype Target"
+                               help="MUST exist in the bulk RNA datasets phenotype factors as above." >
+                            <expand macro="validator_text" />
+                        </param>
+                        <param name="phenotype_target_threshold" type="float" label="Bulk Phenotype Target Threshold"
+                               value="-99"
+                               help="The (%) threshold at which the phenotype target manifests. Leave at -99 to select all." >
+                        </param>
+                        <param name="sample_disease_group" type="text" label="scRNA Sample Disease Group"
+                               help="Name for target disease group, ideally a value from the scRNA phenotype factor data" >
+                            <expand macro="validator_text" />
+                        </param>
+                        <param name="sample_disease_group_scale" type="integer"
+                               label="scRNA Sample Disease Group (Scale)" value="5"
+                               help="Used to accentutate certain features in the plots. Increase this number to reduce the effect." />
+                    </when>
+                </conditional>
+                <param name="maxyscale" type="float" min="0" value="" optional="true"
+                       label="Scale all Y-axes to max limit" help="Leave blank to autoscale each plot."/>
             </when>
             <when value="dendrogram" >
                 <param name="celltypes_label" type="text" value="cellType"
@@ -156,14 +175,14 @@
     <outputs>
         <data name="out_pdf" format="pdf" label="${tool.name} on ${on_string}: PDF Plots" />
         <data name="out_tab" format="tabular" label="${tool.name} on ${on_string}: Cell Proportions by Sample" >
-            <filter>do["method"] == "dendrogram" and len(do["cluster_groups"]) > 0</filter>
+            <filter>do["method"] == "dendrogram" and len(do["cluster_groups"]) >0</filter>
         </data>
         <collection name="props" type="list" label="${tool.name} on ${on_string}: Proportion Matrices" >
             <filter>do["method"] == "estimateprops"</filter>
             <discover_datasets pattern="prop_(?P&lt;designation&gt;.+)\.tabular" format="tabular" directory="report_data" />
         </collection>
         <collection name="summaries" type="list" label="${tool.name} on ${on_string}: Summaries and Logs">
-            <filter>do["method"] == "estimateprops"</filter>
+            <filter>do["method"] == "estimateprops" and do["disease_factor"]["use"] == "yes"</filter>
             <discover_datasets pattern="summ_(?P&lt;designation&gt;.+)\.txt" format="txt" directory="report_data" />
             <discover_datasets pattern="varprop_(?P&lt;designation&gt;.+)\.tabular" format="tabular" directory="report_data" />
             <discover_datasets pattern="rsquared_(?P&lt;designation&gt;.+)\.tabular" format="tabular" directory="report_data" />
@@ -221,6 +240,18 @@
                 </assert_contents>
             </output>
         </test>
+        <test expect_num_outputs="2" >
+            <!-- Estimate Proportions: no disease factor, no fitting reports -->
+            <param name="bulk_eset" value="GSE50244bulkeset.subset.rds" />
+            <param name="scrna_eset" value="EMTABesethealthy.subset.rds" />
+            <conditional name="do" >
+                <param name="method" value="estimateprops" />
+                <param name="celltypes_label" value="cellType" />
+                <param name="samples_label" value="sampleID" />
+                <param name="disease_factor" value="no" />
+            </conditional>
+            <output name="out_pdf" value="default_output_no_disease.pdf" compare="sim_size" />
+        </test>
         <test expect_num_outputs="3" >
             <!-- Estimate Proportions test -->
             <param name="bulk_eset" value="GSE50244bulkeset.subset.rds" />
@@ -230,12 +261,15 @@
                 <param name="celltypes_label" value="cellType" />
                 <param name="samples_label" value="sampleID" />
                 <param name="celltypes" value="alpha,beta,delta,gamma,acinar,ductal" />
-                <param name="phenotype_factors" value="age,bmi,hba1c,gender" />
-                <param name="phenotype_target" value="hba1c" />
-                <param name="phenotype_target_threshold" value="6.5" />
-                <param name="sample_disease_group" value="T2D" />
-                <param name="sample_disease_group_scale" value="5" />
-                <param name="compare_title" value="HbA1c vs Beta Cell Type Proportion" />
+                <conditional name="disease_factor" >
+                    <param name="use" value="yes" />
+                    <param name="phenotype_scrna_target" value="beta" />
+                    <param name="phenotype_factors" value="age,bmi,hba1c,gender" />
+                    <param name="phenotype_target" value="hba1c" />
+                    <param name="phenotype_target_threshold" value="6.5" />
+                    <param name="sample_disease_group" value="T2D" />
+                    <param name="sample_disease_group_scale" value="5" />
+                </conditional>
             </conditional>
             <output name="out_pdf" value="default_output.pdf" compare="sim_size" />
             <output_collection name="summaries" count="5">
@@ -257,10 +291,8 @@
 
 Solid tissues often contain closely related cell types which leads to collinearity. To deal with collinearity, MuSiC employs a tree-guided procedure that recursively zooms in on closely related cell types. Briefly, we first group similar cell types into the same cluster and estimate cluster proportions, then recursively repeat this procedure within each cluster.
 
-.. image:: $PATH_TO_IMAGES/FigureMethod.jpg
-
     ]]></help>
     <citations>
         <citation type="doi">https://doi.org/10.1038/s41467-018-08023-x</citation>
     </citations>
-</tool>
+</tool>
\ No newline at end of file
--- a/scripts/dendrogram.R	Tue Nov 30 13:05:47 2021 +0000
+++ b/scripts/dendrogram.R	Sat Jan 29 12:49:59 2022 +0000
@@ -10,7 +10,7 @@
     if (lfile == "None") {
         return(NULL)
     }
-    return(read.table(file = lfile, header = FALSE,
+    return(read.table(file = lfile, header = FALSE, check.names = FALSE,
                       stringsAsFactors = FALSE)$V1)
 }
 
--- a/scripts/estimateprops.R	Tue Nov 30 13:05:47 2021 +0000
+++ b/scripts/estimateprops.R	Sat Jan 29 12:49:59 2022 +0000
@@ -17,13 +17,21 @@
 estimated_music_props <- est_prop$Est.prop.weighted
 estimated_nnls_props <- est_prop$Est.prop.allgene
 
+scale_yaxes <- function(gplot, value) {
+    if (is.na(value)) {
+        gplot
+    } else {
+        gplot + scale_y_continuous(lim = c(0, value))
+    }
+}
+
 ## Show different in estimation methods
 ## Jitter plot of estimated cell type proportions
-jitter_fig <- Jitter_Est(
+jitter_fig <- scale_yaxes(Jitter_Est(
     list(data.matrix(estimated_music_props),
          data.matrix(estimated_nnls_props)),
     method.name = methods, title = "Jitter plot of Est Proportions",
-    size = 2, alpha = 0.7) + theme_minimal()
+    size = 2, alpha = 0.7) + theme_minimal(), maxyscale)
 
 
 ## Make a Plot
@@ -42,11 +50,6 @@
     message(celltypes)
 }
 
-if (phenotype_target_threshold == -99) {
-    phenotype_target_threshold <- -Inf
-    message("phenotype target threshold set to -Inf")
-}
-
 if (is.null(phenotype_factors)) {
     phenotype_factors <- colnames(pData(bulk_eset))
 }
@@ -54,67 +57,94 @@
 phenotype_factors <- phenotype_factors[
     !(phenotype_factors %in% phenotype_factors_always_exclude)]
 message("Phenotype Factors to use:")
-message(phenotype_factors)
-
+message(paste0(phenotype_factors, collapse = ", "))
 
 m_prop$CellType <- factor(m_prop$CellType, levels = celltypes) # nolint
 m_prop$Method <- factor(rep(methods, each = nrow(estimated_music_props_flat)), # nolint
                         levels = methods)
-m_prop$Disease_factor <- rep(bulk_eset[[phenotype_target]], 2 * length(celltypes)) # nolint
-m_prop <- m_prop[!is.na(m_prop$Disease_factor), ]
-## Generate a TRUE/FALSE table of Normal == 1 and Disease == 2
-sample_groups <- c("Normal", sample_disease_group)
-m_prop$Disease <- factor(sample_groups[(m_prop$Disease_factor > phenotype_target_threshold) + 1], # nolint
-                         levels = sample_groups)
+
+if (use_disease_factor) {
+
+    if (phenotype_target_threshold == -99) {
+        phenotype_target_threshold <- -Inf
+        message("phenotype target threshold set to -Inf")
+    }
+
+    m_prop$Disease_factor <- rep(bulk_eset[[phenotype_target]], 2 * length(celltypes)) # nolint
+    m_prop <- m_prop[!is.na(m_prop$Disease_factor), ]
+    ## Generate a TRUE/FALSE table of Normal == 1 and Disease == 2
+    sample_groups <- c("Normal", sample_disease_group)
+    m_prop$Disease <- factor(sample_groups[(m_prop$Disease_factor > phenotype_target_threshold) + 1], # nolint
+                             levels = sample_groups)
 
-## Binary to scale: e.g. TRUE / 5 = 0.2
-m_prop$D <- (m_prop$Disease ==   # nolint
-             sample_disease_group) / sample_disease_group_scale
-## NA's are not included in the comparison below
-m_prop <- rbind(subset(m_prop, Disease != sample_disease_group),
-               subset(m_prop, Disease == sample_disease_group))
+    ## Binary to scale: e.g. TRUE / 5 = 0.2
+    m_prop$D <- (m_prop$Disease ==   # nolint
+                 sample_disease_group) / sample_disease_group_scale
+    ## NA's are not included in the comparison below
+    m_prop <- rbind(subset(m_prop, Disease != sample_disease_group),
+                    subset(m_prop, Disease == sample_disease_group))
 
-jitter_new <- ggplot(m_prop, aes(Method, Prop)) +
-    geom_point(aes(fill = Method, color = Disease, stroke = D, shape = Disease),
-               size = 2, alpha = 0.7,
-               position = position_jitter(width = 0.25, height = 0)) +
-    facet_wrap(~ CellType, scales = "free") +
-    scale_colour_manual(values = c("white", "gray20")) +
-    scale_shape_manual(values = c(21, 24)) + theme_minimal()
+    jitter_new <- scale_yaxes(ggplot(m_prop, aes(Method, Prop)) +
+        geom_point(aes(fill = Method, color = Disease, stroke = D, shape = Disease),
+                   size = 2, alpha = 0.7,
+                   position = position_jitter(width = 0.25, height = 0)) +
+        facet_wrap(~ CellType, scales = "free") +
+        scale_colour_manual(values = c("white", "gray20")) +
+        scale_shape_manual(values = c(21, 24)) + theme_minimal(), maxyscale)
+
+}
+
+if (use_disease_factor) {
 
-## Plot to compare method effectiveness
-## Create dataframe for beta cell proportions and Disease_factor levels
-m_prop_ana <- data.frame(pData(bulk_eset)[rep(1:nrow(estimated_music_props), 2), #nolint
-                                          phenotype_factors],
-                        ct.prop = c(estimated_music_props[, 2],
-                                    estimated_nnls_props[, 2]),
-                        Method = factor(rep(methods,
-                                            each = nrow(estimated_music_props)),
-                                        levels = methods))
-colnames(m_prop_ana)[1:length(phenotype_factors)] <- phenotype_factors #nolint
-m_prop_ana <- subset(m_prop_ana, !is.na(m_prop_ana[phenotype_target]))
-m_prop_ana$Disease <- factor(sample_groups[(  # nolint
-    m_prop_ana[phenotype_target] > phenotype_target_threshold) + 1],
-    sample_groups)
-m_prop_ana$D <- (m_prop_ana$Disease ==        # nolint
-                 sample_disease_group) / sample_disease_group_scale
+    ## Plot to compare method effectiveness
+    ## Create dataframe for beta cell proportions and Disease_factor levels
+    ## - Ugly code. Essentially, doubles the cell type proportions for each
+    ##   set of MuSiC and NNLS methods
+    m_prop_ana <- data.frame(pData(bulk_eset)[rep(1:nrow(estimated_music_props), 2), #nolint
+                                              phenotype_factors],
+                             ## get proportions of target cell type
+                             ct.prop = c(estimated_music_props[, phenotype_scrna_target],
+                                         estimated_nnls_props[, phenotype_scrna_target]),
+                             ##
+                             Method = factor(rep(methods,
+                                                 each = nrow(estimated_music_props)),
+                                             levels = methods))
+    ## - fix headers
+    colnames(m_prop_ana)[1:length(phenotype_factors)] <- phenotype_factors #nolint
+    ## - drop NA for target phenotype (e.g. hba1c)
+    m_prop_ana <- subset(m_prop_ana, !is.na(m_prop_ana[phenotype_target]))
+    m_prop_ana$Disease <- factor(   # nolint
+        ## - Here we set Normal/Disease assignments across the two MuSiC and NNLS methods
+        sample_groups[(
+            m_prop_ana[phenotype_target] > phenotype_target_threshold) + 1
+            ],
+        sample_groups)
+    ## - Then we scale this binary assignment to a plotable factor
+    m_prop_ana$D <- (m_prop_ana$Disease ==        # nolint
+                     sample_disease_group) / sample_disease_group_scale
 
-jitt_compare <- ggplot(m_prop_ana, aes_string(phenotype_target, "ct.prop")) +
-    geom_smooth(method = "lm",  se = FALSE, col = "black", lwd = 0.25) +
-    geom_point(aes(fill = Method, color = Disease, stroke = D, shape = Disease),
-               size = 2, alpha = 0.7) +  facet_wrap(~ Method) +
-    ggtitle(compare_title) + theme_minimal() +
-    scale_colour_manual(values = c("white", "gray20")) +
-    scale_shape_manual(values = c(21, 24))
+    jitt_compare <- scale_yaxes(ggplot(m_prop_ana, aes_string(phenotype_target, "ct.prop")) +
+        geom_smooth(method = "lm",  se = FALSE, col = "black", lwd = 0.25) +
+        geom_point(aes(fill = Method, color = Disease, stroke = D, shape = Disease),
+                   size = 2, alpha = 0.7) +  facet_wrap(~ Method) +
+        ggtitle(paste0(toupper(phenotype_target), " vs. ",
+                       toupper(phenotype_scrna_target), " Cell Type Proportion")) +
+        theme_minimal() +
+        ylab(paste0("Proportion of ",
+                    phenotype_scrna_target, " cells")) +
+        xlab(paste0("Level of bulk factor (", phenotype_target, ")")) +
+        scale_colour_manual(values = c("white", "gray20")) +
+        scale_shape_manual(values = c(21, 24)), maxyscale)
+}
 
 ## BoxPlot
-plot_box <- Boxplot_Est(list(
+plot_box <- scale_yaxes(Boxplot_Est(list(
     data.matrix(estimated_music_props),
     data.matrix(estimated_nnls_props)),
     method.name = c("MuSiC", "NNLS")) +
     theme(axis.text.x = element_text(angle = -90),
           axis.text.y = element_text(size = 8)) +
-    ggtitle(element_blank()) + theme_minimal()
+    ggtitle(element_blank()) + theme_minimal(), maxyscale)
 
 ## Heatmap
 plot_hmap <- Prop_heat_Est(list(
@@ -125,8 +155,15 @@
           axis.text.y = element_text(size = 6))
 
 pdf(file = outfile_pdf, width = 8, height = 8)
-plot_grid(jitter_fig, plot_box, labels = "auto", ncol = 1, nrow = 2)
-plot_grid(jitter_new, jitt_compare, labels = "auto", ncol = 1, nrow = 2)
+if (length(celltypes) <= 8) {
+    plot_grid(jitter_fig, plot_box, labels = "auto", ncol = 1, nrow = 2)
+} else {
+    print(jitter_fig)
+    plot_box
+}
+if (use_disease_factor) {
+    plot_grid(jitter_new, jitt_compare, labels = "auto", ncol = 1, nrow = 2)
+}
 plot_hmap
 message(dev.off())
 
@@ -159,29 +196,32 @@
             quote = F, sep = "\t", col.names = NA)
 
 
-## Summary table
-for (meth in methods) {
-    ##lm_beta_meth = lm(ct.prop ~ age + bmi + hba1c + gender, data =
-    sub_data <- subset(m_prop_ana, Method == meth)
-    ## We can only do regression where there are more than 1 factors
-    ## so we must find and exclude the ones which are not
-    gt1_facts <- sapply(phenotype_factors, function(facname) {
-        return(length(unique(sort(sub_data[[facname]]))) == 1)
-    })
-    form_factors <- phenotype_factors
-    exclude_facts <- names(gt1_facts)[gt1_facts]
-    if (length(exclude_facts) > 0) {
-        message("Factors with only one level will be excluded:")
-        message(exclude_facts)
-        form_factors <- phenotype_factors[
-            !(phenotype_factors %in% exclude_facts)]
+if (use_disease_factor) {
+    ## Summary table of linear regressions of disease factors
+    for (meth in methods) {
+        ##lm_beta_meth = lm(ct.prop ~ age + bmi + hba1c + gender, data =
+        sub_data <- subset(m_prop_ana, Method == meth)
+
+        ## We can only do regression where there are more than 1 factors
+        ## so we must find and exclude the ones which are not
+        gt1_facts <- sapply(phenotype_factors, function(facname) {
+            return(length(unique(sort(sub_data[[facname]]))) == 1)
+        })
+        form_factors <- phenotype_factors
+        exclude_facts <- names(gt1_facts)[gt1_facts]
+        if (length(exclude_facts) > 0) {
+            message("Factors with only one level will be excluded:")
+            message(exclude_facts)
+            form_factors <- phenotype_factors[
+                !(phenotype_factors %in% exclude_facts)]
+        }
+        lm_beta_meth <- lm(as.formula(
+            paste("ct.prop", paste(form_factors, collapse = " + "),
+                  sep = " ~ ")), data = sub_data)
+        message(paste0("Summary: ", meth))
+        capture.output(summary(lm_beta_meth),
+                       file = paste0("report_data/summ_Log of ",
+                                     meth,
+                                     " fitting.txt"))
     }
-    lm_beta_meth <- lm(as.formula(
-        paste("ct.prop", paste(form_factors, collapse = " + "),
-              sep = " ~ ")), data = sub_data)
-    message(paste0("Summary: ", meth))
-    capture.output(summary(lm_beta_meth),
-                   file = paste0("report_data/summ_Log of ",
-                                 meth,
-                                 " fitting.txt"))
 }
--- a/scripts/inspect.R	Tue Nov 30 13:05:47 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-
-suppressWarnings(suppressPackageStartupMessages(library(xbioc)))
-suppressWarnings(suppressPackageStartupMessages(library(MuSiC)))
-
-args <- commandArgs(trailingOnly = TRUE)
-source(args[1])
-
-printout <- function(text) {
-    if (typeof(text) %in% c("list", "vector", "integer", "double", "numeric")) {
-        write.table(text, file = outfile_tab, quote = F, sep = "\t",
-                    col.names = NA)
-    } else {
-        ## text
-        print(typeof(text))
-        capture.output(text, file = outfile_tab)  # nolint
-    }
-}
-
-if (inspector %in% c("print", "pData", "fData", "dims",
-                     "experimentData", "protocolData", "exprs",
-                     "signature", "annotation", "abstract")) {
-    op <- get(inspector)
-    tab <- op(rds_eset)
-    printout(tab)
-} else {
-    stop(paste0("No such option:", inspector))
-}
Binary file test-data/default_output_no_disease.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mouse_scrna_exprs.tabular	Sat Jan 29 12:49:59 2022 +0000
@@ -0,0 +1,101 @@
+	TGGTTCCGTCGGCTCA-2	CGAGCCAAGCGTCAAG-4	GAATGAAGTTTGGGCC-5	CTCGTACGTTGCCTCT-7	TTCTCAATCCACGCAG-5	CCTTCCCCATACCATG-4	ACTTTCACAGCTGGCT-7	TGGGAAGCAAAGTGCG-7	TCTATTGAGTAGGCCA-7	TCGGTAACATCACGTA-2	GGGTTGCCAGCTGTAT-2	TGCGGGTGTCATATCG-6	ACTTGTTTCATATCGG-5	CCAATCCCACGGCGTT-2	CTAAGACCACCAGGCT-7	TTAACTCAGTAGGCCA-6	GTACTCCGTAACGCGA-1	GCCTCTAGTTGTACAC-2	TTCGAAGTCCTGCAGG-3	TTCTACAAGTTGTAGA-7	CCGTTCAGTTGAACTC-7	GTGTTAGTCAGCTCGG-1	GGATTACGTGTGCGTC-6	TACGGTATCCGTTGTC-6	TTAGTTCGTATTAGCC-5	CCCAATCGTAGCGATG-3	ACACCAATCTGCGTAA-7	AATCCAGTCCAAACTG-7	CAGAATCAGCAATATG-1	GCACATAAGCCGGTAA-5	CCTTCCCAGGAGTTTA-5	CGGAGCTAGGACTGGT-5	TACGGATGTAAATGTG-4	GGCAATTCATTCACTT-2	CTCGGGAGTCTGCGGT-4	CATTCGCGTCCTCTTG-2	CGCGTTTAGATCGATA-1	GGGTTGCCACCAACCG-4	TGTGTTTCATCGATGT-2	AGAGTGGAGCTGTTCA-7	CTCACACGTCTCACCT-3	AGTTGGTTCCACGAAT-7	ATCTGCCAGACCACGA-6	TGTATTCCATTGAGCT-7	TGAAAGAGTAGCCTAT-7	AAATGCCAGAACTGTA-7	TTTGCGCTCTACCAGA-4	ACATACGGTTTCCACC-6	GCCTCTAGTTCCACAA-7	GGGAGATGTACTCTCC-6	GAACGGATCTTGTACT-7	TACCTTATCCTAGAAC-1	GCGCGATAGATGCCAG-2	GACAGAGCAAGTTGTC-7	TGACTAGGTATGAATG-3	CACACTCAGTCACGCC-6	ATTGGTGGTTAGGGTG-5	AGCAGCCCAGCGTAAG-2	CATTCGCAGCCTTGAT-6	GCGAGAACATAGACTC-2	AGTCTTTGTAATAGCA-7	TCGCGAGCAGACACTT-7	CGGAGTCCAGCAGTTT-2	GGTGTTACACACATGT-7	TTCTCAAGTAAGTGTA-2	TGCTGCTAGTCAATAG-2	GATGAGGTCTACCAGA-2	ACATACGGTTGTACAC-5	ACGAGGACAGCTATTG-7	CGATGTATCGGCGGTT-2	CTGCGGATCACAACGT-2	CGAACATAGTTGAGTA-5	TAGTTGGTCGCGATCG-6	GCAGCCACAATGTAAG-4	CTCACACCAATAACGA-7	CCTTTCTCATGAAGTA-2	AGTGTCAAGAGCAATT-7	AGCATACGTAAAGGAG-1	ACACCAATCTCGCTTG-5	GGGATGAGTATCAGTC-6	TGACAACAGAAGCCCA-2	CGAATGTTCACAATGC-1	GCACTCTTCCGCATAA-1	CACCAGGTCCCAAGAT-2	GTTACAGCACCGCTAG-6	TAGCCGGCAGTACACT-2	ACGATGTGTTAAAGAC-2	CCTTCCCAGTCTCGGC-7	TAGTGGTTCTCTGTCG-7	TAGCCGGAGGCTAGCA-5	TTGTAGGTCAGCACAT-1	GAATAAGCAGCTTCGG-7	TCGCGAGAGTCCGGTC-3	TCAACGAAGAGTAAGG-2	CAGGTGCCACGAAATA-5	TGTGTTTCACTATCTT-2	TGGCCAGAGTGAAGAG-6	ACCAGTAAGTAGCCGA-2	GCGGGTTAGAAGGTTT-1	CAGTCCTGTCATTAGC-2
+Rp1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Sox17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Mrpl15	0	0	0	1	0	0	1	0	0	0	0	0	1	0	0	0	0	1	2	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	2	0	0	0	0	0	0	1	0	0	0	0	0	1
+Lypla1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	1	2	0	1	1	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	1	2	0	1	1	0	0	1	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	1	0	1	0	0	0	1	0	0	0	0	0	0	0	1	0	0	1	2	0	0	0	6	2	0	2	0	0	2	0	2	0	1	1	0	0	0	0	0
+Gm37988	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tcea1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0
+Atp6v1h	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	2	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	1	0	0	1	0	0	0	1	0	0	0	0	0	3
+Rb1cc1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	1	2	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	1	2	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4732440D04Rik	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0
+Pcmtd1	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	1	0	0	1	0	1	0	0	1	0	0	0	0	0	1	0	0	0	0	0	1	1	1	0	0	1	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	1	0	0
+Gm26901	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Rrs1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Adhfe1	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	1	0	0	0	1	0	0	1	0	0	0	0	0	0	0	1	2	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	2	0	1	0	2	0	0	0	0	0	0	0	0	0	0	0	3	1	0	0	0	0	0	0	2	0	0	0	0	0	0	0	1
+Mybl1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Vcpip1	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1700034P13Rik	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Sgk3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Mcmdc2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Snhg6	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	1	0	2	1	0	0	0	0	2	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	2	0	0	0	0	1	0	0	0	0	0	0	0	0	4	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	1
+Tcf24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ppp1r42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Cops5	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	1	1	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0
+Cspp1	0	0	0	2	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	3	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	2
+Arfgef1	0	1	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	1	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	1	1	0	1	0	0	1	0	0	0	0	0
+Prex2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Sulf1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ncoa2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0
+Tram1	0	0	2	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	3	0	1	0	0	1	0	0	1	0	0	1	0	0	0	0	0	1	1	0	0	0	1	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	1	1	1	0	0	0	0	1	0	3	0	0	0	0	0
+Lactb2	0	0	0	1	0	0	0	0	1	0	0	2	0	0	0	0	2	0	6	1	0	2	1	0	2	0	0	0	3	0	1	0	1	0	0	0	0	0	0	0	3	3	0	3	2	0	1	1	1	0	0	0	1	1	0	0	0	0	0	0	0	1	0	0	0	0	0	4	0	0	0	4	0	1	1	0	0	0	0	2	0	0	0	3	3	0	0	1	0	0	0	4	0	0	3	0	0	1	0	2
+Xkr9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Eya1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Terf1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Sbspon	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4930444P10Rik	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Rpl7	0	1	2	2	1	2	0	0	0	0	2	0	6	2	2	0	1	0	18	1	2	0	0	1	4	2	2	1	0	2	6	3	1	2	7	4	1	0	0	2	2	3	0	0	6	1	1	0	0	3	0	1	2	7	2	0	2	6	1	3	1	4	3	4	3	0	0	10	0	0	2	4	2	0	1	1	0	2	2	12	7	0	0	10	4	2	7	3	1	4	1	5	4	2	9	2	2	0	0	2
+Rdh10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0
+Stau2	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0
+Ube2w	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	2	1	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tceb1	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	5	0	0	0	0	0	1	0	1	0	0	1	0	1	1	1	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	2	2	0	1	0	0	0	0	0	0	1	2	0	0	0	0	3	0	0	2	0	0	1	1	0	1	0	0	1	0	0	0	2
+D030040B21Rik	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tmem70	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	1	0	0	0	1	0	1	1	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	1	0	0	0	0	1	0	0	0	1	0	0	0	0	1	0	0	0	0	0
+Ly96	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Jph1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Crispld1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tfap2b	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1
+Pkhd1	0	0	1	2	1	0	4	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	2	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Il17f	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Mcm3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Paqr8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Efhc1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tram2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tmem14a	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Gsta3	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	3	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	1	0	0	0	0	0	1	0	1	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	3	0	0	0	0	0	0	0	0	0	0
+Khdc1a	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Kcnq5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Gm29107	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ogfrl1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+B3gat2	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Smap1	1	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	3	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	1	0	1	0	0	0	0	0	1	0	1	1	0	0	0	0	0	0	0	0	0	0
+Sdhaf4	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	1	0	1	1	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	1	0	1	0	0	0	0	1	3	1	0	0	1	1	0	0	0	0	1	0	1	0	0	1	0	0	0	0	2
+Fam135a	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Col19a1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Lmbrd1	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	2	0	0	0	0	0	0
+Gm5524	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Phf3	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0
+Ptp4a1	0	0	0	0	0	0	0	0	0	0	2	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	2	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
+Khdrbs2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Prim2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Rab23	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Bag2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	1	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Zfp451	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	2	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
+Bend6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Dst	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	3	0	0	0	0	0	1	1	0	1	0	0	0	0	0	0	0	1	0	0	2	0	0	1	0	1	0	0	0	0	0	0	0	1	1	0	0	1	0	0	0	0	0	0	0	0	0	0	2	0	1	1	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	7	0	0	0	0	0	0	0	0	0	0
+Gm37233	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ccdc115	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Imp4	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	0	0
+Ptpn18	0	0	0	0	0	0	0	0	0	0	0	0	3	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	3	0	0	0	0	0	0	0
+Arhgef4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0
+Gm38336	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Fam168b	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0
+Plekhb2	0	0	0	2	0	1	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	1	2	0	0	1	1	0	3	0	1	0	0	2	0	0	2	0	0	0	0	1	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	1	0	2	1	0	0	0	0	0	0	0	0	0	1	0	1	0	0	1	0	0	1	1	0
+Hs6st1	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	2	0	2	0	0	0	0	0	0	0	0	0	0	2	0	0
+Uggt1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
+Neurl3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Arid5a	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4930403P22Rik	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Kansl3	0	0	0	0	1	0	1	0	1	0	0	1	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	1	1	0	1	0	0	0	1	0	0	0	0	0	1	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0
+Lman2l	0	0	0	2	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0	0	2	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0
+Cnnm4	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Cnnm3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ankrd23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Ankrd39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1
+Sema4c	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Fam178b	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Cox5b	1	4	1	1	10	0	1	1	0	2	2	0	0	2	0	1	7	3	17	0	8	5	1	0	4	1	4	5	2	12	2	21	3	5	5	6	2	2	3	3	1	2	0	4	6	2	0	1	0	5	2	7	5	2	4	0	5	1	0	0	1	4	4	1	4	1	0	5	10	1	6	4	0	1	0	5	2	1	10	4	4	0	2	11	2	0	2	1	7	11	9	4	1	14	2	3	1	5	0	12
+Actr1b	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	1	1	2	0	0	0	0	1	0	0	2	0	0	0	0	1	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	1	1	1	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1	0	0
+Zap70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Tmem131	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	1	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Inpp4a	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0
+Coa5	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mouse_scrna_pheno.tabular	Sat Jan 29 12:49:59 2022 +0000
@@ -0,0 +1,101 @@
+	sampleID	SubjectName	cellTypeID	cellType
+TGGTTCCGTCGGCTCA-2	2	Mouse2	3	PT
+CGAGCCAAGCGTCAAG-4	4	Mouse4	5	DCT
+GAATGAAGTTTGGGCC-5	5	Mouse5	3	PT
+CTCGTACGTTGCCTCT-7	7	Mouse7	3	PT
+TTCTCAATCCACGCAG-5	5	Mouse5	4	LOH
+CCTTCCCCATACCATG-4	4	Mouse4	14	T lymph
+ACTTTCACAGCTGGCT-7	7	Mouse7	3	PT
+TGGGAAGCAAAGTGCG-7	7	Mouse7	3	PT
+TCTATTGAGTAGGCCA-7	7	Mouse7	3	PT
+TCGGTAACATCACGTA-2	2	Mouse2	3	PT
+GGGTTGCCAGCTGTAT-2	2	Mouse2	2	Podo
+TGCGGGTGTCATATCG-6	6	Mouse6	3	PT
+ACTTGTTTCATATCGG-5	5	Mouse5	14	T lymph
+CCAATCCCACGGCGTT-2	2	Mouse2	5	DCT
+CTAAGACCACCAGGCT-7	7	Mouse7	3	PT
+TTAACTCAGTAGGCCA-6	6	Mouse6	3	PT
+GTACTCCGTAACGCGA-1	1	Mouse1	3	PT
+GCCTCTAGTTGTACAC-2	2	Mouse2	3	PT
+TTCGAAGTCCTGCAGG-3	3	Mouse3	3	PT
+TTCTACAAGTTGTAGA-7	7	Mouse7	3	PT
+CCGTTCAGTTGAACTC-7	7	Mouse7	7	CD-IC
+GTGTTAGTCAGCTCGG-1	1	Mouse1	4	LOH
+GGATTACGTGTGCGTC-6	6	Mouse6	3	PT
+TACGGTATCCGTTGTC-6	6	Mouse6	3	PT
+TTAGTTCGTATTAGCC-5	5	Mouse5	3	PT
+CCCAATCGTAGCGATG-3	3	Mouse3	3	PT
+ACACCAATCTGCGTAA-7	7	Mouse7	5	DCT
+AATCCAGTCCAAACTG-7	7	Mouse7	5	DCT
+CAGAATCAGCAATATG-1	1	Mouse1	3	PT
+GCACATAAGCCGGTAA-5	5	Mouse5	5	DCT
+CCTTCCCAGGAGTTTA-5	5	Mouse5	3	PT
+CGGAGCTAGGACTGGT-5	5	Mouse5	4	LOH
+TACGGATGTAAATGTG-4	4	Mouse4	3	PT
+GGCAATTCATTCACTT-2	2	Mouse2	3	PT
+CTCGGGAGTCTGCGGT-4	4	Mouse4	6	CD-PC
+CATTCGCGTCCTCTTG-2	2	Mouse2	8	CD-Trans
+CGCGTTTAGATCGATA-1	1	Mouse1	6	CD-PC
+GGGTTGCCACCAACCG-4	4	Mouse4	7	CD-IC
+TGTGTTTCATCGATGT-2	2	Mouse2	3	PT
+AGAGTGGAGCTGTTCA-7	7	Mouse7	3	PT
+CTCACACGTCTCACCT-3	3	Mouse3	3	PT
+AGTTGGTTCCACGAAT-7	7	Mouse7	3	PT
+ATCTGCCAGACCACGA-6	6	Mouse6	3	PT
+TGTATTCCATTGAGCT-7	7	Mouse7	3	PT
+TGAAAGAGTAGCCTAT-7	7	Mouse7	3	PT
+AAATGCCAGAACTGTA-7	7	Mouse7	5	DCT
+TTTGCGCTCTACCAGA-4	4	Mouse4	3	PT
+ACATACGGTTTCCACC-6	6	Mouse6	3	PT
+GCCTCTAGTTCCACAA-7	7	Mouse7	3	PT
+GGGAGATGTACTCTCC-6	6	Mouse6	1	Endo
+GAACGGATCTTGTACT-7	7	Mouse7	3	PT
+TACCTTATCCTAGAAC-1	1	Mouse1	3	PT
+GCGCGATAGATGCCAG-2	2	Mouse2	3	PT
+GACAGAGCAAGTTGTC-7	7	Mouse7	3	PT
+TGACTAGGTATGAATG-3	3	Mouse3	4	LOH
+CACACTCAGTCACGCC-6	6	Mouse6	3	PT
+ATTGGTGGTTAGGGTG-5	5	Mouse5	3	PT
+AGCAGCCCAGCGTAAG-2	2	Mouse2	1	Endo
+CATTCGCAGCCTTGAT-6	6	Mouse6	3	PT
+GCGAGAACATAGACTC-2	2	Mouse2	14	T lymph
+AGTCTTTGTAATAGCA-7	7	Mouse7	3	PT
+TCGCGAGCAGACACTT-7	7	Mouse7	3	PT
+CGGAGTCCAGCAGTTT-2	2	Mouse2	3	PT
+GGTGTTACACACATGT-7	7	Mouse7	3	PT
+TTCTCAAGTAAGTGTA-2	2	Mouse2	1	Endo
+TGCTGCTAGTCAATAG-2	2	Mouse2	3	PT
+GATGAGGTCTACCAGA-2	2	Mouse2	3	PT
+ACATACGGTTGTACAC-5	5	Mouse5	3	PT
+ACGAGGACAGCTATTG-7	7	Mouse7	4	LOH
+CGATGTATCGGCGGTT-2	2	Mouse2	3	PT
+CTGCGGATCACAACGT-2	2	Mouse2	13	B lymph
+CGAACATAGTTGAGTA-5	5	Mouse5	3	PT
+TAGTTGGTCGCGATCG-6	6	Mouse6	5	DCT
+GCAGCCACAATGTAAG-4	4	Mouse4	1	Endo
+CTCACACCAATAACGA-7	7	Mouse7	3	PT
+CCTTTCTCATGAAGTA-2	2	Mouse2	7	CD-IC
+AGTGTCAAGAGCAATT-7	7	Mouse7	3	PT
+AGCATACGTAAAGGAG-1	1	Mouse1	6	CD-PC
+ACACCAATCTCGCTTG-5	5	Mouse5	3	PT
+GGGATGAGTATCAGTC-6	6	Mouse6	3	PT
+TGACAACAGAAGCCCA-2	2	Mouse2	3	PT
+CGAATGTTCACAATGC-1	1	Mouse1	1	Endo
+GCACTCTTCCGCATAA-1	1	Mouse1	3	PT
+CACCAGGTCCCAAGAT-2	2	Mouse2	3	PT
+GTTACAGCACCGCTAG-6	6	Mouse6	3	PT
+TAGCCGGCAGTACACT-2	2	Mouse2	11	Macro
+ACGATGTGTTAAAGAC-2	2	Mouse2	9	Novel1
+CCTTCCCAGTCTCGGC-7	7	Mouse7	3	PT
+TAGTGGTTCTCTGTCG-7	7	Mouse7	7	CD-IC
+TAGCCGGAGGCTAGCA-5	5	Mouse5	7	CD-IC
+TTGTAGGTCAGCACAT-1	1	Mouse1	4	LOH
+GAATAAGCAGCTTCGG-7	7	Mouse7	3	PT
+TCGCGAGAGTCCGGTC-3	3	Mouse3	14	T lymph
+TCAACGAAGAGTAAGG-2	2	Mouse2	5	DCT
+CAGGTGCCACGAAATA-5	5	Mouse5	3	PT
+TGTGTTTCACTATCTT-2	2	Mouse2	3	PT
+TGGCCAGAGTGAAGAG-6	6	Mouse6	3	PT
+ACCAGTAAGTAGCCGA-2	2	Mouse2	6	CD-PC
+GCGGGTTAGAAGGTTT-1	1	Mouse1	3	PT
+CAGTCCTGTCATTAGC-2	2	Mouse2	7	CD-IC