Version 2024.1.1
is a minor release on the 2024.1
series.
- Add support for terminal tree printout for dataframe with multi-indexed columns (#120)
- caliper_native_reader: Change "nid" casted value to np.int64 (#118)
Version 2024.1.0
is a major release.
- Added Jupyter Version Check to Roundtrip Import (#116)
- Update node ordering of child graph when making a copy (#117)
- Updates CaliperNativeReader to support all Caliper data types
- Support for reading in a timeseries cali file and viewing annotations on tree
- Update old-style query warning to include hatchet version (#115)
- Removed unicode string formatting needed for python2 only
- Allows push to PyPI to be triggered through workflow_dispatch (#114)
Version 2023.1.1
is a minor release on the 2023.1
series.
- Add support for NaNs in calculating exclusive columns and optionally specify inclusive columns (#99)
- Adds support for tree annotations with coloring and min/max attributes (#97)
- caliperreader: handle other metadata types (#98)
- Update caliperreader to initialize nodes based on node order column (#94)
- Sort nodes in terminal tree by hatchet_nid instead alphabetically (#108)
- docs: Update developer_guide.rst (#102)
- Deprecate Python2 CI coverage (#95)
- Adds hatchet/external/roundtrip to MANIFEST (#91)
- Removes python 3.5 from CI checks (#112)
Version 2023.1.0
is a major release.
- caliperreader: Adds support for optional additional string attributes
- caliperreader: option to use native or aliased metric names
- Changes np.float to np.float64 to account for removal of np.float in newer versions of NumPy
- caliperreader: fix duplicate dataframe rows
- Enables support for multi-indexed DataFrames in the Query Language
- Refactors Query Language for Thicket
- Add Tuple Support and a Switch to Filter Function
- Changes the textx dependency to use version < 3 with Python < 3.6 and version >= 3 with Python >= 3.6
- Adds Cython to the build-system requires list in pyproject.toml
- Refactors setuptools to fix Cython issues and be consistent with Thicket
- Adds a line to setup.py to get the hatchet.query package
Adds GitHub Action to build and (optionally) upload wheels and sdist (#87)
This is a hotfix on the 2022.2
series. It addresses a bug fix in Hatchet's
from_caliperreader()
.
This is a minor release on the 2022.2
series.
- updates caliper reader to convert caliper metadata values into correct Python
- objects
- adds to_json writer and from_dict and from_json readers
- adds
render_header
parameter to tree() to toggle the header on/off - adds the ability to match leaf nodes in the Query Language
- exposes version module to query hatchet version from the command line
- docs: update to using hatchet at llnl page
- adds a GitHub Action to test PyPI releases on a regular schedule
Version 2022.2.0
is a major release.
- Adds writers module to installed modules to resolve package install
- CaliperReader bug fixes: filter records to parse, ignore function metadata field
- Modify graphframe copy/deepcopy
- Adds beautiful soup 4 to requirements.txt
- Add new page on using hatchet on LLNL systems
This is a minor release on the 2022.1
series. It addresses a bug fix in
Hatchet's query language and Hatchet's flamegraph output:
- flamegraph: change count to be an int instead of a float
- query language: fix edge cases with + wildcard/quantifier by replacing it
with
.
followed by*
Version 2022.1.0
is a major release.
- 3 new readers: TAU, SpotDB, and Caliper python reader
- Query language extensions: compound queries, not query, and middle-level API
- Adds GraphFrame checkpoints in HDF5 format
- Interactive CCT visualization enhancements: pan and zoom, module encoding, multivariate encoding and adjustable mass pruning on large datasets
- HPCToolkit: extend for GPU stream data
- New color maps for terminal tree visualization
- New function for calculating exclusive metrics from corresponding inclusive metrics
- Precision parameter applied to second metric in terminal tree visualization
(e.g.,
gf.tree(precision=3)
) - Deprecates
from_caliper_json()
, augments existingfrom_caliper()
to accept optional cali-query parameter and cali file or just a json file - Metadata now stored on the GraphFrame
- New interface for calling the Hatchet calling context tree from Roundtrip:
%cct <graphframe or list>
. Deprecated interface:%loadVisualization <roundtrip_path> <literal_tree>
- Add recursion limit parameter to graphframe filter(rec_limit=1000)`, resolving recursion depth errors on large graphs
- New tutorial material from the ECP Annual Meeting 2021
- New developer and contributor guides
- Added section on how to generate datasets for Hatchet and expanded
- documentation on the query language
- Extend update_inclusive_columns() for multi-indexed trees
- Moves CI from Travis to GitHub Actions
- Roundtrip refactor
- New unit test for formatting license headers
- Return default_metric and metadata in filter(), squash(), copy(), and deepcopy()
- flamegraph: extract name from dataframe column instead of frame
- Preserve existing inc_metrics in update_inclusive_columns
This release extends the query language to support querying nodes that fall within a range and includes a critical fix for using the query language on a dataframe that may contain nan and infs values.
- Timemory reader
- Query dataframe columns with GraphFrame.show_metric_columns()
- Query nodes within a range using the call path query language
- Extend readers to define their own default metric
- Tree visualization displays 2 metrics
- Literal output format: add hatchet node IDs
- Parallel implementationo of filter function
- Caliper reader: support multiple hierarchies in JSON format
- Adds multiprocessing dependency
- Improve querying of subtrees in interactive visualization
- Tree visualization: check for both nan and inf
- Query language: match nodes with nan and inf values
- Check for exclusive metrics before updating inclusive columns
This release introduces a new tree visualization for Jupyter to interact with the data, deprecates some of the tree parameters, adds cython as a dependency, and contains performance improvements to two of Hatchet's central APIs.
- Interactive tree visualization in Jupyter
- Add mult and division API
- Update hatchet installation steps for cython integration
- Readers: cprofiler, pyinstrument
- Graph output formats: to_literal
- Add profiling APIs to profile Hatchet APIs
- Update basic tutorial for hatchet
- Remove threshold=, color=, and unicode= from tree API
- Highlighting name disabled by default in terminal tree output is kept in sync with the dataframe
- Internal performance improvements to unify and HPCToolkit reader, enabling analysis of large datasets
- For mathematical operations, insert nan values for missing nodes, show values as nan and inf as necessary in dataframe
- Extend callpath query language to support non-dataframe metrics (e.g., depth, hatchet ID)
- Literal reader: A node can be defined with a "duplicate": True field if it should be the same node (though in a different callpath). A node also needs "frame" field, which is a dict containing the node "name" and "type" (if necessary).
- caliper reader: do not assume "path" column is present, create graph after reading metadata
- fix updating inclusive columns for multi-indexed dataframes (required as part of squash)
- fix unicode error in python2 for terminal-based tree output
This release adds a syntax query language as an alternative method for filtering the graph. It also refreshes the tree printout with an updated format and legend.
- Add graph syntax query language to filter the graph
- Update HPCToolkit reader to handle sec or usec time units
- Add squash parameter to filter function to perform filter and squash in a single call
- Filter function takes an object, which can be a user-supplied function or a query object
- Tree printout format updated
- Tree printout API parameter changes:
- Removed parameters:
color
deprecated (color determined based on terminal support),threshold
, andunicode
- Changed parameters:
metric
changed tometric_column
,name
changed toname_column
,invert_colors
changed toinvert_colormap
,expand_names
changed toexpand_name
, andcontext
changed tocontext_column
- added
highlight_name
to highlight user code (from non-user code)
- Removed parameters:
- Sort nodes in union and tree printout by their frame
- Fix squash edge case where multiple parents are the same
This release adds new analysis operators, as well as some bugfixes and minor changes.
- Add GraphFrame reindex operator
- Query hatchet module version
- Add depth parameter to tree printout
- Fix pandas SettingwithCopyWarning in unify's _missing_nodes
- Handle MultiIndex for pandas 1.0.0 and newer vs older pandas versions
This release adds a new division operator and graph markups, as well as bugfixes and minor changes.
- Add markups to identify nodes that exist in only one of two graphs (from unify)
- Add GraphFrame division operator
- Add precision parameter (of metrics) in tree printout
- Tree printout to show nodes with negative values higher than threshold
- Fix HPCToolkit reader bug for statement nodes
- Downgrade pandas version for python 3.6 and later (incompatible versions)
- Fix unify by adding missing rows for math operations on GraphFrames
- Fix squash by restoring index in self's dataframe
- Do not sort nodes by frame in Graph union
- Fix phase timer to aggregate times for duplicate phases
- Remove node callpath calculation from HPCToolkit reader
- Remove unnecessary setting of _hatchet_nid in dataframe
v1.0.0
marks the first release of Hatchet!
- File formats supported: HPCToolkit, Caliper, DOT, string literal, list
- Graph visualization formats: terminal output, DOT, flamegraph
- Analysis operations: filter, squash, add, subtract, unify, copy
- Hatchet added to PyPI repository
- Unit tests using
pytest
- Initial documentation on hatchet.readthedocs.io