From dbad029d10201e4ef12dc387e5dd320c77990a69 Mon Sep 17 00:00:00 2001 From: Chris Bizon Date: Thu, 18 Jul 2024 17:07:09 -0400 Subject: [PATCH 1/6] added member_id kg to rule message --- src/service_aggregator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/service_aggregator.py b/src/service_aggregator.py index 55b5079..a12f5c7 100644 --- a/src/service_aggregator.py +++ b/src/service_aggregator.py @@ -931,6 +931,8 @@ def expand_query(input_message, params, guid): else: del query["query_graph"]["nodes"][source]["ids"] message = {"message": query, "parameters": input_message.get("parameters") or {}} + if mcq: + message["message"]["knowledge_graph"] = deepcopy(input_message["message"]["knowledge_graph"]) if "log_level" in input_message: message["log_level"] = input_message["log_level"] messages.append(message) From 6403f8e0148439c6d216b6dfc7fb398f0b2b251b Mon Sep 17 00:00:00 2001 From: Max Wang Date: Thu, 25 Jul 2024 12:48:22 -0400 Subject: [PATCH 2/6] Add member ids to query templates --- src/rules/MCQ.json | 12 ++++++++++++ src/service_aggregator.py | 6 ++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/rules/MCQ.json b/src/rules/MCQ.json index 22ba191..ef3f2c9 100644 --- a/src/rules/MCQ.json +++ b/src/rules/MCQ.json @@ -9,6 +9,9 @@ "ids": [ "$source_id" ], + "member_ids": [ + "$source_member_ids" + ], "categories": [ "biolink:PhenotypicFeature" ], @@ -18,6 +21,9 @@ "ids": [ "$target_id" ], + "member_ids": [ + "$target_member_ids" + ], "categories": [ "biolink:Gene" ] @@ -57,6 +63,9 @@ "ids": [ "$source_id" ], + "member_ids": [ + "$source_member_ids" + ], "categories": [ "biolink:PhenotypicFeature" ], @@ -66,6 +75,9 @@ "ids": [ "$target_id" ], + "member_ids": [ + "$target_member_ids" + ], "categories": [ "biolink:Gene" ] diff --git a/src/service_aggregator.py b/src/service_aggregator.py index a12f5c7..fadac8a 100644 --- a/src/service_aggregator.py +++ b/src/service_aggregator.py @@ -922,14 +922,16 @@ def expand_query(input_message, params, guid): query_template = Template(json.dumps(rule_def["template"])) #need to do a bit of surgery depending on what the input is. if source_input: - qs = query_template.substitute(source=source,target=target,source_id = input_id, target_id='') + qs = query_template.substitute(source=source,target=target,source_id = input_id, target_id='',source_member_ids=member_ids,target_member_ids='') else: - qs = query_template.substitute(source=source, target=target, target_id=input_id, source_id='') + qs = query_template.substitute(source=source, target=target, target_id=input_id, source_id='',source_member_ids='',target_member_ids=member_ids) query = json.loads(qs) if source_input: del query["query_graph"]["nodes"][target]["ids"] + del query["query_graph"]["nodes"][target]["member_ids"] else: del query["query_graph"]["nodes"][source]["ids"] + del query["query_graph"]["nodes"][target]["member_ids"] message = {"message": query, "parameters": input_message.get("parameters") or {}} if mcq: message["message"]["knowledge_graph"] = deepcopy(input_message["message"]["knowledge_graph"]) From 09a14c07598de8f316ce3da8a16be9b30a3b33b4 Mon Sep 17 00:00:00 2001 From: Max Wang Date: Thu, 25 Jul 2024 13:00:06 -0400 Subject: [PATCH 3/6] Handle cases where member_ids is not present --- src/service_aggregator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/service_aggregator.py b/src/service_aggregator.py index fadac8a..0b6406b 100644 --- a/src/service_aggregator.py +++ b/src/service_aggregator.py @@ -928,10 +928,10 @@ def expand_query(input_message, params, guid): query = json.loads(qs) if source_input: del query["query_graph"]["nodes"][target]["ids"] - del query["query_graph"]["nodes"][target]["member_ids"] + query["query_graph"]["nodes"][target].pop("member_ids", None) else: del query["query_graph"]["nodes"][source]["ids"] - del query["query_graph"]["nodes"][target]["member_ids"] + query["query_graph"]["nodes"][source].pop("member_ids", None) message = {"message": query, "parameters": input_message.get("parameters") or {}} if mcq: message["message"]["knowledge_graph"] = deepcopy(input_message["message"]["knowledge_graph"]) From 151dca21396ea36be63c043de08e8adf132cfe61 Mon Sep 17 00:00:00 2001 From: Max Wang Date: Thu, 25 Jul 2024 13:11:57 -0400 Subject: [PATCH 4/6] Fix subject of MCQ rules --- src/rules/MCQ.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rules/MCQ.json b/src/rules/MCQ.json index ef3f2c9..a394e4b 100644 --- a/src/rules/MCQ.json +++ b/src/rules/MCQ.json @@ -37,14 +37,14 @@ }, "edges": { "edge_0": { - "subject": "g", + "subject": "b", "object": "$source", "predicates": [ "biolink:has_phenotype" ] }, "edge_1": { - "subject": "g", + "subject": "b", "object": "$target", "predicates": [ "biolink:genetically_associated_with" @@ -91,14 +91,14 @@ }, "edges": { "edge_0": { - "subject": "g", + "subject": "b", "object": "$source", "predicates": [ "biolink:contributes_to" ] }, "edge_1": { - "subject": "g", + "subject": "b", "object": "$target", "predicates": [ "biolink:affects" From ce8a9c2b8e5f4d2b0c1051847d44d1b896f0bfdd Mon Sep 17 00:00:00 2001 From: Max Wang Date: Thu, 25 Jul 2024 13:34:28 -0400 Subject: [PATCH 5/6] Manually add member_ids because they're a list --- src/rules/MCQ.json | 12 ------------ src/service_aggregator.py | 8 ++++++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/rules/MCQ.json b/src/rules/MCQ.json index a394e4b..614a9f2 100644 --- a/src/rules/MCQ.json +++ b/src/rules/MCQ.json @@ -9,9 +9,6 @@ "ids": [ "$source_id" ], - "member_ids": [ - "$source_member_ids" - ], "categories": [ "biolink:PhenotypicFeature" ], @@ -21,9 +18,6 @@ "ids": [ "$target_id" ], - "member_ids": [ - "$target_member_ids" - ], "categories": [ "biolink:Gene" ] @@ -63,9 +57,6 @@ "ids": [ "$source_id" ], - "member_ids": [ - "$source_member_ids" - ], "categories": [ "biolink:PhenotypicFeature" ], @@ -75,9 +66,6 @@ "ids": [ "$target_id" ], - "member_ids": [ - "$target_member_ids" - ], "categories": [ "biolink:Gene" ] diff --git a/src/service_aggregator.py b/src/service_aggregator.py index 0b6406b..642fc74 100644 --- a/src/service_aggregator.py +++ b/src/service_aggregator.py @@ -922,16 +922,20 @@ def expand_query(input_message, params, guid): query_template = Template(json.dumps(rule_def["template"])) #need to do a bit of surgery depending on what the input is. if source_input: - qs = query_template.substitute(source=source,target=target,source_id = input_id, target_id='',source_member_ids=member_ids,target_member_ids='') + qs = query_template.substitute(source=source,target=target,source_id = input_id, target_id='') else: - qs = query_template.substitute(source=source, target=target, target_id=input_id, source_id='',source_member_ids='',target_member_ids=member_ids) + qs = query_template.substitute(source=source, target=target, target_id=input_id, source_id='') query = json.loads(qs) if source_input: del query["query_graph"]["nodes"][target]["ids"] query["query_graph"]["nodes"][target].pop("member_ids", None) + if mcq: + query["query_graph"]["nodes"][source]["member_ids"] = member_ids else: del query["query_graph"]["nodes"][source]["ids"] query["query_graph"]["nodes"][source].pop("member_ids", None) + if mcq: + query["query_graph"]["nodes"][target]["member_ids"] = member_ids message = {"message": query, "parameters": input_message.get("parameters") or {}} if mcq: message["message"]["knowledge_graph"] = deepcopy(input_message["message"]["knowledge_graph"]) From 2c4b631f25142efa1a1c9683444210850b502b63 Mon Sep 17 00:00:00 2001 From: Max Wang Date: Fri, 16 Aug 2024 16:27:51 -0400 Subject: [PATCH 6/6] Add COHD predicate to rule --- src/rules/MCQ.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rules/MCQ.json b/src/rules/MCQ.json index 614a9f2..10f65b4 100644 --- a/src/rules/MCQ.json +++ b/src/rules/MCQ.json @@ -34,7 +34,8 @@ "subject": "b", "object": "$source", "predicates": [ - "biolink:has_phenotype" + "biolink:has_phenotype", + "biolink:correlated_with" ] }, "edge_1": {