@@ -39,7 +39,7 @@ def _fit(
3939 quick_scale : bool = None ,
4040 close_session = True ,
4141 dtype = "float64"
42- ) -> glm .typing .InputDataBaseTyping :
42+ ) -> glm .typing .InputDataBase :
4343 """
4444 :param noise_model: str, noise model to use in model-based unit_test. Possible options:
4545
@@ -186,7 +186,7 @@ def _fit(
186186
187187
188188def lrt (
189- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
189+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
190190 full_formula_loc : str ,
191191 reduced_formula_loc : str ,
192192 full_formula_scale : str = "~1" ,
@@ -370,7 +370,7 @@ def lrt(
370370
371371
372372def wald (
373- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
373+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
374374 factor_loc_totest : Union [str , List [str ]] = None ,
375375 coef_to_test : Union [str , List [str ]] = None ,
376376 formula_loc : Union [None , str ] = None ,
@@ -547,7 +547,7 @@ def wald(
547547 if isinstance (as_numeric , str ):
548548 as_numeric = [as_numeric ]
549549
550- # # Parse input data formats:
550+ # Parse input data formats:
551551 gene_names = parse_gene_names (data , gene_names )
552552 if dmat_loc is None and dmat_scale is None :
553553 sample_description = parse_sample_description (data , sample_description )
@@ -644,7 +644,7 @@ def wald(
644644
645645
646646def t_test (
647- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
647+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
648648 grouping ,
649649 gene_names : Union [np .ndarray , list ] = None ,
650650 sample_description : pd .DataFrame = None ,
@@ -686,7 +686,7 @@ def t_test(
686686
687687
688688def rank_test (
689- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
689+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
690690 grouping : Union [str , np .ndarray , list ],
691691 gene_names : Union [np .ndarray , list ] = None ,
692692 sample_description : pd .DataFrame = None ,
@@ -728,7 +728,7 @@ def rank_test(
728728
729729
730730def two_sample (
731- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
731+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
732732 grouping : Union [str , np .ndarray , list ],
733733 as_numeric : Union [List [str ], Tuple [str ], str ] = (),
734734 test : str = "t-test" ,
@@ -819,8 +819,8 @@ def two_sample(
819819 :param kwargs: [Debugging] Additional arguments will be passed to the _fit method.
820820 """
821821 if test in ['t-test' , 'rank' ] and noise_model is not None :
822- raise ValueError ( 'base. two_sample(): Do not specify `noise_model` if using test t-test or rank_test: ' +
823- 'The t-test is based on a gaussian noise model and wilcoxon is model free.' )
822+ raise Warning ( ' two_sample(): Do not specify `noise_model` if using test t-test or rank_test: ' +
823+ 'The t-test is based on a gaussian noise model and the rank sum test is model free.' )
824824
825825 gene_names = parse_gene_names (data , gene_names )
826826 grouping = parse_grouping (data , sample_description , grouping )
@@ -848,6 +848,8 @@ def two_sample(
848848 sample_description = sample_description ,
849849 noise_model = noise_model ,
850850 size_factors = size_factors ,
851+ init_a = "closed_form" ,
852+ init_b = "closed_form" ,
851853 batch_size = batch_size ,
852854 training_strategy = training_strategy ,
853855 quick_scale = quick_scale ,
@@ -872,6 +874,8 @@ def two_sample(
872874 sample_description = sample_description ,
873875 noise_model = noise_model ,
874876 size_factors = size_factors ,
877+ init_a = "closed_form" ,
878+ init_b = "closed_form" ,
875879 batch_size = batch_size ,
876880 training_strategy = training_strategy ,
877881 quick_scale = quick_scale ,
@@ -883,16 +887,14 @@ def two_sample(
883887 data = data ,
884888 gene_names = gene_names ,
885889 grouping = grouping ,
886- is_sig_zerovar = is_sig_zerovar ,
887- dtype = dtype
890+ is_sig_zerovar = is_sig_zerovar
888891 )
889892 elif test .lower () == 'rank' :
890893 de_test = rank_test (
891894 data = data ,
892895 gene_names = gene_names ,
893896 grouping = grouping ,
894- is_sig_zerovar = is_sig_zerovar ,
895- dtype = dtype
897+ is_sig_zerovar = is_sig_zerovar
896898 )
897899 else :
898900 raise ValueError ('two_sample(): Parameter `test="%s"` not recognized.' % test )
@@ -901,19 +903,19 @@ def two_sample(
901903
902904
903905def pairwise (
904- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
906+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
905907 grouping : Union [str , np .ndarray , list ],
906908 as_numeric : Union [List [str ], Tuple [str ], str ] = (),
907- test : str = ' z-test' ,
908- lazy : bool = False ,
909+ test : str = " z-test" ,
910+ lazy : bool = True ,
909911 gene_names : Union [np .ndarray , list ] = None ,
910912 sample_description : pd .DataFrame = None ,
911- noise_model : str = None ,
913+ noise_model : str = "nb" ,
912914 size_factors : np .ndarray = None ,
913915 batch_size : int = None ,
914916 training_strategy : Union [str , List [Dict [str , object ]], Callable ] = "AUTO" ,
915917 is_sig_zerovar : bool = True ,
916- quick_scale : bool = None ,
918+ quick_scale : bool = False ,
917919 dtype = "float64" ,
918920 pval_correction : str = "global" ,
919921 keep_full_test_objs : bool = False ,
@@ -1036,6 +1038,8 @@ def pairwise(
10361038 design_scale = dmat ,
10371039 gene_names = gene_names ,
10381040 size_factors = size_factors ,
1041+ init_a = "closed_form" ,
1042+ init_b = "closed_form" ,
10391043 batch_size = batch_size ,
10401044 training_strategy = training_strategy ,
10411045 quick_scale = quick_scale ,
@@ -1058,6 +1062,10 @@ def pairwise(
10581062 correction_type = pval_correction
10591063 )
10601064 else :
1065+ if isinstance (data , anndata .AnnData ) or isinstance (data , anndata .Raw ):
1066+ data = data .X
1067+ elif isinstance (data , glm .typing .InputDataBase ):
1068+ data = data .x
10611069 groups = np .unique (grouping )
10621070 pvals = np .tile (np .NaN , [len (groups ), len (groups ), data .shape [1 ]])
10631071 pvals [np .eye (pvals .shape [0 ]).astype (bool )] = 0
@@ -1073,16 +1081,19 @@ def pairwise(
10731081 for j , g2 in enumerate (groups [(i + 1 ):]):
10741082 j = j + i + 1
10751083
1076- sel = (grouping == g1 ) | (grouping == g2 )
1084+ idx = np .where (np .logical_or (
1085+ grouping == g1 ,
1086+ grouping == g2
1087+ ))[0 ]
10771088 de_test_temp = two_sample (
1078- data = data [sel ],
1079- grouping = grouping [sel ],
1089+ data = data [idx , : ],
1090+ grouping = grouping [idx ],
10801091 as_numeric = as_numeric ,
10811092 test = test ,
10821093 gene_names = gene_names ,
1083- sample_description = sample_description .iloc [sel ],
1094+ sample_description = sample_description .iloc [idx , : ],
10841095 noise_model = noise_model ,
1085- size_factors = size_factors [sel ] if size_factors is not None else None ,
1096+ size_factors = size_factors [idx ] if size_factors is not None else None ,
10861097 batch_size = batch_size ,
10871098 training_strategy = training_strategy ,
10881099 quick_scale = quick_scale ,
@@ -1093,7 +1104,7 @@ def pairwise(
10931104 pvals [i , j ] = de_test_temp .pval
10941105 pvals [j , i ] = pvals [i , j ]
10951106 logfc [i , j ] = de_test_temp .log_fold_change ()
1096- logfc [j , i ] = - logfc [i , j ]
1107+ logfc [j , i ] = - logfc [i , j ]
10971108 if keep_full_test_objs :
10981109 tests [i , j ] = de_test_temp
10991110 tests [j , i ] = de_test_temp
@@ -1112,7 +1123,7 @@ def pairwise(
11121123
11131124
11141125def versus_rest (
1115- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
1126+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
11161127 grouping : Union [str , np .ndarray , list ],
11171128 as_numeric : Union [List [str ], Tuple [str ], str ] = (),
11181129 test : str = 'wald' ,
@@ -1274,7 +1285,7 @@ def versus_rest(
12741285
12751286
12761287def partition (
1277- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
1288+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
12781289 parts : Union [str , np .ndarray , list ],
12791290 gene_names : Union [np .ndarray , list ] = None ,
12801291 sample_description : pd .DataFrame = None
@@ -1317,7 +1328,7 @@ class _Partition:
13171328
13181329 def __init__ (
13191330 self ,
1320- data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBaseTyping ],
1331+ data : Union [anndata .AnnData , Raw , np .ndarray , scipy .sparse .csr_matrix , glm .typing .InputDataBase ],
13211332 parts : Union [str , np .ndarray , list ],
13221333 gene_names : Union [np .ndarray , list ] = None ,
13231334 sample_description : pd .DataFrame = None
@@ -1332,7 +1343,7 @@ def __init__(
13321343 :param gene_names: optional list/array of gene names which will be used if `data` does not implicitly store these
13331344 :param sample_description: optional pandas.DataFrame containing sample annotations
13341345 """
1335- if isinstance (data , glm .typing .InputDataBaseTyping ):
1346+ if isinstance (data , glm .typing .InputDataBase ):
13361347 self .x = data .x
13371348 elif isinstance (data , anndata .AnnData ) or isinstance (data , Raw ):
13381349 self .x = data .X
0 commit comments