@@ -77,11 +77,36 @@ def assess_annotation(annotation, metadata, extra_params):
7777 DifferentialExpression .dev_logger , DifferentialExpression .de_logger , msg
7878 )
7979 raise KeyError (msg )
80- #FIXME check pairwise groups exist
81- de_type = extra_params .get ("de_type" )
8280 elif annotation_info == "group" :
83- # DE annotations should be of TYPE group
84- return None
81+ de_type = extra_params .get ("de_type" )
82+ group1 = extra_params .get ("group1" )
83+ group2 = extra_params .get ("group2" )
84+ if de_type == "pairwise" :
85+ metadata .preprocess (False )
86+ values = metadata .file [annotation ]['group' ].unique ()
87+ if group1 and group2 :
88+ if group1 not in values or group2 not in values :
89+ msg = (
90+ f'Provided annotation value(s) group1, \" { group1 } \" , '
91+ f'or group2, \" { group2 } \" , not found in metadata file'
92+ )
93+ log_exception (
94+ DifferentialExpression .dev_logger , DifferentialExpression .de_logger , msg
95+ )
96+ raise ValueError (msg )
97+ else :
98+ msg = (
99+ f'Provided annotation value(s) group1, \" { group1 } \" , or '
100+ f'group2, \" { group2 } \" , were false-y'
101+ )
102+ log_exception (
103+ DifferentialExpression .dev_logger , DifferentialExpression .de_logger , msg
104+ )
105+ raise KeyError (msg )
106+ # de_type is "rest" by default, DE annotation TYPE expected to be group
107+ else :
108+ # assessment does not raise error
109+ return None
85110 else :
86111 msg = f"Error: \" { annotation } \" has unexpected type \" { annotation_info } \" ."
87112 print (msg )
@@ -181,35 +206,34 @@ def subset_adata(adata, de_cells):
181206
182207 def execute_de (self ):
183208 DifferentialExpression .de_logger .info (f'dev_info: Starting DE for { self .accession } ' )
184- #FIXME
185- # try:
209+ try :
186210 # only used in output filename, replacing non-alphanumeric with underscores
187211 # except '+' replaced with 'pos'
188- self .cluster_name = DifferentialExpression .sanitize_string (
189- self .kwargs ["name" ]
190- )
191- if self .matrix_file_type in ["dense" , "mtx" , "h5ad" ]:
192- DifferentialExpression .de_logger .info (f"preparing DE on { self .matrix_file_type } matrix" )
193- self .run_scanpy_de (
194- self .cluster ,
195- self .metadata ,
196- self .matrix_file_path ,
197- self .matrix_file_type ,
198- self .annotation ,
199- self .cluster_name ,
200- self .kwargs ,
201- )
202- else :
203- msg = f"Submitted matrix_file_type should be \" dense\" , \" mtx\" or \" h5ad\" not \" { self .matrix_file_type } \" "
204- print (msg )
205- log_exception (
206- DifferentialExpression .dev_logger ,
207- DifferentialExpression .de_logger ,
208- msg ,
212+ self .cluster_name = DifferentialExpression .sanitize_string (
213+ self .kwargs ["name" ]
209214 )
210- raise ValueError (msg )
211- # except Exception as e:
212- # print(str(e))
215+ if self .matrix_file_type in ["dense" , "mtx" , "h5ad" ]:
216+ DifferentialExpression .de_logger .info (f"preparing DE on { self .matrix_file_type } matrix" )
217+ self .run_scanpy_de (
218+ self .cluster ,
219+ self .metadata ,
220+ self .matrix_file_path ,
221+ self .matrix_file_type ,
222+ self .annotation ,
223+ self .cluster_name ,
224+ self .kwargs ,
225+ )
226+ else :
227+ msg = f"Submitted matrix_file_type should be \" dense\" , \" mtx\" or \" h5ad\" not \" { self .matrix_file_type } \" "
228+ print (msg )
229+ log_exception (
230+ DifferentialExpression .dev_logger ,
231+ DifferentialExpression .de_logger ,
232+ msg ,
233+ )
234+ raise ValueError (msg )
235+ except (TypeError , KeyError , ValueError ) as e :
236+ raise ValueError (e )
213237 return
214238
215239
0 commit comments