-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adicionar informações sobre smiles das moleculas #33
Comments
O código Esse formato o bloco de construção acima possui o código:
Será necessário desenvolver uma forma de automatizar o processo de geração desses códigos, uma vez que fazer isso manualmente será extremamente trabalhoso. |
Tendo o código smiles da molécula com os átomos especiais, o código abaixo gera o smiles_string = '[Q]C1=C([Q])C([R1])=C([Q])C([Q])=C1[R1]'
def smiles_to_xsmiles(smiles_string:str) -> str:
'''
Converts a SMILES string to an extended SMILES string with labels
Parameters
----------
smiles_string : str
SMILES string to be converted
Returns
-------
xsmiles : str
Extended SMILES string with labels
'''
SPECIAL_ATOMS = ['Q', 'R', 'X']
REGULAR_ATOMS = ['C', 'N', 'H', 'O']
xsmiles = ''
labels = []
for i, letter in enumerate(smiles_string):
if letter in SPECIAL_ATOMS:
xsmiles += '*'
labels += [letter]
elif letter.isnumeric():
if smiles_string[i-1] == 'R':
labels[-1] = labels[-1] + letter
else:
xsmiles += letter
elif letter in REGULAR_ATOMS:
xsmiles += letter
labels += ['']
else:
xsmiles += letter
return xsmiles + ' |$' + ';'.join(labels) + '$|'
> smiles_to_xsmiles(smiles_string)
'[*]C1=C([*])C([*])=C([*])C([*])=C1[*] |$Q;;;Q;;R1;;Q;;Q;;R1$|' |
from rdkit import Chem
from rdkit.Chem import Draw
SMILES_LIST = ['[*]C1=C([*])C([*])=C([*])C([*])=C1[*] |$Q;;;R1;;R2;;Q;;R1;;R2$|',
'[*]C1=C([*])C([*])=C(C2=C([*])C([*])=C([*])C([*])=C2[*])C([*])=C1[*] |$Q;;;R1;;R4;;;;R4;;R1;;Q;;R2;;R3;;R3;;R2$|',
'c1c(O)cccn1',
'c1c(F)c(C)ccn1',
'c1cc(Cl)c(F)cn1']
NAMES_LIST = ['Benzene', "1-1'-biphenyl", 'c1c(O)cccn1', 'c1c(F)c(C)ccn1', 'c1cc(Cl)c(F)cn1']
mols = [Chem.MolFromSmiles(smi) for smi in SMILES_LIST]
Draw.MolsToGridImage(mols,
molsPerRow=3,
legends=NAMES_LIST,
subImgSize=(300,200),
useSVG=True) Esse código gera uma imagem com todas as moléculas. |
|
O código: from rdkit import Chem
from rdkit.Chem import Draw
NAME = [i['name'] for i in BB_C2]
SMILES = [i['xsmiles'] + ' ' + i['xsmiles_label'] for i in BB_C2]
CODE = [i['code'] for i in BB_C2]
mols = [Chem.MolFromSmiles(smi) for smi in SMILES]
Draw.MolsToGridImage(mols,
molsPerRow=4,
legends=CODE,
subImgSize=(500,250),
useSVG=True) Gera a imagem: |
Blocos de construção C3:
|
Grupos R:
|
Grupos Q:
|
Motivação
Atualmente os blocos de construção e grupos químicos são armazenados na no formato
xyz
. É possível também adicionar as informações no formato smiles também:Para o benzeno tripodal:
Organic core: C1=CC=CC=C1
Building Block: [Q]C1=C([Q])C([R1])=C([Q])C([Q])=C1[R1]
O que deve ser feito?
Alterar a forma como as informações são salvas internamente para um formato
json
que contenha as posições atômicas mas também outras informações sobre os blocos de construção. Considerar utilizar um formato Chemical JSON.Os códigos para ler o BuildingBlock e criar o Retículo devem utilizar esses arquivos, além de herdar a informação do código SMILES.
Etapas para a realização desta tarefa:
O que será obtido ao final dessa tarefa?
Possui prazo limite de conclusão?
Mais alguma outra coisa?
The text was updated successfully, but these errors were encountered: