paradigma 0.2.0__py3-none-any.whl → 0.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- paradigma/constants.py +49 -19
- paradigma/feature_extraction.py +42 -17
- paradigma/gait_analysis.py +20 -18
- paradigma/gait_analysis_config.py +171 -149
- paradigma/heart_rate_util.py +2 -2
- paradigma/imu_preprocessing.py +32 -29
- paradigma/ppg_preprocessing.py +14 -14
- paradigma/preprocessing_config.py +20 -15
- paradigma/util.py +4 -4
- paradigma/windowing.py +8 -6
- paradigma-0.3.1.dist-info/METADATA +79 -0
- {paradigma-0.2.0.dist-info → paradigma-0.3.1.dist-info}/RECORD +14 -14
- paradigma-0.2.0.dist-info/METADATA +0 -58
- {paradigma-0.2.0.dist-info → paradigma-0.3.1.dist-info}/LICENSE +0 -0
- {paradigma-0.2.0.dist-info → paradigma-0.3.1.dist-info}/WHEEL +0 -0
paradigma/ppg_preprocessing.py
CHANGED
|
@@ -3,7 +3,7 @@ import json
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import pandas as pd
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import List
|
|
6
|
+
from typing import List, Union
|
|
7
7
|
from datetime import datetime, timedelta
|
|
8
8
|
|
|
9
9
|
import tsdf
|
|
@@ -31,7 +31,7 @@ def scan_and_sync_segments(input_path_ppg, input_path_imu):
|
|
|
31
31
|
return metadatas_ppg, metadatas_imu
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TSDFMetadata, output_path: str, ppg_config: PPGPreprocessingConfig, imu_config: IMUPreprocessingConfig):
|
|
34
|
+
def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TSDFMetadata, output_path: Union[str, Path], ppg_config: PPGPreprocessingConfig, imu_config: IMUPreprocessingConfig):
|
|
35
35
|
|
|
36
36
|
# Load PPG data
|
|
37
37
|
metadata_time_ppg = tsdf_meta_ppg[ppg_config.time_filename]
|
|
@@ -53,16 +53,16 @@ def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TS
|
|
|
53
53
|
df_imu[DataColumns.TIME] = paradigma.imu_preprocessing.transform_time_array(
|
|
54
54
|
time_array=df_imu[DataColumns.TIME],
|
|
55
55
|
scale_factor=1000,
|
|
56
|
-
input_unit_type =
|
|
57
|
-
output_unit_type =
|
|
56
|
+
input_unit_type = TimeUnit.DIFFERENCE_MS,
|
|
57
|
+
output_unit_type = TimeUnit.ABSOLUTE_MS,
|
|
58
58
|
start_time = start_time_ppg)
|
|
59
59
|
|
|
60
60
|
start_time_imu = parse_iso8601_to_datetime(metadata_time_imu.start_iso8601).timestamp()
|
|
61
61
|
df_ppg[DataColumns.TIME] = paradigma.imu_preprocessing.transform_time_array(
|
|
62
62
|
time_array=df_ppg[DataColumns.TIME],
|
|
63
63
|
scale_factor=1000,
|
|
64
|
-
input_unit_type =
|
|
65
|
-
output_unit_type =
|
|
64
|
+
input_unit_type = TimeUnit.DIFFERENCE_MS,
|
|
65
|
+
output_unit_type = TimeUnit.ABSOLUTE_MS,
|
|
66
66
|
start_time = start_time_imu)
|
|
67
67
|
|
|
68
68
|
# Extract overlapping segments
|
|
@@ -74,7 +74,7 @@ def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TS
|
|
|
74
74
|
df_imu_proc = paradigma.imu_preprocessing.resample_data(
|
|
75
75
|
df=df_imu_overlapping,
|
|
76
76
|
time_column=DataColumns.TIME,
|
|
77
|
-
time_unit_type=
|
|
77
|
+
time_unit_type=TimeUnit.ABSOLUTE_MS,
|
|
78
78
|
unscaled_column_names = list(imu_config.d_channels_accelerometer.keys()),
|
|
79
79
|
resampling_frequency=imu_config.sampling_frequency,
|
|
80
80
|
scale_factors=metadata_samples_imu.scale_factors[0:3],
|
|
@@ -84,7 +84,7 @@ def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TS
|
|
|
84
84
|
df_ppg_proc = paradigma.imu_preprocessing.resample_data(
|
|
85
85
|
df=df_ppg_overlapping,
|
|
86
86
|
time_column=DataColumns.TIME,
|
|
87
|
-
time_unit_type=
|
|
87
|
+
time_unit_type=TimeUnit.ABSOLUTE_MS,
|
|
88
88
|
unscaled_column_names = list(ppg_config.d_channels_ppg.keys()),
|
|
89
89
|
scale_factors=metadata_samples_imu.scale_factors,
|
|
90
90
|
resampling_frequency=ppg_config.sampling_frequency,
|
|
@@ -125,16 +125,16 @@ def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TS
|
|
|
125
125
|
df_imu_proc[DataColumns.TIME] = paradigma.imu_preprocessing.transform_time_array(
|
|
126
126
|
time_array=df_imu_proc[DataColumns.TIME],
|
|
127
127
|
scale_factor=1,
|
|
128
|
-
input_unit_type=
|
|
129
|
-
output_unit_type=
|
|
128
|
+
input_unit_type=TimeUnit.ABSOLUTE_MS,
|
|
129
|
+
output_unit_type=TimeUnit.RELATIVE_MS,
|
|
130
130
|
start_time=start_time_ppg,
|
|
131
131
|
)
|
|
132
132
|
|
|
133
133
|
df_ppg_proc[DataColumns.TIME] = paradigma.imu_preprocessing.transform_time_array(
|
|
134
134
|
time_array=df_ppg_proc[DataColumns.TIME],
|
|
135
135
|
scale_factor=1,
|
|
136
|
-
input_unit_type=
|
|
137
|
-
output_unit_type=
|
|
136
|
+
input_unit_type=TimeUnit.ABSOLUTE_MS,
|
|
137
|
+
output_unit_type=TimeUnit.RELATIVE_MS,
|
|
138
138
|
start_time=start_time_imu,
|
|
139
139
|
)
|
|
140
140
|
|
|
@@ -142,14 +142,14 @@ def preprocess_ppg_data(tsdf_meta_ppg: tsdf.TSDFMetadata, tsdf_meta_imu: tsdf.TS
|
|
|
142
142
|
metadata_samples_imu.channels = list(imu_config.d_channels_accelerometer.keys())
|
|
143
143
|
metadata_samples_imu.units = list(imu_config.d_channels_accelerometer.values())
|
|
144
144
|
metadata_samples_imu.file_name = 'accelerometer_samples.bin'
|
|
145
|
-
metadata_time_imu.units = [TimeUnit.
|
|
145
|
+
metadata_time_imu.units = [TimeUnit.ABSOLUTE_MS]
|
|
146
146
|
metadata_time_imu.file_name = 'accelerometer_time.bin'
|
|
147
147
|
write_data(metadata_time_imu, metadata_samples_imu, output_path, 'accelerometer_meta.json', df_imu_proc)
|
|
148
148
|
|
|
149
149
|
metadata_samples_ppg.channels = list(ppg_config.d_channels_ppg.keys())
|
|
150
150
|
metadata_samples_ppg.units = list(ppg_config.d_channels_ppg.values())
|
|
151
151
|
metadata_samples_ppg.file_name = 'PPG_samples.bin'
|
|
152
|
-
metadata_time_ppg.units = [TimeUnit.
|
|
152
|
+
metadata_time_ppg.units = [TimeUnit.ABSOLUTE_MS]
|
|
153
153
|
metadata_time_ppg.file_name = 'PPG_time.bin'
|
|
154
154
|
write_data(metadata_time_ppg, metadata_samples_ppg, output_path, 'PPG_meta.json', df_ppg_proc)
|
|
155
155
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from paradigma.constants import DataColumns
|
|
2
|
-
|
|
1
|
+
from paradigma.constants import DataColumns, DataUnits
|
|
2
|
+
from paradigma.gait_analysis_config import IMUConfig
|
|
3
3
|
|
|
4
4
|
class BasePreprocessingConfig:
|
|
5
5
|
|
|
@@ -9,8 +9,8 @@ class BasePreprocessingConfig:
|
|
|
9
9
|
self.values_filename = ''
|
|
10
10
|
self.time_filename = ''
|
|
11
11
|
|
|
12
|
-
self.acceleration_units =
|
|
13
|
-
self.rotation_units =
|
|
12
|
+
self.acceleration_units = DataUnits.ACCELERATION
|
|
13
|
+
self.rotation_units = DataUnits.ROTATION
|
|
14
14
|
|
|
15
15
|
self.time_colname = DataColumns.TIME
|
|
16
16
|
|
|
@@ -23,18 +23,26 @@ class BasePreprocessingConfig:
|
|
|
23
23
|
self.upper_cutoff_frequency = 3.5
|
|
24
24
|
self.filter_order = 4
|
|
25
25
|
|
|
26
|
+
def set_filenames(self, prefix: str) -> None:
|
|
27
|
+
"""Sets the filenames based on the prefix. This method is duplicated from `gaits_analysis_config.py`.
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
prefix : str
|
|
32
|
+
The prefix for the filenames.
|
|
33
|
+
"""
|
|
34
|
+
self.meta_filename = f"{prefix}_meta.json"
|
|
35
|
+
self.time_filename = f"{prefix}_time.bin"
|
|
36
|
+
self.values_filename = f"{prefix}_samples.bin"
|
|
26
37
|
|
|
27
38
|
class IMUPreprocessingConfig(BasePreprocessingConfig):
|
|
28
39
|
|
|
29
40
|
def __init__(self) -> None:
|
|
30
41
|
super().__init__()
|
|
31
42
|
|
|
32
|
-
self.
|
|
33
|
-
self.
|
|
34
|
-
self.
|
|
35
|
-
|
|
36
|
-
self.acceleration_units = 'm/s^2'
|
|
37
|
-
self.rotation_units = 'deg/s'
|
|
43
|
+
self.set_filenames('IMU')
|
|
44
|
+
self.acceleration_units = DataUnits.ACCELERATION
|
|
45
|
+
self.rotation_units = DataUnits.ROTATION
|
|
38
46
|
|
|
39
47
|
self.d_channels_accelerometer = {
|
|
40
48
|
DataColumns.ACCELEROMETER_X: self.acceleration_units,
|
|
@@ -53,12 +61,9 @@ class PPGPreprocessingConfig(BasePreprocessingConfig):
|
|
|
53
61
|
def __init__(self) -> None:
|
|
54
62
|
super().__init__()
|
|
55
63
|
|
|
56
|
-
self.
|
|
57
|
-
self.values_filename = 'PPG_samples.bin'
|
|
58
|
-
self.time_filename = 'PPG_time.bin'
|
|
59
|
-
|
|
64
|
+
self.set_filenames('PPG')
|
|
60
65
|
self.d_channels_ppg = {
|
|
61
|
-
DataColumns.PPG:
|
|
66
|
+
DataColumns.PPG: DataUnits.NONE
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
self.sampling_frequency = 30
|
paradigma/util.py
CHANGED
|
@@ -26,13 +26,13 @@ def write_data(metadata_time: TSDFMetadata, metadata_samples: TSDFMetadata,
|
|
|
26
26
|
|
|
27
27
|
# Make sure the iso8601 format is correctly set
|
|
28
28
|
#TODO: this should be properly validated in the tsdf library instead
|
|
29
|
-
start_date = parser.parse(metadata_time.
|
|
29
|
+
start_date = parser.parse(metadata_time.start_iso8601)
|
|
30
30
|
metadata_time.start_iso8601 = format_datetime_to_iso8601(start_date)
|
|
31
|
-
end_date = parser.parse(metadata_time.
|
|
31
|
+
end_date = parser.parse(metadata_time.end_iso8601)
|
|
32
32
|
metadata_time.end_iso8601 = format_datetime_to_iso8601(end_date)
|
|
33
|
-
start_date = parser.parse(metadata_samples.
|
|
33
|
+
start_date = parser.parse(metadata_samples.start_iso8601)
|
|
34
34
|
metadata_samples.start_iso8601 = format_datetime_to_iso8601(start_date)
|
|
35
|
-
end_date = parser.parse(metadata_samples.
|
|
35
|
+
end_date = parser.parse(metadata_samples.end_iso8601)
|
|
36
36
|
metadata_samples.end_iso8601 = format_datetime_to_iso8601(end_date)
|
|
37
37
|
|
|
38
38
|
# TODO: improve the way the metadata is stored at a different location
|
paradigma/windowing.py
CHANGED
|
@@ -2,6 +2,8 @@ import pandas as pd
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
import math
|
|
4
4
|
|
|
5
|
+
from typing import Union, List
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
def create_window(
|
|
7
9
|
df: pd.DataFrame,
|
|
@@ -57,11 +59,11 @@ def tabulate_windows(
|
|
|
57
59
|
df: pd.DataFrame,
|
|
58
60
|
time_column_name: str,
|
|
59
61
|
data_point_level_cols: list,
|
|
60
|
-
window_length_s: int = 6,
|
|
61
|
-
window_step_size_s: int = 1,
|
|
62
|
+
window_length_s: Union[int, float] = 6,
|
|
63
|
+
window_step_size_s: Union[int, float] = 1,
|
|
62
64
|
sampling_frequency: int = 100,
|
|
63
|
-
segment_nr_colname: str = None,
|
|
64
|
-
segment_nr: int = None,
|
|
65
|
+
segment_nr_colname: Union[str, None] = None,
|
|
66
|
+
segment_nr: Union[int, None] = None,
|
|
65
67
|
) -> pd.DataFrame:
|
|
66
68
|
"""Compiles multiple windows into a single dataframe
|
|
67
69
|
|
|
@@ -73,9 +75,9 @@ def tabulate_windows(
|
|
|
73
75
|
The name of the time column
|
|
74
76
|
data_point_level_cols: list
|
|
75
77
|
The names of the columns that are to be kept as individual datapoints in a list instead of aggregates
|
|
76
|
-
window_length_s: int, optional
|
|
78
|
+
window_length_s: int | float, optional
|
|
77
79
|
The number of seconds a window constitutes (default: 6)
|
|
78
|
-
window_step_size_s: int, optional
|
|
80
|
+
window_step_size_s: int | float, optional
|
|
79
81
|
The number of seconds between the end of the previous and the start of the next window (default: 1)
|
|
80
82
|
sampling_frequency: int, optional
|
|
81
83
|
The sampling frequency of the data (default: 100)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: paradigma
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Paradigma - a toolbox for Digital Biomarkers for Parkinson's Disease
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Author: Peter Kok
|
|
7
|
+
Author-email: p.kok@esciencecenter.nl
|
|
8
|
+
Requires-Python: >=3.10,<4.0
|
|
9
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Requires-Dist: pandas (>=2.1.4,<3.0.0)
|
|
15
|
+
Requires-Dist: pytype (>=2024.4.11,<2025.0.0)
|
|
16
|
+
Requires-Dist: scikit-learn (>=1.3.2,<2.0.0)
|
|
17
|
+
Requires-Dist: tsdf (>=0.5.2,<0.6.0)
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# paradigma
|
|
21
|
+
|
|
22
|
+
| Badges | |
|
|
23
|
+
|:----:|----|
|
|
24
|
+
| **Packages and Releases** | [](https://github.com/biomarkersparkinson/paradigma/releases/latest) [](https://pypi.python.org/pypi/paradigma/) [](https://research-software-directory.org/software/paradigma) |
|
|
25
|
+
| **Build Status** | [](https://www.python.org/downloads/) [](https://github.com/biomarkersParkinson/paradigma/actions/workflows/build-and-test.yml) [](https://github.com/biomarkersParkinson/paradigma/actions/workflows/pages/pages-build-deployment) |
|
|
26
|
+
| **License** | [](https://github.com/biomarkersparkinson/paradigma/blob/main/LICENSE) |
|
|
27
|
+
<!-- | **DOI** | [](https://doi.org/10.5281/zenodo.7867899) | -->
|
|
28
|
+
<!-- | **Fairness** | [](https://fair-software.eu) [](https://www.bestpractices.dev/projects/8083) | -->
|
|
29
|
+
|
|
30
|
+
Digital Biomarkers for Parkinson's Disease Toolbox
|
|
31
|
+
|
|
32
|
+
A package ([documentation](https://biomarkersparkinson.github.io/paradigma/)) to process wearable sensor data for Parkinson's disease.
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
The package is available in PyPi and requires [Python 3.10](https://www.python.org/downloads/) or higher. It can be installed using:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install paradigma
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Usage
|
|
43
|
+
|
|
44
|
+
See our [extended documentation](https://biomarkersparkinson.github.io/paradigma/).
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Development
|
|
48
|
+
|
|
49
|
+
### Installation
|
|
50
|
+
The package requires Python 3.10 or higher. Use [Poetry](https://python-poetry.org/docs/#installation) to set up the environment and install the dependencies:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
poetry install
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Testing
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
poetry run pytest
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Building documentation
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
poetry run make html --directory docs/
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Contributing
|
|
69
|
+
|
|
70
|
+
Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
`paradigma` was created by Peter Kok, Vedran Kasalica, Erik Post, Kars Veldkamp, Nienke Timmermans, Diogo Coutinho Soriano, Luc Evers. It is licensed under the terms of the Apache License 2.0 license.
|
|
75
|
+
|
|
76
|
+
## Credits
|
|
77
|
+
|
|
78
|
+
`paradigma` was created with [`cookiecutter`](https://cookiecutter.readthedocs.io/en/latest/) and the `py-pkgs-cookiecutter` [template](https://github.com/py-pkgs/py-pkgs-cookiecutter).
|
|
79
|
+
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
paradigma/__init__.py,sha256=vCLqo7vOEgcnYs10gUVYvEFfi8y-jBi7w1YKRoqn95k,127
|
|
2
|
-
paradigma/constants.py,sha256=
|
|
3
|
-
paradigma/feature_extraction.py,sha256=
|
|
4
|
-
paradigma/gait_analysis.py,sha256=
|
|
5
|
-
paradigma/gait_analysis_config.py,sha256=
|
|
2
|
+
paradigma/constants.py,sha256=fC64MZY7b8BdakakQPxOnr4fvqTvAthInezbEXWp2Y0,1944
|
|
3
|
+
paradigma/feature_extraction.py,sha256=534lOy-a_cLbThrbN2CkLypp53OmyKfm2zVBrDcICCE,29092
|
|
4
|
+
paradigma/gait_analysis.py,sha256=_dIfGJksF3SUi-ViZzy9kHel_I_9_5rJqY8Sd4C9aEA,19678
|
|
5
|
+
paradigma/gait_analysis_config.py,sha256=89iWUGom6YocBxAqS7VwCn4Cput2mzxP2e7RI2iA4y4,9858
|
|
6
6
|
paradigma/heart_rate_analysis.py,sha256=6upEOkMYD-Pu8OKWK7iY_j96iOxJgSMqmZJx8ILAc28,6208
|
|
7
7
|
paradigma/heart_rate_analysis_config.py,sha256=fxvX_P2BpN7ImtbgFxMforp02GpIEXg3OXE5d2BIkTk,168
|
|
8
|
-
paradigma/heart_rate_util.py,sha256=
|
|
9
|
-
paradigma/imu_preprocessing.py,sha256=
|
|
8
|
+
paradigma/heart_rate_util.py,sha256=ECTnyOw-KgKUazzK9pg3dMYCdYsGZ1ixEusF-hzu4Vw,6233
|
|
9
|
+
paradigma/imu_preprocessing.py,sha256=n0NY80TfjtBL2XNDFsTebaLYvzepZlL_XrEZAqjo4dU,8789
|
|
10
10
|
paradigma/ppg/classifier/LR_PPG_quality.pkl,sha256=Zet2g1JIjwBPIK_eJs-aiKACyLbe0tLwSfA5Vm_5bsw,948
|
|
11
11
|
paradigma/ppg/classifier/LR_model.mat,sha256=LaciVbQGHBGbMaui3mEdq-b898FshU6vY9QAp502Xwg,3712
|
|
12
12
|
paradigma/ppg/feat_extraction/acc_feature.m,sha256=D32PToHF7GupfItJculfdLmf0sET9z5LE-RchGpbJJc,975
|
|
@@ -87,8 +87,8 @@ paradigma/ppg/hr_functions/TFD toolbox JOT/utils/padWin.m,sha256=DTOK5JTm49A2a6p
|
|
|
87
87
|
paradigma/ppg/hr_functions/TFD toolbox JOT/utils/vtfd.m,sha256=U5WdtSOjIRW8tiahpURdFjD95IpfdLEuyQL2firTnFA,4836
|
|
88
88
|
paradigma/ppg/preprocessing/preprocessing_imu.m,sha256=tevkDPC23S4NQor62HlJwCc2MwtMv3-_buvB1P-KOuo,763
|
|
89
89
|
paradigma/ppg/preprocessing/preprocessing_ppg.m,sha256=tHnGuqS7RKUptzFIu-vu6I8P50iIOR8Bulq0IIDB1so,700
|
|
90
|
-
paradigma/ppg_preprocessing.py,sha256=
|
|
91
|
-
paradigma/preprocessing_config.py,sha256=
|
|
90
|
+
paradigma/ppg_preprocessing.py,sha256=ZJK4wXqdDpYW2ziKdlwfdxtowJSmmDB438ncGEBBH8g,14081
|
|
91
|
+
paradigma/preprocessing_config.py,sha256=A48blQi7L-k3cXTHiVuAeahBCPa4ijMFw-ZIgGexibo,2204
|
|
92
92
|
paradigma/quantification.py,sha256=ymYDWRoWl3QNCOaHlCR3eyHu1nlkAndJRAm3-gg5doE,2035
|
|
93
93
|
paradigma/tremor/TremorFeaturesAndClassification.m,sha256=DhaLx8R9VcjetUAztWiUDv1PkzeN9s8hU0WRh1OB-CU,16636
|
|
94
94
|
paradigma/tremor/feat_extraction/DerivativesExtract.m,sha256=-WuRBpuUO3gZ9dFDzQhoqBmEEMuU2gcU6XBuzXnvweU,883
|
|
@@ -100,9 +100,9 @@ paradigma/tremor/feat_extraction/PSDExtrAxis.m,sha256=HVp2KewVHbpN1D-gBpjWMYIJ6v
|
|
|
100
100
|
paradigma/tremor/feat_extraction/PSDExtrOpt.m,sha256=FKpAL69_Qu9_Gw0rqye9wV5cU_t42R2humOFUtznHxo,4223
|
|
101
101
|
paradigma/tremor/preprocessing/InterpData.m,sha256=jsrdiE6IPvDTPz5LdZtP1opAh_hQ-M9o7K4WXXsLOhw,1167
|
|
102
102
|
paradigma/tremor/weekly_aggregates/WeeklyAggregates.m,sha256=OMT_W8B6i6WdXzC9IUiblxzUKHACg4yeRYnCDRcT06k,15816
|
|
103
|
-
paradigma/util.py,sha256=
|
|
104
|
-
paradigma/windowing.py,sha256=
|
|
105
|
-
paradigma-0.
|
|
106
|
-
paradigma-0.
|
|
107
|
-
paradigma-0.
|
|
108
|
-
paradigma-0.
|
|
103
|
+
paradigma/util.py,sha256=eK1zv0of9_MpG-HN29ijkTwgMwV0bCUXjcF3FbzCYeg,2190
|
|
104
|
+
paradigma/windowing.py,sha256=GFFCu_WEwsfWGCJKyLO-o0_7HJt4YAEgU9XoqBXOnEQ,7429
|
|
105
|
+
paradigma-0.3.1.dist-info/LICENSE,sha256=Lda8kIVC2kbmlSeYaUWwUwV75Q-q31idYvo18HUTfiw,9807
|
|
106
|
+
paradigma-0.3.1.dist-info/METADATA,sha256=H_sPZWP3-t9DyR_Z1IpxVlnc3zw8srGh8DUjh6chyi0,3805
|
|
107
|
+
paradigma-0.3.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
108
|
+
paradigma-0.3.1.dist-info/RECORD,,
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: paradigma
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: Paradigma - a toolbox for Digital Biomarkers for Parkinson's Disease
|
|
5
|
-
License: Apache-2.0
|
|
6
|
-
Author: Peter Kok
|
|
7
|
-
Author-email: p.kok@esciencecenter.nl
|
|
8
|
-
Requires-Python: >=3.9,<4.0
|
|
9
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
-
Requires-Dist: pandas (>=2.1.4,<3.0.0)
|
|
16
|
-
Requires-Dist: scikit-learn (>=1.3.2,<2.0.0)
|
|
17
|
-
Requires-Dist: tsdf (>=0.5.2,<0.6.0)
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
|
|
20
|
-
# paradigma
|
|
21
|
-
|
|
22
|
-
Digital Biomarkers for Parkinson's Disease Toolbox
|
|
23
|
-
|
|
24
|
-
## Implementation progress
|
|
25
|
-
|
|
26
|
-
See [here](https://docs.google.com/spreadsheets/d/19AZZ44cOJeHonGaSpAPh0eMXW2ix5JHz9L9zYTNnH6g/edit?usp=sharing).
|
|
27
|
-
|
|
28
|
-
## Installation
|
|
29
|
-
The package requires Python 3.9 or higher. It can be installed using [Poetry](https://python-poetry.org/docs/#installation):
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
$ poetry install
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Usage
|
|
36
|
-
|
|
37
|
-
- TODO
|
|
38
|
-
|
|
39
|
-
## Development
|
|
40
|
-
|
|
41
|
-
### Building documentation
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
poetry run make html --directory docs/
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Contributing
|
|
48
|
-
|
|
49
|
-
Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
|
|
50
|
-
|
|
51
|
-
## License
|
|
52
|
-
|
|
53
|
-
`paradigma` was created by Peter Kok, Vedran Kasalica, Erik Post, Kars Veldkamp, Nienke Timmermans, Diogo Coutinho Soriano, Luc Evers. It is licensed under the terms of the Apache License 2.0 license.
|
|
54
|
-
|
|
55
|
-
## Credits
|
|
56
|
-
|
|
57
|
-
`paradigma` was created with [`cookiecutter`](https://cookiecutter.readthedocs.io/en/latest/) and the `py-pkgs-cookiecutter` [template](https://github.com/py-pkgs/py-pkgs-cookiecutter).
|
|
58
|
-
|
|
File without changes
|
|
File without changes
|