From 281a495c1db047d3042f5a5348c808649b8fb6f3 Mon Sep 17 00:00:00 2001 From: c2v2zw4k Date: Mon, 22 May 2023 03:09:27 +0000 Subject: [PATCH] Upload files to 'assets/addons/python/molGenerator/bin' --- assets/addons/python/molGenerator/bin/backup | 2 + assets/addons/python/molGenerator/bin/filter | 37 +++++++++++ assets/addons/python/molGenerator/bin/reactor | 62 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 assets/addons/python/molGenerator/bin/backup create mode 100644 assets/addons/python/molGenerator/bin/filter create mode 100644 assets/addons/python/molGenerator/bin/reactor diff --git a/assets/addons/python/molGenerator/bin/backup b/assets/addons/python/molGenerator/bin/backup new file mode 100644 index 0000000..acf788c --- /dev/null +++ b/assets/addons/python/molGenerator/bin/backup @@ -0,0 +1,2 @@ +current_time=$(date +"%Y-%m-%d_%H:%M:%S") +zip -r "../backup/molDBb_${current_time}.zip" ../database/ \ No newline at end of file diff --git a/assets/addons/python/molGenerator/bin/filter b/assets/addons/python/molGenerator/bin/filter new file mode 100644 index 0000000..e7c9eca --- /dev/null +++ b/assets/addons/python/molGenerator/bin/filter @@ -0,0 +1,37 @@ +def filtrar_moleculas(entrada, saida, limite_inferior, limite_superior=None): + with open(entrada, 'r') as arquivo_entrada, open(saida, 'w') as arquivo_saida: + linha_smile = "" + linha_energia = "" + escrever_molecula = False + + for linha in arquivo_entrada: + if linha.startswith("Smile="): + linha_smile = linha + elif linha.startswith("Energy="): + linha_energia = linha + energia = float(linha_energia.split("=")[1].strip().split(" ")[0]) + + if limite_superior is not None: + if limite_inferior <= energia <= limite_superior: + escrever_molecula = True + else: + escrever_molecula = False + else: + if energia >= limite_inferior: + escrever_molecula = True + else: + escrever_molecula = False + + if escrever_molecula: + arquivo_saida.write(linha_smile) + arquivo_saida.write(linha_energia) + arquivo_saida.write("\n") + +# Filtrar moléculas com energia acima de 200 eV +filtrar_moleculas('../database/reactor/mol.db', '../database/high-energy/200eV.db', 200) + +# Filtrar moléculas com energia entre 100 e 200 eV +filtrar_moleculas('../database/reactor/mol.db', '../database/high-energy/100eV.db', 100, 200) + +# Filtrar moléculas com energia abaixo de 100 eV +filtrar_moleculas('../database/reactor/mol.db', '../database/low-energy/100eV.db', 0, 100) diff --git a/assets/addons/python/molGenerator/bin/reactor b/assets/addons/python/molGenerator/bin/reactor new file mode 100644 index 0000000..2ed5b44 --- /dev/null +++ b/assets/addons/python/molGenerator/bin/reactor @@ -0,0 +1,62 @@ +import random +import subprocess + +# Comando shell a ser executado +shell_script = "sh backup" + +# Executar o script shell +subprocess.call(shell_script, shell=True) + +tabela_periodica = { + 'H': {'energia': 4.5}, + 'C': {'energia': 7.5}, + 'N': {'energia': 10.0}, + 'O': {'energia': 12.0}, + 'F': {'energia': 15.0}, + 'P': {'energia': 18.0}, + 'S': {'energia': 20.0}, + 'Cl': {'energia': 22.0} +} + +def calcular_energia_molecula(molecula): + energia_total = 0 + for elemento, quantidade in molecula.items(): + energia_atomo = tabela_periodica[elemento]['energia'] + energia_total += energia_atomo * quantidade + return energia_total + +def gerar_molecula(): + molecula = {} + simbolos_atomos = ['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl'] + comprimento_molecula = random.randint(5, 15) + + for _ in range(comprimento_molecula): + simbolo = random.choices(simbolos_atomos, weights=[0.2, 0.3, 0.1, 0.1, 0.05, 0.05, 0.05, 0.1])[0] + if simbolo in molecula: + molecula[simbolo] += 1 + else: + molecula[simbolo] = 1 + + return molecula + +# Obter a quantidade de vezes que o loop será executado +quantidade_loop = int(input("Digite a quantidade de vezes que o loop será executado: ")) + +# Realizar o loop +for _ in range(quantidade_loop): + # Gerar a molécula + molecula_gerada = gerar_molecula() + + # Calcular a energia da molécula + energia_molecula = calcular_energia_molecula(molecula_gerada) + + # Salvar no arquivo mol.db + with open('../database/reactor/mol.db', 'a') as arquivo: + arquivo.write("Smile=") + for elemento, quantidade in molecula_gerada.items(): + arquivo.write(elemento + str(quantidade)) + arquivo.write("\n") + arquivo.write("Energy=" + str(energia_molecula) + " eV\n") + arquivo.write("\n") + +# print(f"Molécula gerada: {molecula_gerada} - Energia: {energia_molecula} eV")