Skip to content

Commit f4b0a77

Browse files
committed
Update workflow execution search tests
1 parent dac0ca1 commit f4b0a77

File tree

4 files changed

+65
-32
lines changed

4 files changed

+65
-32
lines changed

nmdc_server/fakes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ class PipelineStepBase(SQLAlchemyModelFactory):
203203
started_at_time: datetime = Faker("date_time")
204204
ended_at_time: datetime = Faker("date_time")
205205
execution_resource: str = Faker("word")
206-
omics_processing: models.OmicsProcessing = SubFactory(OmicsProcessingFactory)
206+
was_informed_by: List[models.OmicsProcessing] = []
207207

208208

209209
class ReadsQCFactory(PipelineStepBase):

nmdc_server/filters.py

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
MetaPGeneFunction,
3636
MetaTGeneFunction,
3737
Table,
38+
_table_model_map,
3839
workflow_execution_tables,
3940
)
4041

@@ -107,7 +108,15 @@ def join(self, target_table: Table, query: Query) -> Query:
107108
raise NotImplementedError()
108109

109110
def _join_omics_processing_related_tables(self, target_table: Table, query: Query) -> Query:
110-
if target_table != Table.omics_processing:
111+
if target_table in workflow_execution_tables:
112+
association_table = models.workflow_activity_to_data_generation_map[target_table.value]
113+
query = query.join(
114+
association_table
115+
).join(
116+
models.OmicsProcessing,
117+
models.OmicsProcessing.id == association_table.c.data_generation_id,
118+
)
119+
elif target_table != Table.omics_processing:
111120
query = query.join(models.OmicsProcessing)
112121

113122
return self.join_omics_processing(query)
@@ -252,10 +261,27 @@ def join_study(self, query: Query) -> Query:
252261
)
253262

254263

255-
workflow_filter_classes: List[Type[OmicsProcessingFilter]] = []
264+
class WorkflowExecutionFilter(OmicsProcessingFilter):
265+
table = Table.reads_qc
266+
267+
def join_omics_processing(self, query: Query) -> Query:
268+
association_table = models.workflow_activity_to_data_generation_map[self.table.value]
269+
model = _table_model_map[self.table]
270+
q = query.join(
271+
association_table,
272+
association_table.c.data_generation_id == models.OmicsProcessing.id,
273+
).join(
274+
model,
275+
model.id == association_table.c[f"{self.table.value}_id"] # type: ignore
276+
)
277+
print(q)
278+
return q
279+
280+
281+
workflow_filter_classes: List[Type[WorkflowExecutionFilter]] = []
256282
for table in workflow_execution_tables:
257283
workflow_filter_classes.append(
258-
type(f"{table.value}_filter", (OmicsProcessingFilter,), {"table": table})
284+
type(f"{table.value}_filter", (WorkflowExecutionFilter,), {"table": table})
259285
)
260286

261287

@@ -404,7 +430,14 @@ class MetaproteomicAnalysisFilter(OmicsProcessingFilter):
404430
table = Table.metaproteomic_analysis
405431

406432
def join_omics_processing(self, query: Query) -> Query:
407-
return query.join(self.table.model)
433+
association_table = models.metaproteomic_analysis_data_generation_association
434+
return query.join(
435+
association_table,
436+
association_table.c.data_generation_id == models.OmicsProcessing.id,
437+
).join(
438+
models.MetaproteomicAnalysis,
439+
models.MetaproteomicAnalysis.id == association_table.c.metaproteomic_analysis_id,
440+
)
408441

409442
def join_biosample(self, query: Query) -> Query:
410443
return (

tests/test_download.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def test_bulk_download_query(db: Session):
1818
)
1919
op1.outputs.append(raw1)
2020

21-
metag = fakes.MetagenomeAnnotationFactory(omics_processing=op1)
21+
metag = fakes.MetagenomeAnnotationFactory(was_informed_by=[op1])
2222
metag_output = fakes.DataObjectFactory(
2323
url="https://data.microbiomedata.org/data/metag",
2424
omics_processing=op1,
@@ -64,7 +64,7 @@ def test_generate_bulk_download(db: Session, client: TestClient, logged_in_user)
6464
)
6565
op1.outputs.append(raw1)
6666

