c2v2zw4k
1 year ago
5 changed files with 335 additions and 0 deletions
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
tabela_periodica = { |
||||
'H': {'energia': 4.5}, |
||||
'He': {'energia': 24.6}, |
||||
'Li': {'energia': 5.4}, |
||||
'Be': {'energia': 9.3}, |
||||
'B': {'energia': 8.3}, |
||||
'C': {'energia': 7.5}, |
||||
'N': {'energia': 10.0}, |
||||
'O': {'energia': 12.0}, |
||||
'F': {'energia': 15.0}, |
||||
'Ne': {'energia': 21.6}, |
||||
'Na': {'energia': 5.1}, |
||||
'Mg': {'energia': 7.6}, |
||||
'Al': {'energia': 5.9}, |
||||
'Si': {'energia': 8.2}, |
||||
'P': {'energia': 10.5}, |
||||
'S': {'energia': 10.4}, |
||||
'Cl': {'energia': 12.0}, |
||||
'Ar': {'energia': 15.8}, |
||||
'K': {'energia': 4.3}, |
||||
'Ca': {'energia': 6.1}, |
||||
'Sc': {'energia': 6.6}, |
||||
'Ti': {'energia': 6.8}, |
||||
'V':{'energia' :6.7 }, |
||||
'Cr':{'energia' :6.8 }, |
||||
'Mn':{'energia' :7.4 }, |
||||
'Fe':{'energia' :7.9 }, |
||||
'Co':{'energia' :7.7 }, |
||||
'Ni':{'energia' :7.6 }, |
||||
'Cu':{'energia' :7.7 }, |
||||
'Zn':{'energia' :9.4 }, |
||||
'Ga':{'energia' :5.9 }, |
||||
'Ge':{'energia' :7.9 }, |
||||
'As':{'energia' :9.8 }, |
||||
'Se':{'energia' :9.8 }, |
||||
'Br':{'energia' :11.8 }, |
||||
'Kr':{'energia' :14.0 }, |
||||
'Rb':{'energia' :4.2 }, |
||||
'Sr':{'energia' :5.0 }, |
||||
'Y':{'energia' :6.2 }, |
||||
'Zr':{'energia' :6.6 }, |
||||
'Nb':{'energia' :6.8 }, |
||||
'Mo':{'energia' :7.1 }, |
||||
'Tc':{'energia' :7.3 }, |
||||
'Ru':{'energia' :7.2 }, |
||||
'Rh':{'energia' :7.5 }, |
||||
'Pd':{'energia' :8.3 }, |
||||
'Ag':{'energia' :7.6 }, |
||||
'Cd':{'energia' :8.9 }, |
||||
'In':{'energia' :5.8 }, |
||||
'Sn':{'energia' :7.3 }, |
||||
'Sb':{'energia' :8.6 }, |
||||
'Te':{'energia' :9.0 }, |
||||
'I':{'energia' :10.5 }, |
||||
"Xe": {"energy":12} |
||||
} |
||||
|
||||
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 converter_smiles_para_molecula(smiles): |
||||
molecula = {} |
||||
i = 0 |
||||
while i < len(smiles): |
||||
elemento = '' |
||||
quantidade = 1 |
||||
if smiles[i].isupper(): |
||||
elemento = smiles[i] |
||||
i += 1 |
||||
if i < len(smiles) and smiles[i].islower(): |
||||
elemento += smiles[i] |
||||
i += 1 |
||||
if i < len(smiles) and smiles[i].isdigit(): |
||||
quantidade = int(smiles[i]) |
||||
i += 1 |
||||
if elemento in molecula: |
||||
molecula[elemento] += quantidade |
||||
else: |
||||
molecula[elemento] = quantidade |
||||
return molecula |
||||
|
||||
# Obter o SMILES da molécula do usuário |
||||
smiles = input("Insira o SMILES da molécula: ") |
||||
|
||||
# Converter o SMILES para uma molécula |
||||
molecula = converter_smiles_para_molecula(smiles) |
||||
|
||||
# Calcular a energia da molécula |
||||
energia_molecula = calcular_energia_molecula(molecula) |
||||
|
||||
# Exibir o resultado |
||||
print(f"A energia total da molécula é: {energia_molecula} eV") |
@ -0,0 +1,92 @@
@@ -0,0 +1,92 @@
|
||||
tabela_periodica = { |
||||
'H': {'energia': 4.5}, |
||||
'He': {'energia': 24.6}, |
||||
'Li': {'energia': 5.4}, |
||||
'Be': {'energia': 9.3}, |
||||
'B': {'energia': 8.3}, |
||||
'C': {'energia': 7.5}, |
||||
'N': {'energia': 10.0}, |
||||
'O': {'energia': 12.0}, |
||||
'F': {'energia': 15.0}, |
||||
'Ne': {'energia': 21.6}, |
||||
'Na': {'energia': 5.1}, |
||||
'Mg': {'energia': 7.6}, |
||||
'Al': {'energia': 5.9}, |
||||
'Si': {'energia': 8.2}, |
||||
'P': {'energia': 10.5}, |
||||
'S': {'energia': 10.4}, |
||||
'Cl': {'energia': 12.0}, |
||||
'Ar': {'energia': 15.8}, |
||||
'K': {'energia': 4.3}, |
||||
'Ca': {'energia': 6.1}, |
||||
'Sc': {'energia': 6.6}, |
||||
'Ti': {'energia': 6.8}, |
||||
'V':{'energia' :6.7 }, |
||||
'Cr':{'energia' :6.8 }, |
||||
'Mn':{'energia' :7.4 }, |
||||
'Fe':{'energia' :7.9 }, |
||||
'Co':{'energia' :7.7 }, |
||||
'Ni':{'energia' :7.6 }, |
||||
'Cu':{'energia' :7.7 }, |
||||
'Zn':{'energia' :9.4 }, |
||||
'Ga':{'energia' :5.9 }, |
||||
'Ge':{'energia' :7.9 }, |
||||
'As':{'energia' :9.8 }, |
||||
'Se':{'energia' :9.8 }, |
||||
'Br':{'energia' :11.8 }, |
||||
'Kr':{'energia' :14.0 }, |
||||
'Rb':{'energia' :4.2 }, |
||||
'Sr':{'energia' :5.0 }, |
||||
'Y':{'energia' :6.2 }, |
||||
'Zr':{'energia' :6.6 }, |
||||
'Nb':{'energia' :6.8 }, |
||||
'Mo':{'energia' :7.1 }, |
||||
'Tc':{'energia' :7.3 }, |
||||
'Ru':{'energia' :7.2 }, |
||||
'Rh':{'energia' :7.5 }, |
||||
'Pd':{'energia' :8.3 }, |
||||
'Ag':{'energia' :7.6 }, |
||||
'Cd':{'energia' :8.9 }, |
||||
'In':{'energia' :5.8 }, |
||||
'Sn':{'energia' :7.3 }, |
||||
'Sb':{'energia' :8.6 }, |
||||
'Te':{'energia' :9.0 }, |
||||
'I':{'energia' :10.5 }, |
||||
"Xe": {"energy":12} |
||||
} |
||||
|
||||
|
||||
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 converter_smiles_para_molecula(smiles): |
||||
molecula = {} |
||||
i = 0 |
||||
while i < len(smiles): |
||||
elemento = smiles[i] |
||||
quantidade = 1 |
||||
i += 1 |
||||
if i < len(smiles) and smiles[i].isdigit(): |
||||
quantidade = int(smiles[i]) |
||||
i += 1 |
||||
if elemento in molecula: |
||||
molecula[elemento] += quantidade |
||||
else: |
||||
molecula[elemento] = quantidade |
||||
return molecula |
||||
|
||||
# Obter o SMILES da molécula do usuário |
||||
smiles = input("Insira o SMILES da molécula: ") |
||||
|
||||
# Converter o SMILES para uma molécula |
||||
molecula = converter_smiles_para_molecula(smiles) |
||||
|
||||
# Calcular a energia da molécula |
||||
energia_molecula = calcular_energia_molecula(molecula) |
||||
|
||||
# Exibir o resultado |
||||
print(f"A energia total da molécula é: {energia_molecula} eV") |
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
import random |
||||
|
||||
# Generate a random molecule name |
||||
molecule_name = "CHEMDOOD" + str(random.randint(0, 99999999999)).zfill(11) |
||||
|
||||
# Generate random atom positions and types |
||||
atoms = [] |
||||
for _ in range(14): |
||||
x = round(random.uniform(-2, 2), 4) |
||||
y = round(random.uniform(-2, 2), 4) |
||||
z = round(random.uniform(-2, 2), 4) |
||||
atom_type = random.choice(["O", "C", "N"]) |
||||
atoms.append((x, y, z, atom_type)) |
||||
|
||||
# Generate random bond connections |
||||
bonds = [] |
||||
for i in range(1, 15): |
||||
num_bonds = random.randint(0, 3) |
||||
connected_atoms = random.sample(range(1, 15), num_bonds) |
||||
for atom in connected_atoms: |
||||
bond_type = random.choice([1, 2]) |
||||
if (atom, i, bond_type) not in bonds and (i, atom, bond_type) not in bonds: |
||||
bonds.append((i, atom, bond_type)) |
||||
|
||||
# Generate the final molecule representation |
||||
molecule = f"Molecule Name\n {molecule_name} 0 0.00000 0.00000 0\n[Insert Comment Here]\n 14 15 0 0 0 0 0 0 0 0 1 V2000\n" |
||||
for i, atom in enumerate(atoms, start=1): |
||||
x, y, z, atom_type = atom |
||||
molecule += f" {x:8.4f} {y:8.4f} {z:8.4f} {atom_type} 0 0 0 1 0 0 0 0 0 0 0 0\n" |
||||
for bond in bonds: |
||||
atom1, atom2, bond_type = bond |
||||
molecule += f" {atom1:3d} {atom2:3d} {bond_type} 0 0 0 0\n" |
||||
molecule += "M END\n> <DATE>\n07-08-2009\n" |
||||
|
||||
# Print the generated molecule |
||||
print(molecule) |
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
tabela_periodica = { |
||||
'H': {'energia': 4.5}, |
||||
'He': {'energia': 24.6}, |
||||
'Li': {'energia': 5.4}, |
||||
'Be': {'energia': 9.3}, |
||||
'B': {'energia': 8.3}, |
||||
'C': {'energia': 7.5}, |
||||
'N': {'energia': 10.0}, |
||||
'O': {'energia': 12.0}, |
||||
'F': {'energia': 15.0}, |
||||
'Ne': {'energia': 21.6}, |
||||
'Na': {'energia': 5.1}, |
||||
'Mg': {'energia': 7.6}, |
||||
'Al': {'energia': 5.9}, |
||||
'Si': {'energia': 8.2}, |
||||
'P': {'energia': 10.5}, |
||||
'S': {'energia': 10.4}, |
||||
'Cl': {'energia': 12.0}, |
||||
'Ar': {'energia': 15.8}, |
||||
'K': {'energia': 4.3}, |
||||
'Ca': {'energia': 6.1}, |
||||
'Sc': {'energia': 6.6}, |
||||
'Ti': {'energia': 6.8}, |
||||
'V':{'energia' :6.7 }, |
||||
'Cr':{'energia' :6.8 }, |
||||
'Mn':{'energia' :7.4 }, |
||||
'Fe':{'energia' :7.9 }, |
||||
'Co':{'energia' :7.7 }, |
||||
'Ni':{'energia' :7.6 }, |
||||
'Cu':{'energia' :7.7 }, |
||||
'Zn':{'energia' :9.4 }, |
||||
'Ga':{'energia' :5.9 }, |
||||
'Ge':{'energia' :7.9 }, |
||||
'As':{'energia' :9.8 }, |
||||
'Se':{'energia' :9.8 }, |
||||
'Br':{'energia' :11.8 }, |
||||
'Kr':{'energia' :14.0 }, |
||||
'Rb':{'energia' :4.2 }, |
||||
'Sr':{'energia' :5.0 }, |
||||
'Y':{'energia' :6.2 }, |
||||
'Zr':{'energia' :6.6 }, |
||||
'Nb':{'energia' :6.8 }, |
||||
'Mo':{'energia' :7.1 }, |
||||
'Tc':{'energia' :7.3 }, |
||||
'Ru':{'energia' :7.2 }, |
||||
'Rh':{'energia' :7.5 }, |
||||
'Pd':{'energia' :8.3 }, |
||||
'Ag':{'energia' :7.6 }, |
||||
'Cd':{'energia' :8.9 }, |
||||
'In':{'energia' :5.8 }, |
||||
'Sn':{'energia' :7.3 }, |
||||
'Sb':{'energia' :8.6 }, |
||||
'Te':{'energia' :9.0 }, |
||||
'I':{'energia' :10.5 }, |
||||
"Xe": {"energy":12} |
||||
} |
||||
|
||||
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 converter_smiles_para_molecula(smiles): |
||||
molecula = {} |
||||
i = 0 |
||||
while i < len(smiles): |
||||
elemento = '' |
||||
quantidade = 1 |
||||
if smiles[i].isupper(): |
||||
elemento = smiles[i] |
||||
i += 1 |
||||
if i < len(smiles) and smiles[i].islower(): |
||||
elemento += smiles[i] |
||||
i += 1 |
||||
if i < len(smiles) and smiles[i].isdigit(): |
||||
quantidade = int(smiles[i]) |
||||
i += 1 |
||||
if elemento in molecula: |
||||
molecula[elemento] += quantidade |
||||
else: |
||||
molecula[elemento] = quantidade |
||||
return molecula |
||||
|
||||
# Obter o SMILES da molécula do usuário |
||||
smiles = input("Insira o SMILES da molécula: ") |
||||
|
||||
# Converter o SMILES para uma molécula |
||||
molecula = converter_smiles_para_molecula(smiles) |
||||
|
||||
# Calcular a energia da molécula |
||||
energia_molecula = calcular_energia_molecula(molecula) |
||||
|
||||
# Exibir o resultado |
||||
print(f"A energia total da molécula é: {energia_molecula} eV") |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
import random |
||||
|
||||
def gerar_smiles_molecula(): |
||||
simbolos_atomos = ['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl'] |
||||
comprimento_molecula = random.randint(5, 15) # Determina o comprimento do SMILES da molécula |
||||
|
||||
smiles = '' |
||||
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] |
||||
smiles += simbolo |
||||
|
||||
return smiles |
||||
|
||||
smiles_molecula = gerar_smiles_molecula() |
||||
print("SMILES da molécula de grande energia gerada: ", smiles_molecula) |
Loading…
Reference in new issue