v0.17.0
2024-04-04
Added
- Misc: Group tests for benchmark timings to compare the timings by multiplier more effectively.
Changed
- Tree Constructor:
add_dict_to_tree_by_name
andadd_dataframe_to_tree_by_name
modifies tree in-place instead of returning new tree, and does not acceptjoin_type
as argument as pandas dataframe operation is phased out. If there are clashing attributes, only those that have values will be replaced. This might not be backwards-compatible! - Tree Constructor:
dataframe_to_tree
no longer relies onadd_dataframe_to_tree_by_path
as it performs assertion checks twice. This leads to 5% improvement in timings for a tree with 10000 nodes, averaged across 10 runs. - Misc: Abstract out assertion checks for empty dataframe and duplicate attribute.
- Misc: Abstract out logic for checking null and filtering attributes.
- Misc: Optimization in dictionary and dataframe operations.
Fixed
- Tree Constructor:
dict_to_tree
no longer uses dataframe operations, leading to 33% improvement in timings for a tree with 10000 nodes, averaged across 10 runs. The resulting data type of node follows the dictionary exactly, compared to the previous dataframe operations that may change the dtypes for certain columns. This might not be backwards-compatible! - Tree Constructor:
dataframe_to_tree_by_relation
fix root node detection logic, ignore existing name column, ignore non-attribute columns, ignore null attribute columns. - Tree Constructor:
add_dataframe_to_tree_by_path
ignore existing name column, ignore non-attribute columns, ignore null attribute columns. - Tree Constructor:
add_dataframe_to_tree_by_name
ignore existing name column, ignore non-attribute columns, ignore null attribute columns. - Tree Constructor:
dataframe_to_tree
ignore existing name column, ignore non-attribute columns, ignore null attribute columns. - DAG Constructor:
dataframe_to_dag
ignore existing name column, ignore non-attribute columns, ignore null attribute columns.
What's Changed
Full Changelog: 0.16.4...0.17.0