danieldux commited on
Commit
e908d09
1 Parent(s): cd7ee4f

Add create_hierarchy_dict and create_hierarchy_tree functions

Browse files
Files changed (1) hide show
  1. isco.py +34 -2
isco.py CHANGED
@@ -1,8 +1,9 @@
1
  # filename: isco.py
 
2
  import csv
3
 
4
 
5
- def create_hierarchy(filename):
6
  """
7
  Creates a dictionary where keys are nodes and values are sets of parent nodes representing the hierarchy of the ISCO-08 codes from the "unit" column of the isco_structure.csv file.
8
 
@@ -34,6 +35,37 @@ def create_hierarchy(filename):
34
  return isco_hierarchy
35
 
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  # Example usage:
38
- # hierarchy = create_hierarchy("ISCO_structure.csv")
 
39
  # print(hierarchy)
 
 
 
1
  # filename: isco.py
2
+ from collections import defaultdict
3
  import csv
4
 
5
 
6
+ def create_hierarchy_dict(filename):
7
  """
8
  Creates a dictionary where keys are nodes and values are sets of parent nodes representing the hierarchy of the ISCO-08 codes from the "unit" column of the isco_structure.csv file.
9
 
 
35
  return isco_hierarchy
36
 
37
 
38
+ def create_hierarchy_tree(hierarchy_dict: dict) -> tuple:
39
+ """
40
+ Builds the hierarchy tree and a mapping from name to ISCO code.
41
+
42
+ Args:
43
+ - hierarchy_json: A dictionary representing the hierarchical structure.
44
+
45
+ Returns:
46
+ - tree: A dictionary representing the hierarchical structure.
47
+ - code_to_node: A dictionary mapping from ISCO code to node name.
48
+ """
49
+
50
+ tree = defaultdict(lambda: {"children": [], "parent": None})
51
+ code_to_node = {}
52
+
53
+ def add_node(parent_code, node):
54
+ code = node["name"].split("=")[0].strip()
55
+ code_to_node[code] = node["name"]
56
+ tree[code]["parent"] = parent_code
57
+ if parent_code:
58
+ tree[parent_code]["children"].append(code)
59
+ for child in node.get("children", []):
60
+ add_node(code, child)
61
+
62
+ add_node(None, hierarchy_dict) # Root node has no parent
63
+ return tree, code_to_node
64
+
65
+
66
  # Example usage:
67
+ # hierarchy_dict = create_hierarchy("ISCO_structure.csv")
68
+ # tree, code_to_node = create_hierarchy_tree(hierarchy_dict)
69
  # print(hierarchy)
70
+ # print(code_to_node)
71
+ # print(tree)