Source code for biopsykit.protocols.tsst

"""Module representing the Trier Social Stress Test (TSST) protocol."""
from typing import Dict, Optional, Union

from biopsykit.protocols import BaseProtocol


[docs]class TSST(BaseProtocol): """Class representing the Trier Social Stress Test (TSST).""" def __init__( self, name: Optional[str] = None, structure: Optional[Dict[str, Union[None, Dict[str, int]]]] = None, **kwargs ): """Class representing the Trier Social Stress Test (TSST). The general structure of the TSST can be specified by passing a ``structure`` dict to the constructor. Up to three nested structure levels are supported: * 1st level: ``study part``: Different parts of the study where the TSST was conducted, such as: "Pre", "TSST", and "Post". * 2nd level: ``phase``: Different TSST phases that belong to the same *study part*, such as: "Preparation", "Talk", "Math" (for study part "TSST") or "Questionnaires", "Rest" (for study part "Pre"). * 3rd level: ``subphase``: Different TSST subphases that belong to the same *phase*. Parameters ---------- name : str name of protocol or ``None`` to use "TSST" as default name. Default: ``None`` structure : dict, optional nested dictionary specifying the structure of the TSST study. Up to three nested structure levels are supported: * 1st level: ``study part``: Different parts of the study where the TSST was conducted, such as: "Pre", "TSST", and "Post". * 2nd level: ``phase``: Different TSST phases that belong to the same *study part*, such as: "Preparation", "Talk", "Math" (for study part "TSST") or "Questionnaires", "Rest" (for study part "Pre"). * 3rd level: ``subphase``: Different TSST subphases that belong to the same *phase*. If a study part has no division into finer phases (or a phase has no division into finer subphases) the dictionary value can be set to ``None``. **kwargs additional parameters to be passed to ``MIST`` and its superclass, ``BaseProtocol``, such as: * ``saliva_plot_params``: dictionary with parameters to style :meth:`~biopsykit.protocols.BaseProtocol.saliva_plot` * ``hr_mean_plot_params``: dictionary with parameters to style :meth:`~biopsykit.protocols.BaseProtocol.hr_mean_plot` * ``hr_ensemble_plot_params``: dictionary with parameters to style :meth:`~biopsykit.protocols.BaseProtocol.hr_ensemble_plot` Examples -------- >>> from biopsykit.protocols import TSST >>> # Example: TSST study consisting of three parts. Only the TSST part consists of different phases >>> structure = { >>> "Pre": None, >>> "TSST": { >>> "Preparation": 300, >>> "Talk": 300, >>> "Math": 300 >>> }, >>> "Post": None >>> } >>> TSST(name="TSST", structure=structure) References ---------- Kirschbaum, C., Pirke, K.-M., & Hellhammer, D. H. (1993). The “Trier Social Stress Test” - A Tool for Investigating Psychobiological Stress Responses in a Laboratory Setting. *Neuropsychobiology*, 28, 76-81. https://doi.org/10.1159/000119004 """ if name is None: name = "TSST" if structure is None: structure = {"Part1": None, "TSST": {"Preparation": 300, "Talk": 300, "Math": 300}, "Part2": None} test_times = kwargs.pop("test_times", [0, 15]) saliva_plot_params = {"test_title": "TSST", "xlabel": "Time relative to TSST start [min]"} saliva_plot_params.update(kwargs.pop("saliva_plot_params", {})) kwargs.update({"saliva_plot_params": saliva_plot_params}) super().__init__(name=name, structure=structure, test_times=test_times, **kwargs)