From c40f1e89da5ed62341e5e83fa77f72d8df7eba7d Mon Sep 17 00:00:00 2001 From: max/sooulix Date: Wed, 10 Sep 2025 15:48:29 +0200 Subject: [PATCH] initial commit --- .gitignore | 3 ++ __init__.py | 0 gant_project.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 44 +++++++++++++++++++++++++ settings.py | 15 +++++++++ 5 files changed, 150 insertions(+) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 gant_project.py create mode 100644 main.py create mode 100644 settings.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..354574b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +**.pyc +.*.swo +.*.swp diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gant_project.py b/gant_project.py new file mode 100644 index 0000000..875f2e6 --- /dev/null +++ b/gant_project.py @@ -0,0 +1,88 @@ +work_packages = [{ + 'title': 'Inclusive Gesture Recognition Models (4 PM)', + 'duration':9, + 'start': 0, + 'method': """ + Develop an initial gesture recognition baseline using existing datasets (e.g., + $Q, public gesture datasets with diverse motion pattern). Apply unsupervised ML + techniques like Dynamic Time Warping (DTW) for feature extraction. Build on + these techniques for pretraing supervised ML datasets while identifying biases. + Check disparity in model accuracy across participant groups. Assure user studies + will be conducted in compliance with GDPR and relevant ethics approvals. + """, +}, { + 'title': 'Motor Variability in Interaction', + 'duration': 7, + 'start': 6, + 'method': """ + Conduct at least 3 mixed-method user studies with ~30 participants across three + groups: (1) ageing adults (n≈10), (2) participants with motor + impairments/disabilities (n≈10), and (3) expert movers/performers (n≈10). Both + quantitative kinematic data (motion capture, wearable sensors) and qualitative + data (interviews, observations) will be collected. Motor variability will be + modelled using clustering algorithms (e.g., k-means, Gaussian mixture models) + and nonlinear statistical analyses to capture individual patterns. Build + statistical models to capture variability. The prototype developed in WP1 will + serve as the baseline architecture for the user studies in WP2. Fuse statistical + insights with supervised ML to allow the system to adapt rather than enforce + rigid categories. + """, +} , { + 'title': 'Inclusive, Embodied, and Ecofeminist System Refinement', + 'duration': 5, + 'start': 14, + 'method': """ + """ +} , { + 'title': 'Dissemination and Public Engagement', + 'start': 10, + 'duration': 13, + 'method': """ + """ +}] + +deliverables = [{ + 'title': 'Framework specification', + 'month': 4, + 'wp': 1 +}, { + 'title': 'Baseline prototype', + 'month': 8, + 'wp': 1 +}, { + 'title': 'Annotated Dataset', + 'month': 12, + 'wp': 2, +}, { + 'title': 'Technical Report on Motor Variability', + 'month': 13, + 'wp': 2, +}, { + 'title': 'Updated prototype with integrated supervised ML and explainability mechanisms', + 'month': 15, + 'wp': 3, + +}, { + 'title': 'Design and evaluation framework for inclusive, interpretable ML in movement systems', + 'month': 18, + 'wp': 3, +}] + +milestones = [{ + 'title': 'Baseline Gesture Model and Bias Evaluation Metrics Defined', + 'month': 8, + 'wp': 1, +}, { + 'title': 'Completion of User Studies and Initial Statistical Variability Models', + 'month': 12, + 'wp': 2 +}, { + 'title': 'Completion of Transparent Model Integration and Ethical Evaluation Setup', + 'month': 13, + 'wp': 3 +}] + + + + + diff --git a/main.py b/main.py new file mode 100644 index 0000000..93c65e5 --- /dev/null +++ b/main.py @@ -0,0 +1,44 @@ +import sys +import pandas as pd +import datetime +import plotly.express as px +from dateutil import relativedelta + +import matplotlib.pyplot as plt +import matplotlib.dates as mdates +import matplotlib.patches as mpatches +import mplcursors + +from matplotlib import rcParams +from matplotlib.widgets import CheckButtons +from .settings import ( + TITLE, TITLE_SIZE, TITLE_FONT_WEIGHT, + FONT_FAMILY, FONT_SANS_SERIF, FONT_COLOR, + LABEL_SIZE, DAY_FONT_SIZE, MONTH_FONT_SIZE, MONTH_FONT_WEIGHT, + X_LABEL, Y_LABEL, BAR_COLOR, TEAM_BAR_COLORS, DATE_FORMAT +) +from .gant_project import work_packages, deliverables, milestones + +# style confs +rcParams['font.family'] = FONT_FAMILY +rcParams['font.sans-serif'] = FONT_SANS_SERIF +rcParams['axes.titlesize'] = TITLE_SIZE +rcParams['axes.labelsize'] = LABEL_SIZE + +start = datetime.datetime.now() + +data_frame = pd.DataFrame(reversed([ + { + 'Work Package': f"WP {n+1}", + 'Label': f"WP {n+1}: {elt['title']}", + 'start_date': start + relativedelta.relativedelta(months=elt['start']), + 'end_date': start + \ + relativedelta.relativedelta(months=elt['start']) + \ + relativedelta.relativedelta(months=elt['duration']), + } + for n, elt in enumerate(work_packages) +])) +fig = px.timeline(data_frame, x_start="start_date", x_end="end_date", + y="Work Package", color="Label") +fig.update_yaxes(autorange="reversed") # otherwise tasks are listed from the bottom up +fig.show() diff --git a/settings.py b/settings.py new file mode 100644 index 0000000..864673b --- /dev/null +++ b/settings.py @@ -0,0 +1,15 @@ +TITLE='' +TITLE_SIZE='12' +TITLE_FONT_WEIGHT='' +FONT_FAMILY='' +FONT_SANS_SERIF='' +FONT_COLOR='#FFFFFF' +LABEL_SIZE='12' +DAY_FONT_SIZE='12' +MONTH_FONT_SIZE='' +MONTH_FONT_WEIGHT='' +X_LABEL='' +Y_LABEL='' +BAR_COLOR='#FFFFFF' +TEAM_BAR_COLORS='#FFFFFF' +DATE_FORMAT=''