Browse Source

Upload files to 'assets/addons/python/molGenerator/bin'

backup
c2v2zw4k 1 year ago
parent
commit
281a495c1d
  1. 2
      assets/addons/python/molGenerator/bin/backup
  2. 37
      assets/addons/python/molGenerator/bin/filter
  3. 62
      assets/addons/python/molGenerator/bin/reactor

2
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/

37
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)

62
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")
Loading…
Cancel
Save