蛋白质中不同氨基酸chi角原子的one-hot表示

2023-11-07 19:20

本文主要是介绍蛋白质中不同氨基酸chi角原子的one-hot表示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蛋白质中的"chi角"(chi angle)通常是指侧链自由旋转的二面角,用于描述氨基酸侧链中的旋转构象。侧链是氨基酸分子的一部分,它们附着在氨基酸主链上,并可以以不同的角度自由旋转。chi角用于描述侧链旋转的几何构象。

不同氨基酸的侧链具有不同数量的chi角,通常分为chi1、chi2、chi3、chi4等。每个chi角表示了侧链上的一个二面角,通常是在侧链的主要链或原子之间的角度。

Chi角的值通常以角度(度)来表示,可以从0度到360度。Chi角的不同构象可以影响蛋白质的立体构象和功能,因此对于研究蛋白质的结构和功能具有重要意义。

import numpy as np### 1. 定义常量## 蛋白质中氨基酸种类,单字母表示
restypes = ['A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P','S', 'T', 'W', 'Y', 'V'
]## 氨基酸单字母和三字母表示的转化
restype_1to3 = {'A': 'ALA','R': 'ARG','N': 'ASN','D': 'ASP','C': 'CYS','Q': 'GLN','E': 'GLU','G': 'GLY','H': 'HIS','I': 'ILE','L': 'LEU','K': 'LYS','M': 'MET','F': 'PHE','P': 'PRO','S': 'SER','T': 'THR','W': 'TRP','Y': 'TYR','V': 'VAL',
}## 不同氨基酸侧链的二面角的原子,Chi1 角,Chi2 角,Chi3 角,Chi4 角
chi_angles_atoms = {'ALA': [],# Chi5 in arginine is always 0 +- 5 degrees, so ignore it.'ARG': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],['CB', 'CG', 'CD', 'NE'], ['CG', 'CD', 'NE', 'CZ']],'ASN': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'OD1']],'ASP': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'OD1']],'CYS': [['N', 'CA', 'CB', 'SG']],'GLN': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],['CB', 'CG', 'CD', 'OE1']],'GLU': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],['CB', 'CG', 'CD', 'OE1']],'GLY': [],'HIS': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'ND1']],'ILE': [['N', 'CA', 'CB', 'CG1'], ['CA', 'CB', 'CG1', 'CD1']],'LEU': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],'LYS': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD'],['CB', 'CG', 'CD', 'CE'], ['CG', 'CD', 'CE', 'NZ']],'MET': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'SD'],['CB', 'CG', 'SD', 'CE']],'PHE': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],'PRO': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD']],'SER': [['N', 'CA', 'CB', 'OG']],'THR': [['N', 'CA', 'CB', 'OG1']],'TRP': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],'TYR': [['N', 'CA', 'CB', 'CG'], ['CA', 'CB', 'CG', 'CD1']],'VAL': [['N', 'CA', 'CB', 'CG1']],
}# This mapping is used when we need to store atom data in a format that requires
# fixed atom data size for every residue (e.g. a numpy array).
atom_types = ['N', 'CA', 'C', 'CB', 'O', 'CG', 'CG1', 'CG2', 'OG', 'OG1', 'SG', 'CD','CD1', 'CD2', 'ND1', 'ND2', 'OD1', 'OD2', 'SD', 'CE', 'CE1', 'CE2', 'CE3','NE', 'NE1', 'NE2', 'OE1', 'OE2', 'CH2', 'NH1', 'NH2', 'OH', 'CZ', 'CZ2','CZ3', 'NZ', 'OXT'
]atom_type_num = len(atom_types)  # := 37.### 2. 定义函数
def chi_angle_atom(atom_index: int) -> np.ndarray:"""Define chi-angle rigid groups via one-hot representations."""chi_angles_index = {}one_hots = []for k, v in chi_angles_atoms.items():## 查看 chi_angles_atoms,atom_types的数据结构## 20种氨基酸每一个chi角的第n位(参数,0-3)原子的编号indices = [atom_types.index(s[atom_index]) for s in v]## 有的氨基酸侧链短,没有四个chi角,用-1 填充indicesindices.extend([-1]*(4-len(indices)))## 键是氨基酸名称,值是indices;例 ARG:[1, 3, 5, 11]chi_angles_index[k] = indicesfor r in restypes:res3 = restype_1to3[r]one_hot = np.eye(atom_type_num)[chi_angles_index[res3]]one_hots.append(one_hot)# list,含有21个array,每个array给出chi角index原子的one-hot编码one_hots.append(np.zeros([4, atom_type_num]))  # Add zeros for residue `X`.#print("one_hots:")#print(len(one_hots))#print(one_hots)# list -> np.ndarray, 指定轴上堆叠多个数组one_hot = np.stack(one_hots, axis=0)# print(one_hot.shape)  # (21, 4, 37)one_hot = np.transpose(one_hot, [0, 2, 1])# print(one_hot.shape)  # (21, 37, 4)return one_hot### 3.调用函数
chi_atom_1_one_hot = chi_angle_atom(1)
chi_atom_3_one_hot = chi_angle_atom(3)print(chi_atom_1_one_hot)
print(chi_atom_3_one_hot)

这篇关于蛋白质中不同氨基酸chi角原子的one-hot表示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365736

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

Ubuntu ftp搭建--配置不同用户不同权限

一、安装VSFTP sudo apt-get install vsftpd 二、添加FTP用户 sudo mkdir /etc/vsftpdsudo useradd -m -d /home/vsftpd vsftpd --用户名为vsftpd,目录和用户名可以自己更改sudo vi /etc/vsftpd/ftpuser.txt --这个到时与vsftp的配置文件对应建立一

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t