科探空谷
  • Home
  • zhimind home
  • Categories
  • Tags
  • Archives
  • 留学
    学校库 专业库 招生库
    工具
    GPA计算器 脑洞背单词 脱口而出

pdb等格式转3D 3Dmol.js




支持的文件格式 file format pdb, sdf, mol2, xyz, and cube formats
注意: createViewer 绑定的 div, position 要设置为 relative, 不然canvas是 absolute的位置.

SMILES 转 2D 分子图像


注: 没有找到有效的SMILES转其他格式的js库,因此没能用js直接转3D, openbabel 转换 脂质分子有错误。
使用 SMILES转成3D结构模型得到转换文件后上传展示3D。
如果有后端支撑(比如 RDKit + streamlit) ,不需要考虑纯js方案。
左右两个区别 好像不是很明显.
Smiles Drawer | RDKit.js

SMILES 直接转3D, 可以使用 rdkit python库。
						
import streamlit as st
from stmol import showmol
import py3Dmol

from rdkit import Chem
from rdkit.Chem import AllChem

st.title('RDKit + Py3DMOL 😀')

def makeblock(smi):
	mol = Chem.MolFromSmiles(smi)
	mol = Chem.AddHs(mol)
	AllChem.EmbedMolecule(mol)
	mblock = Chem.MolToMolBlock(mol)
	return mblock

def render_mol(xyz):
	xyzview = py3Dmol.view()#(width=400,height=400)
	xyzview.addModel(xyz,'mol')
	xyzview.setStyle({'stick':{}, "sphere": {"scale": 0.3}})    # scale 参数要调才好看。
	xyzview.setBackgroundColor('white')
	xyzview.zoomTo()
	showmol(xyzview,height=500,width=800)

compound_smiles=st.text_input('SMILES please','CC')
blk=makeblock(compound_smiles)
render_mol(blk)