Jon and I are pleased to announce version 1.0 of pareto.py, the free, open-source ε-nondominated sorting utility. Find the ε-nondominated solutions in your data today! ε-nondominated sorting lets you specify the resolution of your objectives to obtain a set of meaningfully distinct efficient points in your data set. (Confused? See this post for more context.)
- available on GitHub
- licensed under LGPL
- pure Python implementation with minimal dependencies (only standard library, does not require numpy)
- ε-nondominated sorting
- “importable”: use pareto.pyfrom other Python scripts
- “pipelineable”: include pareto.py in a Unix pipeline
- tag-along variables: columns (even non-numeric ones) other than those to be sorted may be retained in the output
- verbatim transcription of input: nondominated rows in the output appear exactly the same as they did in the input
- flexible column specification: e.g. 0-5 6 10-7
- mix minimization and maximization objectives
- skip header rows, commented rows, and blank lines
- annotate each row in the output with the file it came from, including stdin
- add line numbers to annotations
- index columns from the end of the row, allowing rows of varying lengths to be sorted together
(source code for the impatient)