Получить все молекулы из файла смайлов
Я работаю над файлами.smiles. Файловая структура файла.smiles: http://en.wikipedia.org/wiki/Chemical_file_format
Я хочу получить все атомы из файла смайлов. Это означает, что если имеется один атом "С", это означает, что к ним будет присоединено 4 атома "Н".
Во время поиска я обнаружил, что в python есть некоторые модули, которые могут анализировать формат смайлов, но они не дают поддерживаемых атомов водорода. (например: они дают только "C", а не другие 4 атома "H", связанных с этим атомом "C")
Как я могу найти все атомы, включая связанные атомы 'H', а также с помощью Python.
Пример файла смайлов, который необходимо преобразовать во все атомы, включая связанные атомы "H":
[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]
Заранее спасибо.
5 ответов
Смотрите Open Babel.
Полезные ссылки на сайте Open Babel
- " Гиды"
- возможности
- Использование Python с Open Babel
- Другие инструменты, в том числе инструмент ( obprop)
Смотрите также,
Этот блог (Каспер Стейнманн) по химии с Python (хотя и с использованием Open Babel, но не все)
Обновление Смотрите этот код (не проверено):
mymol = pybel.readstring("smi",
"[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)" + \
"N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H")
print mymol.addh()
Для молекулярного веса соединения, заданного как SMILES, привязки Python Openbabel должны работать:
import pybel
mol = pybel.readfile("smi", "stuff.smi").next()
print mol.molwt
Я хочу получить все атомы из файла смайлов. Это означает, что если имеется один атом "С", это означает, что к ним будет присоединено 4 атома "Н". Это предположение не правильно, это может быть 1,2,3 водорода.
Попробуйте, openbabel, CDK или подобную библиотеку для хеминформатики.
Но зачем вам все атомы из файла?
Попробуйте хмуриться, набор инструментов для хемоинформатики, предназначенный для быстрой разработки алгоритмов, связанных с химией. Он написан почти на 100% Python, а небольшая часть написана на C++.
RDKIT - это четко определенная библиотека хеминформатики на python.
Чтобы прочитать молекулу из улыбок,
from rdkit import Chem
m = Chem.MolFromSmiles('[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]')
После того, как вы прочитаете смайлики в молекуле RDKIT, вы сможете сделать все, что угодно. Посмотрите документацию для получения дополнительной информации.