639 lines
21 KiB
Plaintext
639 lines
21 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from datetime import datetime as dt\n",
|
|
"from datetime import timedelta as td\n",
|
|
"from time import sleep\n",
|
|
"import json\n",
|
|
"import math"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 106,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"class RuntimeStats:\n",
|
|
" \n",
|
|
" def __init__(self):\n",
|
|
" self.runs = {}\n",
|
|
" self.currentRun = 0\n",
|
|
" self.today = \"\"\n",
|
|
" self.todayString = \"\"\n",
|
|
"\n",
|
|
" def manageTime(self):\n",
|
|
" if self.today != dt.today():\n",
|
|
" if self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"start\"] and not self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"end\"]:\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"end\"] = dt.timestamp(dt.strptime(self.todayString + \" 23:59:59\", \"%Y-%m-%d %H:%M:%S\"))\n",
|
|
" self.addDay()\n",
|
|
" days = list(self.runs.keys())\n",
|
|
" days.sort()\n",
|
|
" while (dt.strptime(days[-1],\"%Y-%m-%d\") - dt.strptime(days[0], \"%Y-%m-%d\")).days > 30:\n",
|
|
" self.removeDay(day=days[0])\n",
|
|
" days = list(self.runs.keys())\n",
|
|
" days.sort()\n",
|
|
"\n",
|
|
" def addHertzDataPoint(self, frequency):\n",
|
|
" if frequency > 0:\n",
|
|
" self.manageTime()\n",
|
|
" try:\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"frequencies\"].append(frequency)\n",
|
|
" except:\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"frequencies\"] = [frequency]\n",
|
|
"\n",
|
|
" def startRun(self):\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"start\"] = dt.timestamp(dt.now())\n",
|
|
"\n",
|
|
" def endRun(self):\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)][\"end\"] = dt.timestamp(dt.now()) \n",
|
|
"\n",
|
|
" def addDay(self):\n",
|
|
" self.today = dt.today()\n",
|
|
" self.todayString = dt.strftime(self.today, \"%Y-%m-%d\")\n",
|
|
" self.currentRun = 1\n",
|
|
" self.runs[self.todayString] = {}\n",
|
|
" self.runs[self.todayString][\"run_\" + str(self.currentRun)] = {\"start\":0, \"end\": 0, \"frequencies\":[]}\n",
|
|
"\n",
|
|
" def countRunsDay(self, day=None):\n",
|
|
" if not day:\n",
|
|
" day = self.todayString\n",
|
|
" return len(self.runs[day].keys())\n",
|
|
"\n",
|
|
" def countRunsMultiDay(self, numDays=30):\n",
|
|
" total_runs = 0\n",
|
|
" for day in list(self.runs.keys()):\n",
|
|
" total_runs += self.countRunsDay(day=day)\n",
|
|
" return total_runs\n",
|
|
"\n",
|
|
" def calculateAverageHertzDay(self, day=None, returnArray=False):\n",
|
|
" dayFrequencies = []\n",
|
|
" if not day:\n",
|
|
" day = self.todayString\n",
|
|
" for run in list(self.runs[day].keys()):\n",
|
|
" try:\n",
|
|
" dayFrequencies += self.runs[day][run][\"frequencies\"]\n",
|
|
" except Exception as e:\n",
|
|
" print(\"{} missing frequency data for {}\".format(day,run))\n",
|
|
" if returnArray:\n",
|
|
" return dayFrequencies\n",
|
|
" return round(math.fsum(dayFrequencies)/len(dayFrequencies),2)\n",
|
|
"\n",
|
|
" def calculateAverageHertzMultiDay(self, numDays=30):\n",
|
|
" frequencies = []\n",
|
|
" for day in list(self.runs.keys()):\n",
|
|
" try:\n",
|
|
" frequencies += self.calculateAverageHertzDay(day=day, returnArray=True)\n",
|
|
" except Exception as e:\n",
|
|
" print(\"{} missing frequency data\".format(day))\n",
|
|
" return round(math.fsum(frequencies)/len(frequencies), 2)\n",
|
|
" \n",
|
|
" def calculateRunTimeDay(self, day=None, convertToHours=True):\n",
|
|
" total_time = 0\n",
|
|
" if not day:\n",
|
|
" day = self.todayString\n",
|
|
" for run in list(self.runs[day].keys()):\n",
|
|
" total_time = self.runs[day][run][\"end\"] - self.runs[day][run][\"start\"] + total_time\n",
|
|
" if convertToHours:\n",
|
|
" return RuntimeStats.convertSecondstoHours(total_time)\n",
|
|
" return total_time\n",
|
|
"\n",
|
|
" def calculateRunTimeMultiDay(self, numDays=30, convertToHours=True):\n",
|
|
" total_time = 0\n",
|
|
" for day in list(self.runs.keys()):\n",
|
|
" total_time += self.calculateRunTimeDay(day=day, convertToHours=False)\n",
|
|
" if convertToHours:\n",
|
|
" return RuntimeStats.convertSecondstoHours(total_time)\n",
|
|
" return total_time\n",
|
|
" \n",
|
|
" def calculateRunPercentDay(self, day=None, precise=False):\n",
|
|
" if not day:\n",
|
|
" day = self.todayString\n",
|
|
" if precise:\n",
|
|
" return (self.calculateRunTimeDay(day=day)/24) * 100\n",
|
|
" return round((self.calculateRunTimeDay(day=day)/24) * 100, 2)\n",
|
|
" \n",
|
|
"\n",
|
|
" def calculateRunPercentMultiDay(self, numDays=30, precise=False):\n",
|
|
" if precise:\n",
|
|
" return (self.calculateRunTimeMultiDay()/(24*numDays)) * 100\n",
|
|
" return round((self.calculateRunTimeMultiDay()/(24*numDays)) * 100,2)\n",
|
|
"\n",
|
|
" def removeDay(self, day=None):\n",
|
|
" if not day:\n",
|
|
" raise Exception(\"Day can not be None\")\n",
|
|
" print(\"removing day {}\".format(day))\n",
|
|
" del self.runs[day]\n",
|
|
" \n",
|
|
" def convertSecondstoHours(seconds):\n",
|
|
" return round(seconds / (60*60),2)\n",
|
|
"\n",
|
|
" def loadDataFromFile(self, filePath=\"../runtimestats.json\"):\n",
|
|
" try:\n",
|
|
" with open(filePath, \"r\") as f:\n",
|
|
" temp = json.load(f)\n",
|
|
" self.runs = temp[\"data\"]\n",
|
|
" self.currentRun = temp[\"current_run\"]\n",
|
|
" self.today = dt.strptime(temp[\"current_day\"], \"%Y-%m-%d\")\n",
|
|
" self.todayString = temp[\"current_day\"]\n",
|
|
" self.manageTime()\n",
|
|
" except FileExistsError:\n",
|
|
" print(\"Could not find file at {}\".format(filePath))\n",
|
|
" except FileNotFoundError:\n",
|
|
" print(\"Could not find file at {}\".format(filePath))\n",
|
|
" print(\"creating file\")\n",
|
|
" try:\n",
|
|
" with open(filePath, \"w\") as f:\n",
|
|
" d = {\n",
|
|
" \"current_run\": self.currentRun,\n",
|
|
" \"current_day\": self.todayString,\n",
|
|
" \"data\": self.runs\n",
|
|
" }\n",
|
|
" json.dump(d, f, indent=4)\n",
|
|
" except Exception as e:\n",
|
|
" print(e)\n",
|
|
" except Exception as e:\n",
|
|
" print(e)\n",
|
|
"\n",
|
|
" def saveDataToFile(self, filePath=\"../runtimestats.json\"):\n",
|
|
" try:\n",
|
|
" print(\"Saving Runs\")\n",
|
|
" with open(filePath, \"w+\") as f:\n",
|
|
" d = {\n",
|
|
" \"current_run\": self.currentRun,\n",
|
|
" \"current_day\": self.todayString,\n",
|
|
" \"data\": self.runs\n",
|
|
" }\n",
|
|
" json.dump(d, f, indent=4)\n",
|
|
" except FileNotFoundError:\n",
|
|
" print(\"Could not find file at {}\".format(filePath))\n",
|
|
" except Exception as e:\n",
|
|
" print(e)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 107,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"{}\n",
|
|
"{'2023-01-11': {'run_1': {'start': 1673465959.694776, 'frequencies': [67, 65, 59, 62, 100], 'end': 1673475545.313309}, 'run_2': {'start': 1673469145.271416, 'end': 1673469136.691883, 'frequencies': [100, 99, 98, 87, 56, 56, 58, 67]}}, '2023-01-10': {'run_1': {'start': 1673465959.694776, 'frequencies': [67, 65, 59, 62], 'end': 1673469136.691883}, 'run_2': {'start': 1673469145.271416, 'end': 1673469136.691883}}, '2023-01-09': {'run_1': {'start': 1673465959.694776, 'frequencies': [67, 65, 59, 62], 'end': 1673469136.691883}, 'run_2': {'start': 1673469145.271416, 'end': 1673469136.691883}}, '2022-12-17': {'run_1': {'start': 0, 'end': 0, 'frequencies': []}}}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"rts = RuntimeStats()\n",
|
|
"print(rts.runs)\n",
|
|
"path = \"/Users/nico/Documents/test/runtimestats.json\"\n",
|
|
"rts.loadDataFromFile(filePath=path)\n",
|
|
"print(rts.runs)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 108,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"removing day 2022-12-17\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.manageTime()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 109,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{'2023-01-11': {'run_1': {'start': 1673465959.694776,\n",
|
|
" 'frequencies': [67, 65, 59, 62, 100],\n",
|
|
" 'end': 1673475545.313309},\n",
|
|
" 'run_2': {'start': 1673469145.271416,\n",
|
|
" 'end': 1673469136.691883,\n",
|
|
" 'frequencies': [100, 99, 98, 87, 56, 56, 58, 67]}},\n",
|
|
" '2023-01-10': {'run_1': {'start': 1673465959.694776,\n",
|
|
" 'frequencies': [67, 65, 59, 62],\n",
|
|
" 'end': 1673469136.691883},\n",
|
|
" 'run_2': {'start': 1673469145.271416, 'end': 1673469136.691883}},\n",
|
|
" '2023-01-09': {'run_1': {'start': 1673465959.694776,\n",
|
|
" 'frequencies': [67, 65, 59, 62],\n",
|
|
" 'end': 1673469136.691883},\n",
|
|
" 'run_2': {'start': 1673469145.271416, 'end': 1673469136.691883}},\n",
|
|
" '2023-01-17': {'run_1': {'start': 0, 'end': 0, 'frequencies': []}}}"
|
|
]
|
|
},
|
|
"execution_count": 109,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.runs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"rts.endRun()\n",
|
|
"print(rts.runs)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"rts.saveDataToFile(filePath=path)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"rts.startRun()\n",
|
|
"print(rts.runs)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"rts.countRunsDay()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"2.66"
|
|
]
|
|
},
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.calculateRunTimeDay(day=\"2023-1-11\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"11.08"
|
|
]
|
|
},
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.calculateRunPercentDay(day=\"2023-1-11\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0.61"
|
|
]
|
|
},
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.calculateRunPercentMultiDay()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"4.42"
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.calculateRunTimeMultiDay()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "KeyError",
|
|
"evalue": "'2023-1-17'",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb Cell 12\u001b[0m in \u001b[0;36mRuntimeStats.addHertzDataPoint\u001b[0;34m(self, frequency)\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=9'>10</a>\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=10'>11</a>\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mruns[\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtodayString][\u001b[39m\"\u001b[39m\u001b[39mrun_\u001b[39m\u001b[39m\"\u001b[39m \u001b[39m+\u001b[39m \u001b[39mstr\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcurrentRun)][\u001b[39m\"\u001b[39m\u001b[39mfrequencies\u001b[39m\u001b[39m\"\u001b[39m]\u001b[39m.\u001b[39mappend(frequency)\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=11'>12</a>\u001b[0m \u001b[39mexcept\u001b[39;00m:\n",
|
|
"\u001b[0;31mKeyError\u001b[0m: '2023-1-17'",
|
|
"\nDuring handling of the above exception, another exception occurred:\n",
|
|
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb Cell 12\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m rts\u001b[39m.\u001b[39;49maddHertzDataPoint(\u001b[39m67\u001b[39;49m)\n",
|
|
"\u001b[1;32m/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb Cell 12\u001b[0m in \u001b[0;36mRuntimeStats.addHertzDataPoint\u001b[0;34m(self, frequency)\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=10'>11</a>\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mruns[\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtodayString][\u001b[39m\"\u001b[39m\u001b[39mrun_\u001b[39m\u001b[39m\"\u001b[39m \u001b[39m+\u001b[39m \u001b[39mstr\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcurrentRun)][\u001b[39m\"\u001b[39m\u001b[39mfrequencies\u001b[39m\u001b[39m\"\u001b[39m]\u001b[39m.\u001b[39mappend(frequency)\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=11'>12</a>\u001b[0m \u001b[39mexcept\u001b[39;00m:\n\u001b[0;32m---> <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HenryPump-Drivers/piflow/runtimestats.ipynb#X13sZmlsZQ%3D%3D?line=12'>13</a>\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mruns[\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtodayString][\u001b[39m\"\u001b[39m\u001b[39mrun_\u001b[39m\u001b[39m\"\u001b[39m \u001b[39m+\u001b[39m \u001b[39mstr\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcurrentRun)][\u001b[39m\"\u001b[39m\u001b[39mfrequencies\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m [frequency]\n",
|
|
"\u001b[0;31mKeyError\u001b[0m: '2023-1-17'"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.addHertzDataPoint(67)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"74.92\n",
|
|
"2023-1-10 missing frequency data for run_2\n",
|
|
"2023-1-9 missing frequency data for run_2\n",
|
|
"70.48\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(rts.calculateAverageHertzDay(\"2023-1-11\"))\n",
|
|
"print(rts.calculateAverageHertzMultiDay())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"runs = {\"run_1\" : {}}\n",
|
|
"runs[\"run_1\"][\"start\"] = dt.timestamp(dt.now())\n",
|
|
"runs[\"run_1\"][\"end\"] = dt.timestamp(dt.now() + td(0,3600))\n",
|
|
"\n",
|
|
"runs[\"run_2\"] = {}\n",
|
|
"runs[\"run_2\"][\"start\"] = dt.timestamp(dt.now() + td(0,3600) +td(0,3600))\n",
|
|
"\n",
|
|
"runs[\"run_2\"][\"end\"] = dt.timestamp(dt.now() + td(0,3600) +td(0,3600) + td(0,3600))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"total_time = 0\n",
|
|
"for key in list(runs.keys()):\n",
|
|
" total_time = runs[key][\"end\"] - runs[key][\"start\"] + total_time"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"print(total_time)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"today = dt.today()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1673991101.567802\n",
|
|
"1674021599.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(dt.timestamp(dt.now()))\n",
|
|
"print(dt.timestamp(dt.strptime(rts.todayString + \" 23:59:59\", \"%Y-%m-%d %H:%M:%S\")))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 47,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'2023-01-17'"
|
|
]
|
|
},
|
|
"execution_count": 47,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"dt.strftime(dt.now(), \"%Y-%m-%d\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"{str(today.year)+\"-\"+str(today.month)+\"-\"+str(today.day): {\"run_1\": {\"start\": dt.timestamp(dt.now()), \"end\": dt.timestamp(dt.now()), \"hz\": [56,60,57,61,59,57,60]}}}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"a = [1,2,4,5]\n",
|
|
"b = [6,7,8,8,89]\n",
|
|
"c = []\n",
|
|
"c += a\n",
|
|
"c += b\n",
|
|
"print(math.fsum(c)/len(c))\n",
|
|
"print((math.fsum(a)/len(a) + math.fsum(b)/len(b))/2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"works\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"t = {\"this\": \"test1\", \"that\": {\"is\": \"a bigger test\"}}\n",
|
|
"del t[\"this\"]\n",
|
|
"try:\n",
|
|
" t[\"those\"]\n",
|
|
"except:\n",
|
|
" print(\"works\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Saving Runs\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"rts.addDay()\n",
|
|
"rts.saveDataToFile(filePath=path)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 78,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-01-17\n",
|
|
"2022-12-17\n",
|
|
"31\n",
|
|
"31\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"days = list(rts.runs.keys())\n",
|
|
"days.sort()\n",
|
|
"print(days[-1])\n",
|
|
"print(days[0])\n",
|
|
"print((dt.strptime(days[-1],\"%Y-%m-%d\") - dt.strptime(days[0], \"%Y-%m-%d\")).days)\n",
|
|
"if (dt.strptime(days[-1],\"%Y-%m-%d\") - dt.strptime(days[0], \"%Y-%m-%d\")).days > 30:\n",
|
|
" print((dt.strptime(days[-1],\"%Y-%m-%d\") - dt.strptime(days[0], \"%Y-%m-%d\")).days)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 110,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"True\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"s = \"Operating in Forward;\"\n",
|
|
"if \"Operating\" in s:\n",
|
|
" print(True)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "webkit",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.12 | packaged by conda-forge | (main, Mar 24 2022, 23:25:14) \n[Clang 12.0.1 ]"
|
|
},
|
|
"orig_nbformat": 4,
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "22238595996e71d7b27448e64f75d285aa95d1182295fdd30f75905446cf0091"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|