在前面的一篇文章中,我们讲述了蛋白质的组成结构,一共是20种氨基酸。由这20种氨基酸的排列组合,可以得到一条相应的蛋白质链,而这条蛋白质链经过各种螺旋和折叠,会得到一个最终稳定的蛋白质构象,也是我们日常生活中所能够接触到的蛋白质的存在形态。那么在上一篇文章中的表格里面,我们可以看到众多的氨基酸在蛋白质链的中间时候的构象,本文将要讲述一些其他位置所对应的构象,以及其中原子的命名法则。
即使是同一个残基,在位于蛋白质链的不同位置时,也有可能表现出不同的构象。比如在蛋白质的头部时,有可能会出现一些氢离子跟氮原子的成键。而残基位于蛋白质链的中部时,我们往往会略去其中的一个\(H_2O\),跟两侧的其他残基形成2个肽键。具体结构如下表所示:
| 英文名 | 中文名 | 三字母缩写 | 单字母缩写 | 三维结构图 | N起始点结构图 | C终点结构图 |
|---|---|---|---|---|---|---|
| Alanine | 丙氨酸 | Ala | A | ![]() |
![]() |
![]() |
| Arginine | 精氨酸 | Arg | R | ![]() |
![]() |
![]() |
| Asparagine | 天冬酰胺 | Asn | N | ![]() |
![]() |
![]() |
| Asparticacid | 天冬氨酸 | Asp | D | ![]() |
![]() |
![]() |
| Cysteine | 半胱氨酸 | Cys | C | ![]() |
![]() |
![]() |
| Glutamine | 谷氨酰胺 | Gln | Q | ![]() |
![]() |
![]() |
| Glutamicacid | 谷氨酸 | Glu | E | ![]() |
![]() |
![]() |
| Glycine | 甘氨酸 | Gly | G | ![]() |
![]() |
![]() |
| Histidine | 组氨酸 | His | H | ![]() |
![]() |
![]() |
| Isoleucine | 异亮氨酸 | Ile | I | ![]() |
![]() |
![]() |
| Leucine | 亮氨酸 | Leu | L | ![]() |
![]() |
![]() |
| Lysine | 赖氨酸 | Lys | K | ![]() |
![]() |
![]() |
| Methionine | 甲硫氨酸(蛋氨酸) | Met | M | ![]() |
![]() |
![]() |
| Phenylalanine | 苯丙氨酸 | Phe | F | ![]() |
![]() |
![]() |
| Proline | 脯氨酸 | Pro | P | ![]() |
![]() |
![]() |
| Serine | 丝氨酸 | Ser | S | ![]() |
![]() |
![]() |
| Threonine | 苏氨酸 | Thr | T | ![]() |
![]() |
![]() |
| Tryptophan | 色氨酸 | Trp | W | ![]() |
![]() |
![]() |
| Tyrosine | 酪氨酸 | Tyr | Y | ![]() |
![]() |
![]() |
| Valine | 缬氨酸 | Val | V | ![]() |
![]() |
![]() |
当我们把这些生成的构象存储成PDB文件时,我们会发现其中每一个原子在所处的残基内的命名都是唯一的。我们以丙氨酸为例,来解读一下其中的命名法则。
在上面这个结构图中,绿色的代表碳原子,灰色代表氢原子,红色代表氧原子,蓝色代表氮原子。一般我们先找到当前氨基酸的氮基碳原子,由于丙氨酸中只有一个氮原子,因此与氮原子成键的这个碳原子就是我们要找的氮基碳原子,我们将其命名为"CA",对应的氮原子命名为"N"。一般我们会发现,这个氮基碳原子并不是位于主链的顶点,也就是在氨基酸内部还会连接至少2个其他的重原子。我们找到其连接的带氧原子的那个碳原子,将其命名为"C",对应的氧原子命名为"O","CA"表示的是这个碳原子处于\(\alpha\)位。另外一个被氮基碳原子所连接的碳原子,被命名为"CB",也就是\(\beta\)位的碳。按照与氮基碳原子的远近关系,分别用"A,B,G,D,E,Z,H"来标记这些重原子,对应的希腊字母是"\(\alpha,\beta,\gamma,\delta,\epsilon,\zeta,\eta\)"。那么这就是丙氨酸的所有重原子在PDB文件中的命名,如下图是一个含有丙氨酸的蛋白质的PDB文件。
对于氢原子来说,命名是取决于其所连接的碳原子的位置,比如连接氮的氢原子,可以直接命名为"H",连接\(\alpha\)碳的氢原子,可以命名为"HA"。而\(\beta\)位的碳连接了3个氢原子,因此需要加上额外的数字标记,那么对应的命名就是"HB1,HB2,HB3"。并且,这种加数字编号的方法对于重原子也是同样适用的,比如下图所示的色氨酸:
同样的方法我们可以找到氮基碳原子和\(\alpha\)位的氧基碳原子,这样我们就可以按照连接的远近关系对其中的重原子进行命名。比如我们可以\(\beta\)位有1个碳,\(\gamma\)位也是1个碳,\(\delta\)位是2个碳,\(\epsilon\)位有1个氮原子和2个碳原子,\(\zeta\)位有2个碳原子,\(\eta\)位有1个碳原子。那么综合下来,我们将会得到的重原子的命名就是:"C,N,O,CA,CB,CG,CD1,CD2,NE1,CE2,CE3,CZ2,CZ3,CH2",下图是一个真实蛋白质PDB文件中的色氨酸的命名:
PDB格式的文件是最常用于存储蛋白质构象的一种,其中也是以各个氨基酸(残基)为基本单位,在氨基酸内部对原子进行唯一性的命名。本文先通过展示各种氨基酸在蛋白质链的不同位置的结构,介绍各类氨基酸的基础构象。再通过丙氨酸和色氨酸两个案例,详细介绍了在蛋白质链的中的各种氨基酸内部的原子命名法则。需要注意的是,atom_name和atom_type是不一样的,atom_name是一个唯一的标识符,atom_type则是用于导出力场参数的重要标记。
本文首发链接为:https://www.cnblogs.com/dechinphy/p/cnaminos.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958
CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343
51CTO同步链接:https://blog.51cto.com/u_15561675
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应
Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
我在尝试使用Nokogiri构建XML文档时遇到了一个小问题。我想将我的元素之一称为“文本”(请参阅下面粘贴代码的最底部)。通常,要创建一个新元素,我会执行类似以下的操作xml.text--但它似乎是.text是Nokogiri已经用来做其他事情的方法。因此,当我写这行时xml.textNokogiri没有创建名为的新元素但只是写了意味着成为元素内容的文本。我怎样才能让Nokogiri实际制作一个名为的元素??builder=Nokogiri::XML::Builder.newdo|xml|xml.TEI("xmlns"=>"http://www.tei-c.org/ns/1.0"
我在一个简单的RailsAPI中有以下Controller代码:classApi::V1::AccountsControllerehead:not_foundendendend问题在于,生成的json具有以下格式:{id:2,name:'Simpleaccount',cash_flows:[{id:1,amount:34.3,description:'simpledescription'},{id:2,amount:1.12,description:'otherdescription'}]}我需要我生成的json是camelCase('cashFlows'而不是'cash_flows'