Specialize diffexp for tiledb (#1384)

* Specialize diffexp for tiledb

This patch adds a new diffexp algorithm which is tuned for tiledb.
This algorithm was written by Bruce and is adapted here to plug into the
current framework.  The anndata_adaptor still calls the original
algotithm (which was move from diffexp.py to diffexp_generic.py).
The cxg_adaptor now calls the new diffexp_tiledb version.  Some
code is shared between the two.

This is part 1 of the diffexp for tiledb.  Further tuning and
global throttles are still needed.

A script to run and time diffexp with various options is also
added: test/run_diffexp.py.
This commit is contained in:
bmccandless
2020-04-12 09:56:55 -07:00
committed by GitHub
parent 5dcfcb5467
commit 98c2a1359b
10 changed files with 328 additions and 86 deletions
+3
View File
@@ -84,6 +84,7 @@ class AppConfig(object):
self.diffexp__enable = dc["diffexp"]["enable"]
self.diffexp__lfc_cutoff = dc["diffexp"]["lfc_cutoff"]
self.diffexp__top_n = dc["diffexp"]["top_n"]
self.data_locator__s3__region_name = dc["data_locator"]["s3"]["region_name"]
@@ -189,6 +190,7 @@ class AppConfig(object):
context = dict(messagefn=messagefn)
self.handle_server(context)
self.handle_adaptor(context)
self.handle_data_locator(context)
self.handle_adaptor(context) # may depend on data_locator
self.handle_presentation(context)
@@ -430,6 +432,7 @@ class AppConfig(object):
def handle_diffexp(self, context):
self.__check_attr("diffexp__enable", bool)
self.__check_attr("diffexp__lfc_cutoff", float)
self.__check_attr("diffexp__top_n", int)
if self.single_dataset__datapath:
with self.matrix_data_cache_manager.data_adaptor(self.single_dataset__datapath, self) as data_adaptor:
-3
View File
@@ -1,9 +1,6 @@
from enum import Enum
DEFAULT_TOP_N = 10
class AugmentedEnum(Enum):
def __hash__(self):
return self.value.__hash__()
+1
View File
@@ -65,6 +65,7 @@ embeddings:
diffexp:
enable: true
lfc_cutoff: 0.01
top_n: 10
data_locator:
s3: