Bring-Your-Own-Features (BYOFS)
The Bring-Your-Own-Features (BYOFS) allows users to add custom feature sets to SleepKit to be used with built-in or custom tasks.
How it Works
-
Create a Feature Set: Define a new feature set class that subclasses sk.FeatureSet
and implements all abstract methods.
| import sleepkit as sk
class CustomFeatureSet(sk.FeatureSet):
@staticmethod
def name() -> str:
return "custom"
@staticmethod
def feature_names() -> list[str]:
return ["feature1", "feature2", "feature3"]
@staticmethod
def generate_subject_features(subject_id: str, ds_name: str, params: sk.TaskParams):
pass
|
-
Register the Feature Set: Register the new feature set with the sk.FeatureFactory
by calling the register
method. This method takes the feature set name and the feature set class as arguments.
| import sleepkit as sk
sk.FeatureFactory.register(CustomFeatureSet.name, CustomFeatureSet)
|
-
Use the Feature Set: The new feature set can now be used to generate feature sets.
| import sleepkit as sk
# Create a task params object
params = sk.TaskParams(
...
feature=sk.FeatureParams(
name="custom",
...
)
)
# Load a task
task = sk.TaskFactory.get("stage")
# Use the custom feature set
task.feature(params)
|