Skip to content

erlete/scoretree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScoreTree

PyPI Release Package Build and Test Coverage Status Python Version

ScoreTree is an easy to use, multi-level grade weighting system that serves as excellent tool for cascade grading methods.

Installation

This package has been released through PyPI, so it can be installed using Python's pip module:

python -m pip install scoretree

Note

The command above asumes that your Python interpreter is aliased to python and references a version equal to or greater than 3.10

Alternatively, it is also possible to clone this repository and install the package via pip and/or build.

Usage

Here is an usage example. Feel free to take a look at other examples in the corresponding section of the repository.

from scoretree import Score, ScoreArea, ScoreTree

# Define a score tree:
st = ScoreTree([
    # Add a list of areas to be evaluated:
    ScoreArea(name=f"Simulation", weight=1, items=[
        # Each area can contain other areas and/or scores:
        ScoreArea("Stop maneuver", .2, [
            # Scores are the minimal grading unit:
            Score(
                name="Distance to end",
                weight=.8,
                score_range=(0, 10),
                value=9.8848,
                inverse=True
            ),
            Score("Deceleration intensity", .2, (0, 20), value=185555)
        ]),
        # Different instance creation syntax:
        ScoreArea("Track performance", .8, [
            Score("Speed", .3, (0, 20), 5),
            ScoreArea("Efficiency", .7, [
                Score("Track time", .5, (0, 40), 30),
                Score("Track distance", .5, (0, 200), value=10, inverse=True)
            ])
        ])
    ])
], colorized=True)  # Enable or disable colorized output.

print(f"Total simulation score: {st.score}")

This would be the colorized output for the code snippet above:

sample_output

Contributing

Since this is a very small project that can be easily improved and can expand its functionality way further down the development process, any contributions, suggestions or bug reports are more than welcome!