c2v2zw4k
1 year ago
5 changed files with 335 additions and 0 deletions
@ -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 @@ |
|||||||
|
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 @@ |
|||||||
|
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 @@ |
|||||||
|
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 @@ |
|||||||
|
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