The FilterTree Editor offers an advanced, fast and repeatable way to prepare event logs for analysis.
Simply provide the name of the event log (CSV, XES or compressed XES) and type in the filters you'd like to apply.
The filters work on a disk-to-disk basis by avoiding to load the log in memory where possible, thus are able to handle large logs that would not fit in memory.
Event classifiers, XES extensions, global trace and event attributes, and log attributes are supported.
Furthermore, if two different sets of filters are to be applied (for instance, to split the log in two parts), simply indent one of the branches, as shown in the last two lines of the screenshot above.
Once the log is ready, optionally a window with log views will pop up for debugging and quality control purposes:
Demonstration Video
Getting Started
FilterTree requires no installation: simply
download the JAR file, and run it using java -jar [downloaded file].
Java 17 is required to run FilterTree.
- Type the name of the input event log (that is, a path relative to the location of the FilterTree file) in the first text box.
- In the main text field, type the name of a filter (as shown below), followed by a space, a vertical bar (|) and another space.
Then, type the parameters of the filter.
If the parameters contain spaces, then put them in "double quotes".
Alternatively, press ctrl+space to get a list of available filters (autocomplete).
If you start with a CSV file, the filter you'll need first is "CSV to XES", as all other filters only work on XES files.
- Each filter goes on its own row; lines that start with % are comments.
The indentation determines which intermediate event log the filter applies to.
- Once you stop typing, the FilterTree Editor will apply the filters in the background.
Once completed, the last log is (optionally) loaded in memory and a summary visualisation will pop up.
Please note:
OneDrive, Dropbox, etc. may interfere with file access on Windows.
If you experience file locking issues, please use FilterTree outside of their folders.
Privacy, Security & License
The FilterTree Editor does not use internet connectivity, does not set cookies and does not track you.
It does set log properties (1) "log creator" with value "FilterTree by Sander Leemans", (2) "FilterTree:last applied filter", (3) "FilterTree:last applied filter parameters" and (4) as "concept:name" the name of the initial log input file.
All of these can be removed by applying the "set log attribute" filter.
The FilterTree Editor will write all results in a folder next to the FilterTree file, with the name of the FilterTree file, appended with "-filterTree result".
This folder will be emptied by the FilterTree Editor on each run.
The input log file must be in a directory that is a sub-directory of the directory in which the FilterTree file resides.
The source code is available on svn, with the same licence(s) as ProM itself.
That is, FilterTree is licensed with the GNU General Public License ("GPL"), version 2.
In a nutshell, this means that you can use the FilterTree software at no charge; you can distribute copies of the software in source or binary form; and you can sell copies of the software and sell support for the software.
What this license does not allow you to do is make changes or add features and then sell a binary distribution without source code. You must provide source for any changes or additions to the software, and all code must be provided under the GPL.
Included filters
- CSV to XES - trace per row with attributes [date formats]
- CSV to XES - trace per row
- CSV to XES with attributes [trace identifiers]
- abbreviate event attribute to prefix with attributes [attribute, prefix]
- add literal event attribute if not exists with attributes [attribute, value]
- add start events - conditional with attributes [timestamp attribute, attribute that must be present]
- add start events with attributes [timestamp attribute]
- annotate trace having event with attribute value with attributes [target trace attribute, having attribute, of value]
- annotate trace with concatenation with attributes [attribute]
- annotate trace with concatenation of the attribute values of events that have an attribute value with attributes [attribute, limit to events having attribute, with value]
- annotate trace with range of event attribute with attributes [source event attribute, target trace attribute]
- annotate trace with set of event attribute values with attributes [of attribute]
- annotate trace with set of the attribute values of events that have an attribute value with attributes [of attribute, limit to events having attribute, with value]
- annotate trace with sum of attribute values of events that have an attribute value with attributes [attribute, limit to events having attribute, with value]
- annotate trace with sum of event attribute values with attributes [attribute]
- annotate trace with sum of trace attribute values with attributes [target attribute, source attributes]
- combine event attributes with attributes [target attribute, source attributes]
- copy event attribute with attributes [source attribute, target attribute]
- copy event attribute if not exists with attributes [source attribute, target attribute]
- copy event attributes to trace level with attributes [attributes]
- copy trace attribute with attributes [source attribute, target attribute]
- copy trace attribute if not exists with attributes [source attribute, target attribute]
- keep events with attribute prefix value with attributes [attribute, prefix values]
- keep events with attribute value with attributes [attribute, values]
- keep traces with attribute with attributes [attribute]
- keep traces with event and values with attributes [attribute, values]
- keep traces with values of attribute with attributes [attribute, values]
- make event attribute a timestamp with attributes [attribute, date format]
- make event attribute a timestamp with attributes [attribute]
- make event attribute boolean with attributes [attribute, true values]
- make event attribute continuous with attributes [attribute]
- make event attribute discrete with attributes [attribute]
- make event attribute literal with attributes [attribute]
- make event attribute numeric with attributes [attribute]
- make event attribute timestamps relative with attributes [attributes]
- make trace attribute a timestamp with attributes [attribute, date format]
- make trace attribute a timestamp with attributes [attribute]
- make trace attribute boolean with attributes [attribute, true values]
- make trace attribute boolean with attributes [attribute, true values]
- make trace attribute continuous with attributes [attribute]
- make trace attribute discrete with attributes [attribute]
- make trace attribute literal with attributes [attribute]
- map events with attributes [source event attribute, target event attribute, map file path [header row; comma delimited; first column -> from; second column -> to]]
- map traces with attributes [source trace attribute, target trace attribute, map file path [header row; comma delimited; first column -> from; second column -> to]]
- no filter
- remove constant trace attributes
- remove empty and zero-valued trace attributes with attributes [attributes]
- remove empty event attributes
- remove empty trace attributes with attributes [attributes]
- remove empty traces
- remove event attributes with attributes [attributes]
- remove events after # days before first event with attribute value with attributes [number of days, attribute, values]
- remove events after first completion event with attribute value with attributes [attribute, values]
- remove events after first event with attribute value with attributes [attribute, values]
- remove events before first event with attribute value with attributes [attribute, values]
- remove events with attribute value with attributes [attribute, values]
- remove trace attributes with attributes [attributes]
- remove traces having an event in the future
- remove traces having an event with an attribute value with attributes [attribute, values]
- remove traces that are longer than with attributes [duration (ms)]
- remove traces with attribute value with attributes [attribute, values]
- rename event attribute with attributes [source attribute, source target]
- rename trace attribute with attributes [source attribute, source target]
- replace event attribute value with attributes [attribute, replace with, source values]
- sample traces with attributes [probability to keep trace]
- sample traces with seed with attributes [probability to keep trace, random seed]
- scale trace attribute with attributes [attribute, factor]
- set event attribute with attributes [attribute, value]
- set log attribute with attributes [attribute, value]
- sort events
Latest updates:
- 17-08-2022 Added filters scale trace attribute and annotate trace with the range of an event attribute
- 16-08-2022 Added filters to adjust event and trace attribute types
- 13-05-2022 Added filter sample traces & sample traces with seed; improve compatibility with Java 17
- 25-02-2022 Added filter make trace attribute discrete
- 09-12-2021 Added filters (1) make trace attribute literal (necessary to let ProM recognise concept:name) and (2) CSV to XES - trace per row (which transforms each row to a trace and each timestamp becomes an event; timestamp pattern is an optional attribute)
- 21-10-2021 Copy final results to files with stable file names (to enable storing final logs on file management systems while maintaining traceability)
Added filter annotate trace with sum of trace attributes
- 18-10-2021 Added filter remove empty traces
- 12-10-2021 Enable starting from an empty text file
Added filters CSV to XES - trace per row; rename trace attribute
- 05-10-2021 Update OpenXES to fix bug in log result viewer
- 03-10-2021 Initial release