分页: 1 / 1
求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-10 14:13
由 ispotato
各位好!
我是化学信息学的初学者, 最近正在研究如何将mol转化为svg图的问题,我是初学者,对svg不太熟悉,希望和请教以下,
1. 如何将mol中的原子坐标与键转化为svg的点和边?
2. 如何着色处理? 还有一些特殊的化学键如何处理?
3. 可有现成的mol2svg转化工具,我想学习一下, 各位高手可否给予一些知识和帮助?
万分感谢您!
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-10 14:30
由 eexpress
自己看描述。
● as ~dmolfile~dchem
p jmol - Molecular Viewer
p jmol-applet - Jmol Java applet
p libchemistry-openbabel-perl - Chemical toolbox library (perl bindings)
p libopenbabel-dev - Chemical toolbox library (development file
p libopenbabel-doc - Chemical toolbox library (documentation)
p libopenbabel4 - Chemical toolbox library
p openbabel - Chemical toolbox utilities (cli)
p pymol - Molecular Graphics System
p python-openbabel - Chemical toolbox library (python bindings)
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-10 14:35
由 eexpress
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-10 16:00
由 ispotato
谢谢楼上的详细资料, 我正在逐个尝试,
看来论坛里藏龙卧虎阿 都是对化学信息学很有研究的高手
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-10 16:19
由 xiooli
用Indigo吧
代码: 全选
from indigo import *
from indigo_renderer import *
import os
class Mol2pic():
def __init__(self, mol_string = '', width = 600, height = 600):
self.idg = Indigo()
self.renderer = IndigoRenderer(self.idg)
self.idg.setOption("render-comment-position", "top")
self.idg.setOption("render-image-size", width, height)
# self.idg.setOption("render-background-color", 1.0, 1.0, 1.0)
self.idg.setOption('render-label-mode', 'forcehide')
self.idg.setOption('render-margins', 5, 5)
self.idg.setOption('render-coloring', True)
self.idg.setOption('render-stereo-old-style', True)
if mol_string:
self.set_mol(mol_string)
def set_mol(self, string, fmt = 'mol'):
#print string
string = string.replace('\\n', '\n')
if os.path.exists(string):
self.mol = self.idg.loadMoleculeFromFile(string)
else:
self.mol = self.idg.loadMolecule(string)
self.mol.foldHydrogens()
def to_pic(self, out_fmt = 'svg', auto_layout = False, filename = None):
self.idg.setOption("render-output-format", out_fmt)
if auto_layout:
self.mol.layout()
if filename:
try:
self.renderer.renderToFile(self.mol, filename)
return filename
except Exception, e:
print e
pass
return self.renderer.renderToBuffer(self.mol).tostring()
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-16 17:25
由 ispotato
eexpress 写了:自己看描述。
● as ~dmolfile~dchem
p jmol - Molecular Viewer
p jmol-applet - Jmol Java applet
p libchemistry-openbabel-perl - Chemical toolbox library (perl bindings)
p libopenbabel-dev - Chemical toolbox library (development file
p libopenbabel-doc - Chemical toolbox library (documentation)
p libopenbabel4 - Chemical toolbox library
p openbabel - Chemical toolbox utilities (cli)
p pymol - Molecular Graphics System
p python-openbabel - Chemical toolbox library (python bindings)
请教一个很棘手的问题,我现在通过调用openbabel,生成化合物SVG图, 经常出现化学键手性的错误问题,这是不是openbabel的bug?
另外,jmol如何生成svg图片?我找了半天 没有找到.. 麻烦您说详细些?
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-16 17:31
由 ispotato
xiooli 写了:用Indigo吧
代码: 全选
from indigo import *
from indigo_renderer import *
import os
class Mol2pic():
def __init__(self, mol_string = '', width = 600, height = 600):
self.idg = Indigo()
self.renderer = IndigoRenderer(self.idg)
self.idg.setOption("render-comment-position", "top")
self.idg.setOption("render-image-size", width, height)
# self.idg.setOption("render-background-color", 1.0, 1.0, 1.0)
self.idg.setOption('render-label-mode', 'forcehide')
self.idg.setOption('render-margins', 5, 5)
self.idg.setOption('render-coloring', True)
self.idg.setOption('render-stereo-old-style', True)
if mol_string:
self.set_mol(mol_string)
def set_mol(self, string, fmt = 'mol'):
#print string
string = string.replace('\\n', '\n')
if os.path.exists(string):
self.mol = self.idg.loadMoleculeFromFile(string)
else:
self.mol = self.idg.loadMolecule(string)
self.mol.foldHydrogens()
def to_pic(self, out_fmt = 'svg', auto_layout = False, filename = None):
self.idg.setOption("render-output-format", out_fmt)
if auto_layout:
self.mol.layout()
if filename:
try:
self.renderer.renderToFile(self.mol, filename)
return filename
except Exception, e:
print e
pass
return self.renderer.renderToBuffer(self.mol).tostring()
Indigo是什么工具?我搜了很久,找不到 可否给个链接?谢谢!
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-17 15:08
由 xiooli
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-23 11:39
由 ispotato
ispotato 写了:xiooli 写了:用Indigo吧
代码: 全选
from indigo import *
from indigo_renderer import *
import os
class Mol2pic():
def __init__(self, mol_string = '', width = 600, height = 600):
self.idg = Indigo()
self.renderer = IndigoRenderer(self.idg)
self.idg.setOption("render-comment-position", "top")
self.idg.setOption("render-image-size", width, height)
# self.idg.setOption("render-background-color", 1.0, 1.0, 1.0)
self.idg.setOption('render-label-mode', 'forcehide')
self.idg.setOption('render-margins', 5, 5)
self.idg.setOption('render-coloring', True)
self.idg.setOption('render-stereo-old-style', True)
if mol_string:
self.set_mol(mol_string)
def set_mol(self, string, fmt = 'mol'):
#print string
string = string.replace('\\n', '\n')
if os.path.exists(string):
self.mol = self.idg.loadMoleculeFromFile(string)
else:
self.mol = self.idg.loadMolecule(string)
self.mol.foldHydrogens()
def to_pic(self, out_fmt = 'svg', auto_layout = False, filename = None):
self.idg.setOption("render-output-format", out_fmt)
if auto_layout:
self.mol.layout()
if filename:
try:
self.renderer.renderToFile(self.mol, filename)
return filename
except Exception, e:
print e
pass
return self.renderer.renderToBuffer(self.mol).tostring()
Indigo是什么工具?我搜了很久,找不到 可否给个链接?谢谢!
我用java调用,类似self.idg.setOption("render-comment-position", 这一类的参数设置,一律不能通过编译,也找不到相关的使用说明,
可有java调用的例子?setOption的这些参数从哪里可以看到如何设置呢?初学者,还请您详细指点了,谢谢!
Re: 求助! 如何把化学结构的文件mol格式,转化为SVG矢量图格式?
发表于 : 2012-05-24 12:28
由 ispotato
问题已经解决,java用Indigo
非常感谢各位牛人的大力协助!学到了不少东西!
谢谢!