中大-活性小肽 发表于 2012-11-1 14:44:21

使用Pymol导出3d图形到pdf中

本帖最后由 中大-活性小肽 于 2012-11-4 12:59 编辑

不知大家有没有想过在pdf文档中以3d的方式来浏览和查看Pymol的处理结果呢?
最近我找到了解决的方法,并且已经做了一个样本(见附件)给大家先看一下,感兴趣的可以在附件中下载。你所需要的只是Adobe Reader或者Acrobat阅读器(注:foxit不行),就可以像在Pymol中一样自由的旋转和缩放蛋白分子了。
制作方法目前正在总结当中,过两天贴出来~
附件:样本3dpdf

活性小肽
2012.11.12012.11.4 更新
弄了两天,终于基本上完成了,这里跟大家分享一下,此贴将持续更新中。

背景知识:3d图形文件格式有很多,常见的有VRML(Virtual Reality Modeling Language)、POV(Persistenceof Vision ray-tracer)、3DS(The 3D Studio Format)、OBJ(Wavefront Object Files)及X3D(Extensible 3D Graphics)等,甚至我们的pdb文件也可以称之为3d文件。但也正因为这些文件格式太多而不能互相兼容,所以给我们的使用带来了不便。在2004年,英特尔、波音、Adobe、微软以及30余家公司在西班牙巴塞罗那共同宣布合作开发一个名为U3D的通用3D图形格式标准。旨在让用户无须专用软件,能够像MP3用于视频和JPEG用于静态图像那样,可以免费获得的3D数据编码方式。所以目前在pdf文件中嵌入的3d图形文件格式也主要为u3d,目前3d图形格式在adobe reader阅读器及acrobat中均可正常显示,而foxit等软件还无法查看。思路:以目前的情况来看,主要是先在Pymol中完成图像的处理,得到我们想要的结果以后,经过一个或多个文件格式的转换步骤,最终生成相应的u3d格式文件,然后在将u3d文件嵌入到pdf文件中。
解决方案1:先导出为idtf文件,然后转换为u3d格式,最后嵌入pdf中步骤一:完成图像的处理(不是我们这里要讲的内容)。步骤二:将处理的结果导出为IDTF(Intermediate Data Text Format)格式,这是一个用户可读的文件格式。(在linux和windows下均可完成)# 使用save命令,*为通配符,可将pymol.idtf改成任何你想要的文件名,但是保持idtf为后缀save pymol.idtf, *在这里大家如果仔细点的话就会发现Pymol通常会输出类似下面的一句话:3Daac=20.0, 3Droll=0, 3Dc2c=0 0 1,3Droo=62.45, 3Dcoo=0 0 -62.45这句话在后面可能会用到,大家可以先把它复制后粘贴到一个文本文件中。(注意,在Pymol中进行复制只能使用快捷键Ctrl-C)步骤三:将idtf文件转换为u3d文件。这是关键的一步,需要使用一个叫IDTFConverter的程序。该软件的windows版本我已经放到网盘上了,下载见附件。使用方法如下。Windows环境:首先把压缩文件解压,IDTFConverter程序位于解压后的文件夹内的Bin/Win32/Release文件夹内。接下来调出windows的命令提示符窗口,输入以下命令(假设你把文件直接解压在C盘):C:\ U3D_A_061228_5\Bin\Win32\Release\IDTFConverter.exe -input pymol.idtf -output pymol.u3d上面的pymol.idtf和pymol.u3d均为假想的文件名。Linux环境:Linux环境下没有已编译好的安装文件,所以要使用IDTFConverter的话就只能从源码自己进行编译安装。目前在openSUSE下我已经正常的编译安装并且运行了,而在Ubuntu下虽然也可以编译安装,但是安装后却无法使用,不知是何故。另外,在FreeBSD下测试的话,会直接出现错误而无法完成编译。下面把编译安装的步骤简单的说一下,大家如果有什么问题到时候可以直接问我:1.      源码的下载,我已经放在附件中了(见IDTFConverter for linux)。2.      编译前的准备工作。你可能需要先安装一下的编译环境:Xorg-dev, libltdl-dev, gcc, gcc-c++, gcc46-c++, libpng14-14,libpng14-devel, libjpeg8, libjpeg8-devel, automake, libtool。(如果大家还发现有其他的需要可以帮我补充,如果在你的linux版本中找不到和上面的名字完全一样的安装文件,大致相同就可以了)3.      编译安装如果已经配置好编译环境,那么编译是很快的,一般不会超过十分钟。#将当前工作目录切换到下:./configure
make
make installMac环境下(注:本人未亲测,参考pymolwiki中方法)
#两步即可完成
cmake .
make
这里不能直接安装到系统中,只能类似于windows中的绿色软件那样直接使用编译过程中生成的可执行文件。
在Mac中IDTFConverter的用法和Windows下完全相同,而在linux下则无需在IDTFConverter前加上路径,因为IDTFConverter已经安装到系统的默认搜索路径中了。
至此,u3d文件已经生成了。步骤四:把u3d文件嵌入到pdf文件中。这里有两种可供选择的方法。①如果你已经安装了acrobat 7.0或以后的版本,那么你可以很简单的完成这最后一步了。你所需要做的仅仅是打开一个你想插入该3d图像的pdf文件,然后单击工具>交互对象>添加3D。此时你会看到你的鼠标指针发生了变化,你可以单击并拖动形成一个矩形,该矩形就是将嵌入3D图形的范围,然后在弹出的对话框中选择之前生成的u3d文件即可。现在,你可以将该pdf文件放到任何安装有adobe reader的电脑上来查看该3D图形。②如果你没有安装acrobat,但是安装有某个版本的TeX(如CTeX),那也没有问题,我们可以利用CTeX中的工具来将u3d对象在编译tex文件的过程中嵌入到pdf中。(在windows和linux下均可完成)具体操作如下:把下面的代码复制到文本文件中,并且重命名为pymol.tex(文件名可以改成其他)\documentclass{article}
\usepackage{movie15}
\usepackage{babel}
\usepackage{hyperref}
\begin{document}
\title{PyMOL 3D Objects in PDF}
\author{xiaotai}
\maketitle
\begin{center}
\includemovie[
      poster,
      toolbar, %same as `controls'
      label=pymol.ud3
      text=(pymol.u3d),
      3Dlights=CAD,
      % replace the next line with what PyMOL output
      3Daac=20.0, 3Droll=0, 3Dc2c=0 0 1, 3Droo=62.45, 3Dcoo=0 0 -62.45
]{\linewidth}{\linewidth}{pymol.u3d}
\label{ex3d} A PyMOL object embedded in PDF, using U3D data format.
\end{center}
\end{document}接着用之前Pymol在生成idtf文件时输出的那一行文字替换掉Pymol.tex的相应部分(此处为第16行)。另外,如果你的u3d文件使用了其他的文件名(不是pymol.u3d),请替换掉倒数第四行中的pymol.u3d(其他位置的u3d不替换也没太大的问题)。其他的地方大家也可以酌情修改(如作者,标题等)。然后再调出命令提示符窗口(假设pymol.tex文件在当前工作目录),输入pdflatex pymol.tex可以看到在当前的工作目录生成了一个名为pymol.pdf的文件,这就是我们想要的结果。至于pdf中的文字的修改,就需要去学习一下CTeX,不过我觉得大家如果有空的话可以去尝试一下,这真的是很有用的一个东西。③如果你既没有装acrobat也没有安装CTeX,并且也没有装它们的打算,那可能暂时在windows下就很难这项任务了。不过也不用担心,因为目前已经有两个比较好的在线编译tex文件的网站,虽然我试了一下可能暂时还不能通过编译tex文件来把u3d嵌入到pdf中,不过鉴于其还在不断的发展和完成,这迟早也是可以做到的。所以,可能再过段时间,我们就可以在线完成这件事情了。这两个网址为:ShareLaTex https://www.sharelatex.com/LaTeXLab http://docs.latexlab.org/


解决方案2:先导出为wrl文件,然后转换为pdf文件。步骤一:从Pymol中导出wrl文件save pymol.wrl步骤二:将wrl文件转换为pdf。这里要用到的软件为U3D-2-PDF(见附件),然而需要安装的软件还有MeshLab(见附件)、MikTeX(即CTeX的原型,下载地址为http://www.ctex.org/CTeXDownload/,只需下载203M那个最小版本即可)以及.NETFramework 4(一般系统中已经安装了)。使用方法:把上面这些软件(MeshLab和MikTeX)安装好后,解压U3D-2-PDF压缩文件,双击其中的U3D-2-PDF.exe程序,就可以用图形界面进行操作了,很人性化的设计,还可以调节一些参数。但是,值得说明的一点是,通过这种方法形成的pdf文件中的3d对象颜色可能会与原先的显示有所不同(一般都是灰色)。
一些额外的说明:不论你使用上面的那种方案,最终能够形成的恐怕也只有Cartoon和Surface两种模型(或其组合)的3d图形,所以大家也不要抱太大的期望,比如要让其在pdf中显示对接的结果可能目前还无法做到,不过至于以后能不能实现就是个未知数了。另外,需要说明的是,将三维的分子的文件导出为idtf和wrl格式并不是Pymol的专利,其实在Jmol中也是可以实现的(使用write命令),并且Jmol还可以将Sphere模型导出为3d图形(这可能是相对于Pymol的一点优势吧)。另外,附件中的“示例pdf”是到目前位置我发现的可以通过上面的方法做出的3d效果,大家可以作为借鉴。


附件:IDTFConverter for windows IDTFConverter
          IDTFConverter for linux IDTFConverter
          U3D-2-PDF u3d to pdf
          MeshLab meshlab
          示例pdf

唐·鹏 发表于 2021-8-15 11:54:30

请教这个如何给模型添加颜色呢?

inhibitor 发表于 2015-6-1 15:24:57

感谢分享啊

川大-灰太狼 发表于 2012-11-1 15:09:11

哈哈 相当给力!绝对是有价值的工作,这样pymol可以不需要安装任何插件而被使用到pdf文档中了,一目了然!

西大-song 发表于 2012-11-1 15:12:07

平时汇报什么的就是想要这种效果,生成视频文件又不能操作,这下好了,顶一个

大工-阿里巴巴 发表于 2012-11-1 15:27:09

是不是需要把IDTF文件转化成U3D文件,可惜的就是支持的pdf软件太少了~哈哈~小肽V5啊~~~哈哈

冰晶石 发表于 2012-11-1 15:54:43

{:soso_e163:}这样就是为了演示给别人看用pdf播放,如果写成论文,读者是否可以播放呢

中科院-石头 发表于 2012-11-1 17:27:34

这份确实不错呀,这样拷贝到别的电脑上,也能播放

江大-大牙兔 发表于 2012-11-2 00:44:34

期待小肽的方法总结早日面世!{:soso_e142:}

永在追赶 发表于 2012-11-2 08:50:21

看了一下呀,好牛人呀。{:soso_e179:}

飞毛腿 发表于 2012-11-4 13:59:36

{:soso_e179:}讲解的真详细,太给力了,以后展示分子方便了许多

SYPHU_me 发表于 2012-12-8 18:38:43

这个真好,绝对的好
页: [1] 2 3
查看完整版本: 使用Pymol导出3d图形到pdf中