Browse Source

Upload files to 'assets/addons/python/molecules'

backup
c2v2zw4k 1 year ago
parent
commit
30251b3413
  1. 96
      assets/addons/python/molecules/energyMolcalc.py
  2. 92
      assets/addons/python/molecules/energyMolcalc1.py
  3. 36
      assets/addons/python/molecules/mol-gen.py
  4. 96
      assets/addons/python/molecules/molEnergycalc.py
  5. 15
      assets/addons/python/molecules/molHEgen.py

96
assets/addons/python/molecules/energyMolcalc.py

@ -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")

92
assets/addons/python/molecules/energyMolcalc1.py

@ -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")

36
assets/addons/python/molecules/mol-gen.py

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

96
assets/addons/python/molecules/molEnergycalc.py

@ -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")

15
assets/addons/python/molecules/molHEgen.py

@ -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…
Cancel
Save