Skip to content

Commit 2c8babb

Browse files
authored
Merge pull request #1492 from microbiomedata/1462-go-search-bug-fixes
Fix GO search bugs
2 parents 48a99fe + 70b788f commit 2c8babb

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

nmdc_server/query.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,16 @@ def compare(self) -> ClauseElement:
259259
]
260260

261261

262+
def _transform_gene_term(term: tuple[str, Any]) -> str:
263+
if term[0].startswith("KO:K"):
264+
return term[0].replace("KO:K", KeggTerms.ORTHOLOGY[0])
265+
if term[0].startswith("COG"):
266+
return term[0].replace("COG", "COG:COG")
267+
if term[0].startswith("PF"):
268+
return term[0].replace("PF", "PFAM:PF")
269+
return term[0]
270+
271+
262272
# This is the base class for all table specific queries. It is responsible for performing
263273
# both searches and facet aggregations. At a high level, the queries are generated as follows:
264274
# 1. group conditions by table/field
@@ -333,18 +343,14 @@ def transform_condition(self, db, condition: BaseConditionSchema) -> List[BaseCo
333343
)
334344
)
335345
)
346+
term_list = list(gene_terms)
347+
if not term_list:
348+
return [condition]
336349
else:
337350
# This is not a condition we know how to transform.
338351
return [condition]
339352
if gene_terms:
340-
if gene_terms[0][0].startswith("KO:K"):
341-
gene_terms = [
342-
term[0].replace("KO:K", KeggTerms.ORTHOLOGY[0]) for term in gene_terms
343-
]
344-
elif gene_terms[0][0].startswith("COG"):
345-
gene_terms = [term[0].replace("COG", "COG:COG") for term in gene_terms]
346-
elif gene_terms[0][0].startswith("PF"):
347-
gene_terms = [term[0].replace("PF", "PFAM:PF") for term in gene_terms]
353+
gene_terms = [_transform_gene_term(term) for term in gene_terms]
348354
return [
349355
SimpleConditionSchema(
350356
op="==",

0 commit comments

Comments
 (0)