c2v2zw4k
1 year ago
3 changed files with 101 additions and 0 deletions
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
current_time=$(date +"%Y-%m-%d_%H:%M:%S") |
||||
zip -r "../backup/molDBb_${current_time}.zip" ../database/ |
@ -0,0 +1,37 @@
@@ -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) |
@ -0,0 +1,62 @@
@@ -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…
Reference in new issue