diff --git a/smoke_test/python/avg_install.py b/smoke_test/python/avg_install.py new file mode 100755 index 0000000000000000000000000000000000000000..91ea457f8bd87e14122bf4220b0918f14158a627 --- /dev/null +++ b/smoke_test/python/avg_install.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +# run module load python/3.8.5-gcc8-static first +from pathlib import Path +import os +import pandas as pd +import time +import datetime +import collections +import numpy as np +nweek = 12 + +modulepath = Path('/usr/local/Modules/modulefiles') +softwares = list(modulepath.glob('*/')) +modulefiles = [list(i.glob('**/[!.]*')) for i in softwares if i.is_dir() and os.access(i, os.R_OK)] +lastm = {datetime.datetime.fromtimestamp(j.stat().st_mtime): j for i in modulefiles for j in i} +today = datetime.date.today() +week = datetime.timedelta(weeks=1) + +interval = np.array([today - week*i for i in range(nweek+1)][::-1]) +def quantize_week(date): + week = interval[:-1][(interval[:-1] <= date) & (date < interval[1:])] + return week.item() + + +byweek = collections.defaultdict(list) +for k, v in lastm.items(): + mod_day = datetime.date(*k.timetuple()[:3]) + if mod_day >= interval[0]: + byweek[quantize_week(mod_day)].append(v) + +avg_install = np.mean([len(i) for i in byweek.values()]) +print(avg_install)