yhlhhhhh yhlhhhhh - anthrogenica主页:Sansui Yang CSDN:yhlhhhhh blogger:yhlgeneticslab 综合讨论组

详解AlphaFold生成的PDB文件以及3D打印需要的STL文件

继上篇帖子
https://www.wegene.com/question/25230 
里写的奖预测的模型用3D打印机打印出来,而这其中就涉及到格式转换的问题,但据我所知貌似没有专门的转换工具,所以需要用编程实现。而用编程实现的两个基础就是要知道待转换格式的数据框架和转换格式的数据框架分别是什么,之后再想解决方案。
--------------------
PDB文件部分:
首先我百度了一下,发现网上给的资料并不多,有些给出的则是比较笼统的解释,并没有针对某个实例。这是找到的资料:
https://blog.sciencenet.cn/blog-548663-895916.html
于是我就想通过某种方式打开这个文件并输出到txt上。受以前绘制发育树贴:
https://www.wegene.com/question/24154
的启发,我发现虽然biopython要求的是Newick格式,但是把形如Newick的数据框架放在txt中同样能输出结果,我就想到既然能够直接用txt读取,那为什么不能试试以txt的形式打开呢,于是我打开VScode,写了这一段Python脚本:

截屏2022-01-14_上午10.00_.31_.png

输出结果发现竟然成功了:

截屏2022-01-14_上午10.00_.44_.png

于是我又写了下面一段脚本将结果输出到txt中以方便观察:

截屏2022-01-14_上午10.05_.19_.png

输出结果:

截屏2022-01-14_上午10.07_.05_.png

 
首先根据我目前已有的生物和化学知识可以直接看出:
第一列代表的是微粒类型,ATOM代表原子,TER代表残基
第二列很明显是微粒编号
第三列嘛。。。不知道,先跳过去,一会再看
第四列,氨基酸名称,并且是三字母缩写
第五列,不知道,先跳过
第六列,一看和氨基酸名称的分布相同,并且有向下标序号的感觉,所以猜是氨基酸序列编号
之后看到后面有5列数,其中第3列仿佛和第4列有些分开,所以我猜7,8,9列是一组数据,10,11列是另一种或两种数据。我又看了看7,8,9列都有负有正,况且pdb文件中肯定要有表示位置的数据,所以我猜测7,8,9列分别代表着x,y,z坐标。至于10,11列是什么不知道,也先跳过
最后一列,我一看都是字母,而且大多是CHON,所以是元素符号
之后我就查阅了资料,说第三列是原子名称,第五列是肽链名,第11列是占有率,第12列是温度因子
通过我的感觉以及不断尝试,我发现第3列是带着位置信息的原子名称,规则如下:
第三列表示原子在中心碳或R基的位置

肽键上的原子直接写元素名称即可
字符第一位为元素名称

第二位为从中心碳开始到远中心碳端的距离(从B~Y,不包括C,G)
当R基上存在苯环时,连接苯环的近中心碳端字符第二位为G;该位置的对位碳位置字符第二位则为Z;两临位碳字符第二位按照顺序向下标,并在第三位分别加上1和2以区分两个临位碳;两对位碳的标注方法与临位碳相同

若出现4位的情况,则说明R基上有支链,此时第3位代表的是主链或支链,第4位则代表的才是各个氢原子。
 
emmmm这么说可能比较抽象,我举几个例子吧:
 
甘氨酸:

WechatIMG398.jpeg


WechatIMG399.jpeg

 
亮氨酸:

WechatIMG400.jpeg


WechatIMG401.jpeg

 
苯丙氨酸:

WechatIMG402.jpeg

 
-----------------
STL文件部分:
根据我当时在清华做项目的那段时间教授跟我说的,STL有明码形式和二进制形式,它会将表面用三角来代替以方便打印。但是这执导的信息太少了,于是,我一去问了一下度娘:

二进制STL文件用固定的字节数来给出三角面片的几何信息。
文件起始的80个字节是文件头,用于存贮文件名;
紧接着用 4 个字节的整数来描述模型的三角面片个数,
后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是:
3个4字节浮点数(角面片的法矢量)
3个4字节浮点数(1个顶点的坐标)
3个4字节浮点数(2个顶点的坐标)
3个4字节浮点数(3个顶点的坐标)个
三角面片的最后2个字节用来描述三角面片的属性信息。
一个完整二进制STL文件的大小为三角形面片数乘以 50再加上84个字节。
 

UINT8//Header//文件头
UINT32//Numberoftriangles//三角面片数量
//foreachtriangle(每个三角面片中)
REAL32[3]//Normalvector//法线矢量
REAL32[3]//Vertex1//顶点1坐标
REAL32[3]//Vertex2//顶点2坐标
REAL32[3]//Vertex3//顶点3坐标
UINT16//Attributebytecountend//文件属性统计
 
嘿嘿,谢谢度娘(doge
2022-01-14 • 北京, 北京市, 中国
按热门排序    按默认排序

0 个回复

要回复问题请先登录注册