function generateWeeklyMETs(profile = 'inactive') {
for (let minute = 0; minute < TOTAL_MINUTES; minute++) {
const currentDay = Math.floor(minute / MINUTES_PER_DAY);
const dayMinute = minute % MINUTES_PER_DAY;
const structuredPeriod = structuredPeriods.find(period =>
period.day === currentDay &&
dayMinute >= period.startMinute &&
dayMinute < (period.startMinute + period.duration)
);
if (structuredPeriod) {
const range = MET_RANGES[structuredPeriod.intensity];
metValues[minute] = random(range.min, range.max);
} else {
metValues[minute] = random(1.0, 1.2);
}
}
const sleepHours = [0, 1, 2, 3, 4, 5, 6];
for (let day = 0; day < DAYS_PER_WEEK; day++) {
for (let hour of sleepHours) {
const startMinute = day * MINUTES_PER_DAY + hour * 60;
for (let i = 0; i < 60; i++) {
metValues[startMinute + i] = random(0.9, 1.1);
}
}
}
return metValues;
}