import random import winkelumrechnungen as wu from typing import List, Tuple import numpy as np from ellipsoide import EllipsoidTriaxial from GHA_triaxial.gha1_ES import jacobi_konstante ell = EllipsoidTriaxial.init_name("KarneyTest2024") def line2example(line: str) -> List: """ Line-String in Liste umwandeln :param line: Line-String :return: Liste mit Zahlenwerten """ split = line.split() example = [float(value) for value in split[:7]] for i, value in enumerate(example): if i < 6: example[i] = wu.deg2rad(value) # example[i] = value return example def get_random_examples(num: int, seed: int = None) -> List: """ Rückgabe zufälliger Beispiele beta0, lamb0, alpha0, beta1, lamb1, alpha1, s12 :param num: Anzahl zufälliger Beispiele :param seed: Random-Seed :return: Liste mit Beispielen """ if seed is not None: random.seed(seed) with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] for i in range(num): example = line2example(lines[random.randint(0, len(lines) - 1)]) examples.append(example) return examples def get_examples(l_i: List) -> List: """ Rückgabe ausgewählter Beispiele beta0, lamb0, alpha0, beta1, lamb1, alpha1, s12 :param l_i: Liste von Indizes :return: Liste mit Beispielen """ with open("Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] for i in l_i: example = line2example(lines[i]) examples.append(example) return examples # beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s def get_random_examples_simple_short(num: int, seed: int = None) -> List: if seed is not None: random.seed(seed) with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] while len(examples) < num: example = line2example(lines[random.randint(0, len(lines) - 1)]) beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example if s < 1 and abs(abs(beta0) - np.pi/2) > 1e-5 and lamb0 != 0 and abs(abs(lamb0) - np.pi) > 1e-5: examples.append(example) return examples def get_random_examples_umbilics_start(num: int, seed: int = None) -> List: if seed is not None: random.seed(seed) with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] while len(examples) < num: example = line2example(lines[random.randint(0, len(lines) - 1)]) beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example if abs(abs(beta0) - np.pi/2) < 1e-5 and (lamb0 == 0 or abs(abs(lamb0) - np.pi) < 1e-5): examples.append(example) return examples def get_random_examples_umbilics_end(num: int, seed: int = None) -> List: if seed is not None: random.seed(seed) with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] while len(examples) < num: example = line2example(lines[random.randint(0, len(lines) - 1)]) beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example if abs(abs(beta1) - np.pi/2) < 1e-5 and (lamb1 == 0 or abs(abs(lamb1) - np.pi) < 1e-5): examples.append(example) return examples def get_random_examples_gamma(group: str, num: int, seed: int = None, length: str = None) -> List: eps = 1e-20 long_short = 2 if seed is not None: random.seed(seed) with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: lines = datei.readlines() examples = [] i = 0 while len(examples) < num and i < len(lines): example = line2example(lines[random.randint(0, len(lines) - 1)]) if example in examples: continue i += 1 beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example gamma = jacobi_konstante(beta0, lamb0, alpha0_ell, ell) if group not in ["a", "b", "c", "d", "e", "de"]: break elif group == "a" and not 1 >= gamma >= 0.01: continue elif group == "b" and not 0.01 > gamma > eps: continue elif group == "c" and not abs(gamma) <= eps: continue elif group == "d" and not -eps > gamma > -1e-17: continue elif group == "e" and not -1e-17 >= gamma >= -1: continue elif group == "de" and not -eps > gamma > -1: continue if length == "short": if example[6] < long_short: examples.append(example) elif length == "long": if example[6] >= long_short: examples.append(example) else: examples.append(example) return examples if __name__ == "__main__": examples_a = get_random_examples_gamma("a", 10, 42) examples_b = get_random_examples_gamma("b", 10, 42) examples_c = get_random_examples_gamma("c", 10, 42) examples_d = get_random_examples_gamma("d", 10, 42) examples_e = get_random_examples_gamma("e", 10, 42) pass