From 5fb5ad0d79b702d3da5080d27b5f4e6e6438bd33 Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Sat, 25 May 2024 18:15:35 +0200 Subject: [PATCH] Add Demo --- Demo.ipynb | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Demo.pdf | Bin 0 -> 27253 bytes 2 files changed, 207 insertions(+) create mode 100644 Demo.ipynb create mode 100644 Demo.pdf diff --git a/Demo.ipynb b/Demo.ipynb new file mode 100644 index 0000000..b0a959c --- /dev/null +++ b/Demo.ipynb @@ -0,0 +1,207 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Data form AC" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "mmo = 0.87\n", + "weight = 248.7\n", + "alt = 300\n", + "ci = 80" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get reference data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "290 300 310 0.5\n", + "240 248.7 250 0.8699999999999989\n" + ] + } + ], + "source": [ + "alts = [250, 270, 290, 310, 330, 350, 370, 390, 410, 430]\n", + "weights = [140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290]\n", + "\n", + "lowerAlt = [_alt for _alt in alts if _alt <= alt][-1]\n", + "upperAlt = [_alt for _alt in alts if _alt >= alt][0]\n", + "ratioAlt = (alt - lowerAlt) / 20.0\n", + "print(lowerAlt, alt, upperAlt, ratioAlt)\n", + "\n", + "lowerWeight = [_weight for _weight in weights if _weight <= weight][-1]\n", + "upperWeight = [_weight for _weight in weights if _weight >= weight][0]\n", + "ratioWeight = (weight - lowerWeight) / 10.0\n", + "print(lowerWeight, weight, upperWeight, ratioWeight)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using Curves directly" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "matrix = {}\n", + "file = open(f\"curve_params_{mmo}.data\", 'r')\n", + "lines = file.readlines()\n", + "file.close()\n", + "\n", + "for i in range(0, len(lines)):\n", + " line = lines[i].split(\";\")\n", + " for j in range(0, len(weights)):\n", + " try:\n", + " matrix[alts[i]][weights[j]] = line[j].strip().split(\",\")\n", + " except KeyError:\n", + " matrix[alts[i]] = {}\n", + " matrix[alts[i]][weights[j]] = line[j].strip().split(\",\")\n", + " except IndexError:\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.821 0.821 0.823 0.824\n", + "0.821 0.824 0.823\n" + ] + } + ], + "source": [ + "def func_root(a, b, c, CI):\n", + " return float(a) * math.sqrt(CI) + float(b) * CI + float(c)\n", + "\n", + "lowerAltLowerWeightMach = round(func_root(*matrix[lowerAlt][lowerWeight], ci), 3)\n", + "lowerAltUpperWeightMach = round(func_root(*matrix[lowerAlt][upperWeight], ci), 3)\n", + "upperAltLowerWeightMach = round(func_root(*matrix[upperAlt][lowerWeight], ci), 3)\n", + "upperAltUpperWeightMach = round(func_root(*matrix[upperAlt][upperWeight], ci), 3)\n", + "print(lowerAltLowerWeightMach, lowerAltUpperWeightMach, upperAltLowerWeightMach, upperAltUpperWeightMach)\n", + "\n", + "ratioedLowerAltMach = round(lowerAltLowerWeightMach + (lowerAltUpperWeightMach - lowerAltLowerWeightMach) * ratioWeight, 3)\n", + "ratioedUpperAltMach = round(upperAltLowerWeightMach + (upperAltUpperWeightMach - upperAltLowerWeightMach) * ratioWeight, 3)\n", + "ratioedMach = round(ratioedLowerAltMach + (ratioedUpperAltMach - ratioedLowerAltMach) * ratioAlt, 3)\n", + "print(ratioedLowerAltMach, ratioedUpperAltMach, ratioedMach)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using LUTs" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "lowerAltMatrix = {}\n", + "upperAltMatrix = {}\n", + "\n", + "file = open(f\"ci2mach_{lowerAlt}_{mmo}.data\")\n", + "lines = file.readlines()\n", + "\n", + "for i in range(0, len(lines)):\n", + " line = lines[i].strip().split(\",\")\n", + " lowerAltMatrix[weights[i]] = line\n", + "\n", + "file = open(f\"ci2mach_{upperAlt}_{mmo}.data\")\n", + "lines = file.readlines()\n", + "\n", + "for i in range(0, len(lines)):\n", + " line = lines[i].strip().split(\",\")\n", + " upperAltMatrix[weights[i]] = line" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.821 0.821 0.823 0.824\n", + "0.821 0.824 0.823\n" + ] + } + ], + "source": [ + "lowerAltLowerWeightMach = float(lowerAltMatrix[lowerWeight][ci])\n", + "lowerAltUpperWeightMach = float(lowerAltMatrix[upperWeight][ci])\n", + "upperAltLowerWeightMach = float(upperAltMatrix[lowerWeight][ci])\n", + "upperAltUpperWeightMach = float(upperAltMatrix[upperWeight][ci])\n", + "print(lowerAltLowerWeightMach, lowerAltUpperWeightMach, upperAltLowerWeightMach, upperAltUpperWeightMach)\n", + "\n", + "ratioedLowerAltMach = round(lowerAltLowerWeightMach + (lowerAltUpperWeightMach - lowerAltLowerWeightMach) * ratioWeight, 3)\n", + "ratioedUpperAltMach = round(upperAltLowerWeightMach + (upperAltUpperWeightMach - upperAltLowerWeightMach) * ratioWeight, 3)\n", + "ratioedMach = round(ratioedLowerAltMach + (ratioedUpperAltMach - ratioedLowerAltMach) * ratioAlt, 3)\n", + "print(ratioedLowerAltMach, ratioedUpperAltMach, ratioedMach)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Demo.pdf b/Demo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6f28d63d9bac413fed84cc7acdcd1e52859b757f GIT binary patch literal 27253 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%0DMTuMhpfo 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 Vb1*i6VPfN8<%A(66_po*`F~kl`~3g_ literal 0 HcmV?d00001