| from lib.utils import TensorList |
| import random |
|
|
|
|
| class TrackerParams: |
| """Class for tracker parameters.""" |
| def set_default_values(self, default_vals: dict): |
| for name, val in default_vals.items(): |
| if not hasattr(self, name): |
| setattr(self, name, val) |
|
|
| def get(self, name: str, *default): |
| """Get a parameter value with the given name. If it does not exists, it return the default value given as a |
| second argument or returns an error if no default value is given.""" |
| if len(default) > 1: |
| raise ValueError('Can only give one default value.') |
|
|
| if not default: |
| return getattr(self, name) |
|
|
| return getattr(self, name, default[0]) |
|
|
| def has(self, name: str): |
| """Check if there exist a parameter with the given name.""" |
| return hasattr(self, name) |
|
|
|
|
| class FeatureParams: |
| """Class for feature specific parameters""" |
| def __init__(self, *args, **kwargs): |
| if len(args) > 0: |
| raise ValueError |
|
|
| for name, val in kwargs.items(): |
| if isinstance(val, list): |
| setattr(self, name, TensorList(val)) |
| else: |
| setattr(self, name, val) |
|
|
|
|
| def Choice(*args): |
| """Can be used to sample random parameter values.""" |
| return random.choice(args) |
|
|