67-
metag = fakes.MetagenomeAnnotationFactory(omics_processing=op1)
67+
metag = fakes.MetagenomeAnnotationFactory(was_informed_by=[op1])
6868
metag_output = fakes.DataObjectFactory(
6969
url="https://data.microbiomedata.org/data/metag",
7070
omics_processing=op1,
@@ -97,7 +97,7 @@ def test_generate_bulk_download_filtered(
9797
)
9898
op1.outputs.append(raw1)
9999

100-
metag = fakes.MetagenomeAnnotationFactory(omics_processing=op1)
100+
metag = fakes.MetagenomeAnnotationFactory(was_informed_by=[op1])
101101
metag_output = fakes.DataObjectFactory(
102102
url="https://data.microbiomedata.org/data/metag",
103103
omics_processing=op1,

tests/test_query.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -367,37 +367,37 @@ def test_pipeline_query(db: Session, table):
367367
omics_processing1 = fakes.OmicsProcessingFactory(name="omics_processing1")
368368
omics_processing2 = fakes.OmicsProcessingFactory(name="omics_processing2")
369369

370-
fakes.ReadsQCFactory(omics_processing=omics_processing1, name="reads_qc1")
371-
fakes.ReadsQCFactory(omics_processing=omics_processing1, name="reads_qc2")
372-
fakes.ReadsQCFactory(omics_processing=omics_processing2, name="reads_qc3")
370+
fakes.ReadsQCFactory(was_informed_by=[omics_processing1], name="reads_qc1")
371+
fakes.ReadsQCFactory(was_informed_by=[omics_processing1], name="reads_qc2")
372+
fakes.ReadsQCFactory(was_informed_by=[omics_processing2], name="reads_qc3")
373373

374-
fakes.MetagenomeAssemblyFactory(omics_processing=omics_processing1, name="assembly1")
375-
fakes.MetagenomeAssemblyFactory(omics_processing=omics_processing1, name="assembly2")
376-
fakes.MetagenomeAssemblyFactory(omics_processing=omics_processing2, name="assembly3")
374+
fakes.MetagenomeAssemblyFactory(was_informed_by=[omics_processing1], name="assembly1")
375+
fakes.MetagenomeAssemblyFactory(was_informed_by=[omics_processing1], name="assembly2")
376+
fakes.MetagenomeAssemblyFactory(was_informed_by=[omics_processing2], name="assembly3")
377377

378-
fakes.MetagenomeAnnotationFactory(omics_processing=omics_processing1, name="annotation1")
379-
fakes.MetagenomeAnnotationFactory(omics_processing=omics_processing1, name="annotation2")
380-
fakes.MetagenomeAnnotationFactory(omics_processing=omics_processing2, name="annotation3")
378+
fakes.MetagenomeAnnotationFactory(was_informed_by=[omics_processing1], name="annotation1")
379+
fakes.MetagenomeAnnotationFactory(was_informed_by=[omics_processing1], name="annotation2")
380+
fakes.MetagenomeAnnotationFactory(was_informed_by=[omics_processing2], name="annotation3")
381381

382-
fakes.MetaproteomicAnalysisFactory(omics_processing=omics_processing1, name="analysis1")
383-
fakes.MetaproteomicAnalysisFactory(omics_processing=omics_processing1, name="analysis2")
384-
fakes.MetaproteomicAnalysisFactory(omics_processing=omics_processing2, name="analysis3")
382+
fakes.MetaproteomicAnalysisFactory(was_informed_by=[omics_processing1], name="analysis1")
383+
fakes.MetaproteomicAnalysisFactory(was_informed_by=[omics_processing1], name="analysis2")
384+
fakes.MetaproteomicAnalysisFactory(was_informed_by=[omics_processing2], name="analysis3")
385385

386-
fakes.MAGsAnalysisFactory(omics_processing=omics_processing1, name="mags1")
387-
fakes.MAGsAnalysisFactory(omics_processing=omics_processing1, name="mags2")
388-
fakes.MAGsAnalysisFactory(omics_processing=omics_processing2, name="mags3")
386+
fakes.MAGsAnalysisFactory(was_informed_by=[omics_processing1], name="mags1")
387+
fakes.MAGsAnalysisFactory(was_informed_by=[omics_processing1], name="mags2")
388+
fakes.MAGsAnalysisFactory(was_informed_by=[omics_processing2], name="mags3")
389389

390-
fakes.ReadBasedAnalysisFactory(omics_processing=omics_processing1, name="reads1")
391-
fakes.ReadBasedAnalysisFactory(omics_processing=omics_processing1, name="reads2")
392-
fakes.ReadBasedAnalysisFactory(omics_processing=omics_processing2, name="reads3")
390+
fakes.ReadBasedAnalysisFactory(was_informed_by=[omics_processing1], name="reads1")
391+
fakes.ReadBasedAnalysisFactory(was_informed_by=[omics_processing1], name="reads2")
392+
fakes.ReadBasedAnalysisFactory(was_informed_by=[omics_processing2], name="reads3")
393393

394-
fakes.NOMAnalysisFactory(omics_processing=omics_processing1, name="nom1")
395-
fakes.NOMAnalysisFactory(omics_processing=omics_processing1, name="nom2")
396-
fakes.NOMAnalysisFactory(omics_processing=omics_processing2, name="nom3")
394+
fakes.NOMAnalysisFactory(was_informed_by=[omics_processing1], name="nom1")
395+
fakes.NOMAnalysisFactory(was_informed_by=[omics_processing1], name="nom2")
396+
fakes.NOMAnalysisFactory(was_informed_by=[omics_processing2], name="nom3")
397397

398-
fakes.MetabolomicsAnalysisFactory(omics_processing=omics_processing1, name="metab1")
399-
fakes.MetabolomicsAnalysisFactory(omics_processing=omics_processing1, name="metab2")
400-
fakes.MetabolomicsAnalysisFactory(omics_processing=omics_processing2, name="metab3")
398+
fakes.MetabolomicsAnalysisFactory(was_informed_by=[omics_processing1], name="metab1")
399+
fakes.MetabolomicsAnalysisFactory(was_informed_by=[omics_processing1], name="metab2")
400+
fakes.MetabolomicsAnalysisFactory(was_informed_by=[omics_processing2], name="metab3")
401401
db.commit()
402402

403403
# test omics_processing not associated with biosamples

0 commit comments

Comments
 (0)