绘制分子的2D和3D图可以使用多种工具和库。以下是一些常用的方法和库,帮助你从原子和键列表绘制分子的2D和3D图。
RDKit 是一个用于化学信息学的开源工具包,支持分子的2D绘制。你可以使用 RDKit 从原子和键列表生成分子对象,并绘制其2D图。
首先,确保你已经安装了 RDKit。你可以使用 conda 安装:
conda install -c conda-forge rdkit
以下是一个示例代码,展示如何使用 RDKit 绘制2D分子图:
from rdkit import Chem
from rdkit.Chem import Draw
# 创建分子对象
mol = Chem.MolFromSmiles('CCO') # 例如,乙醇
# 绘制2D分子图
img = Draw.MolToImage(mol)
img.show()
Py3Dmol 是一个用于3D分子可视化的Python库。你可以使用 Py3Dmol 从原子和键列表生成分子对象,并绘制其3D图。
你可以使用 pip 安装 Py3Dmol:
pip install py3Dmol
以下是一个示例代码,展示如何使用 Py3Dmol 绘制3D分子图:
import py3Dmol
# 创建3D分子对象
view = py3Dmol.view(query='molecule:CCO') # 例如,乙醇
view.setStyle({'stick': {}})
view.show()
Open Babel 是一个用于化学信息学的开源工具包,支持分子的2D和3D绘制。你可以使用 Open Babel 从原子和键列表生成分子对象,并绘制其2D和3D图。
你可以使用 conda 安装 Open Babel:
conda install -c conda-forge openbabel
以下是一个示例代码,展示如何使用 Open Babel 绘制2D和3D分子图:
import openbabel
# 创建分子对象
obConversion = openbabel.OBConversion()
obConversion.SetInAndOutFormats("smi", "mol")
mol = openbabel.OBMol()
obConversion.ReadString(mol, "CCO") # 例如,乙醇
# 绘制2D分子图
obConversion.SetOutFormat("svg")
svg = obConversion.WriteString(mol)
with open("molecule_2d.svg", "w") as f:
f.write(svg)
# 绘制3D分子图
obConversion.SetOutFormat("xyz")
xyz = obConversion.WriteString(mol)
with open("molecule_3d.xyz", "w") as f:
f.write(xyz)
JSmol 是一个用于3D分子可视化的JavaScript库。你可以使用 JSmol 在网页中嵌入3D分子图。
以下是一个示例代码,展示如何使用 JSmol 绘制3D分子图:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://chemapps.stolaf.edu/jmol/jsmol/JSmol.min.js"></script>
</head>
<body>
<script type="text/javascript">
var Info = {
width: 500,
height: 500,
use: "HTML5",
j2sPath: "https://chemapps.stolaf.edu/jmol/jsmol/j2s",
script: "load data/mol/ethanol.mol; wireframe only; spacefill 20%;",
debug: false
};
Jmol.getApplet("jmolApplet0", Info);
</script>
<div id="jmolApplet0" style="width: 500px; height: 500px;"></div>
</body>
</html>
领取专属 10元无门槛券
手把手带您无忧上云