|
1 | 1 | """Script for combining multiple KGX node and edge files.""" |
2 | 2 |
|
| 3 | +from datetime import datetime |
3 | 4 | import glob |
4 | 5 | import json |
5 | 6 | import jsonlines |
6 | | - |
| 7 | +from tqdm import tqdm |
7 | 8 |
|
8 | 9 | if __name__ == "__main__": |
9 | | - node_files = glob.glob("./kgx/*_nodes.jsonl") |
10 | | - edge_files = glob.glob("./kgx/*_edges.jsonl") |
| 10 | + time = datetime.now().strftime("%Y_%m_%d") |
| 11 | + node_files = glob.glob("./kgx/full/*_nodes.jsonl") |
| 12 | + edge_files = glob.glob("./kgx/full/*_edges.jsonl") |
11 | 13 |
|
12 | 14 | node_ids = set() |
13 | 15 | nodes = {} |
|
19 | 21 | if node["id"] not in node_ids: |
20 | 22 | nodes[node["id"]] = node |
21 | 23 |
|
22 | | - with open("nodes_merged.json", "w") as f: |
| 24 | + with open(f"kgx/nodes_merged_{time}.json", "w") as f: |
23 | 25 | json.dump(nodes, f, indent=2) |
24 | 26 |
|
25 | 27 | supported_categories = ["biolink:Drug", "biolink:ChemicalEntity", "biolink:Disease"] |
|
29 | 31 | for edge_file in edge_files: |
30 | 32 | print(f"merging {edge_file}") |
31 | 33 | with jsonlines.open(edge_file) as reader: |
32 | | - for edge in reader: |
| 34 | + print("loaded edge file") |
| 35 | + for edge in tqdm(reader): |
33 | 36 | # get subject node |
34 | 37 | if type(edge["subject"]) == dict: |
35 | 38 | # from ehr |
|
133 | 136 | "log_odds_analysis_result" |
134 | 137 | ].get("total_sample_size", 0) |
135 | 138 |
|
| 139 | + elif ( |
| 140 | + edge.get("primary_knowledge_source") |
| 141 | + == "infores:isb-EHRMLA-data" |
| 142 | + ): |
| 143 | + # from ehr may treat |
| 144 | + save_edge["supporting_data_source"] = ( |
| 145 | + "infores:isb-EHRMLA-data" |
| 146 | + ) |
| 147 | + save_edge["predicate"] = edge["predicate"] |
| 148 | + save_edge["log_odds_ratio"] = edge.get("log_odds_ratio", 0) |
| 149 | + save_edge["log_odds_ratio_95_ci"] = edge.get( |
| 150 | + "log_odds_ratio_95_ci", [0, 0] |
| 151 | + ) |
| 152 | + save_edge["total_sample_size"] = edge.get( |
| 153 | + "total_sample_size", 0 |
| 154 | + ) |
| 155 | + |
136 | 156 | if save_edge["log_odds_ratio"] > 10: |
137 | 157 | save_edge["log_odds_ratio"] = 10 |
138 | 158 | save_edge["log_odds_ratio_95_ci"] = [10, 10] |
|
148 | 168 | ] |
149 | 169 |
|
150 | 170 | print("Writing output edges...") |
151 | | - with open("edges_merged.json", "w") as f: |
| 171 | + with open(f"kgx/edges_merged_{time}.json", "w") as f: |
152 | 172 | json.dump(edges, f, indent=2) |
153 | 173 | print("Merge Complete!") |
0 commit comments