生信算法8 - HGVS转换与氨基酸字母表

HGVS 概念

HGVS 人类基因组变异协会(Human Genome Variation Society)提出的转录本编号cDNA 参考序列(以前缀“c.”表示)、氨基酸参考序列(以前缀“p.”表示)。cDNA 中一种碱基被另一种碱基取代,以“>”进行表示,如:c.2186A>G,表示与参考序列相比,在第 2186 位置的腺嘌呤(A)被鸟嘌呤(G)所取代;在氨基酸中 p.Asp729Gly,表示在第 729 位置的 Asp(天冬氨酸)被 Gly(甘氨酸)取代。

氨基酸字母与缩写转换表

python3.9实现算法。

# 氨基酸缩写与全称转换字典
dict_AA = {'A': {'Abbreviation': 'Ala', 'CN': '丙氨酸', 'EN': 'Alanine'}, 'F': {'Abbreviation': 'Phe', 'CN': '苯丙氨酸', 'EN': 'Phenylalanine'}, 'C': {'Abbreviation': 'Cys', 'CN': '半胱氨酸', 'EN': 'Cysteine'}, 'U': {'Abbreviation': 'Sec', 'CN': '硒半胱氨酸', 'EN': 'Selenocysteine'}, 'D': {'Abbreviation': 'Asp', 'CN': '天冬氨酸', 'EN': 'Aspartic acid / Aspartate'}, 'N': {'Abbreviation': 'Asn', 'CN': '天冬酰胺', 'EN': 'Asparagine'}, 'E': {'Abbreviation': 'Glu', 'CN': '谷氨酸', 'EN': 'Glutamic acid / Glutamate'}, 'Q': {'Abbreviation': 'Gln', 'CN': '谷氨酰胺', 'EN': 'Glutamine'}, 'G': {'Abbreviation': 'Gly', 'CN': '甘氨酸', 'EN': 'Glycine'}, 'H': {'Abbreviation': 'His', 'CN': '组氨酸', 'EN': 'Histidine'}, 'L': {'Abbreviation': 'Leu', 'CN': '亮氨酸', 'EN': 'Leucine'}, 'I': {'Abbreviation': 'Ile', 'CN': '异亮氨酸', 'EN': 'Isoleucine'},'K': {'Abbreviation': 'Lys', 'CN': '赖氨酸', 'EN': 'Lysine'},    'O': {'Abbreviation': 'Pyl', 'CN': '吡咯赖氨酸', 'EN': 'Pyrrolysine'}, 'M': {'Abbreviation': 'Met', 'CN': '蛋氨酸', 'EN': 'Methionine'}, 'P': {'Abbreviation': 'Pro', 'CN': '脯氨酸', 'EN': 'Proline'}, 'R': {'Abbreviation': 'Arg', 'CN': '精氨酸', 'EN': 'Arginine'}, 'S': {'Abbreviation': 'Ser', 'CN': '丝氨酸', 'EN': 'Serine'}, 'T': {'Abbreviation': 'Thr', 'CN': '苏氨酸', 'EN': 'Threonine'}, 'V': {'Abbreviation': 'Val', 'CN': '缬氨酸', 'EN': 'Valine'}, 'W': {'Abbreviation': 'Trp', 'CN': '色氨酸', 'EN': 'Tryptophan'}, 'Y': {'Abbreviation': 'Tyr', 'CN': '酪氨酸', 'EN': 'Tyrosine'}, 
}# 写入文本
with open("AA_convert.txt", 'w') as fw:fw.write("Letter\tAbbreviation\tCN\tEN\n")for letter, abbr in dict_AA.items():print(letter, ':', abbr)line = "{0}\t{1}\t{2}\t{3}\n".format(letter, abbr.get('Abbreviation', 'ERROR'),abbr.get('CN', 'ERROR'), abbr.get('EN', 'ERROR'))fw.write(line)# 从文本读取为字典
dict_AA = {}
with open("AA_convert.txt", 'r') as fr:# 遍历每行for line in fr.readlines():# 跳过首行if line.startswith('Letter'):continueline = line.strip().split('\t')dict_AA[line[0]] = {'Abbreviation': line[1], 'CN': line[2], 'EN': line[3]}# 打印字典
print(dict_AA)

打印字典

打印全部氨基酸字母表

# 打印全部氨基酸字母表,用于后续re模块正则表达式
s = ''
for letter, abbr in dict_AA.items():if letter != 'Y':s += f"{letter}|"else:s += f"{letter}"
print(s)
#A|F|C|U|D|N|E|Q|G|H|L|I|K|O|M|P|R|S|T|V|W|Y

HGVS写法转换

# 对HGVS写法进行转换
# ANNOVAR注释写法
# SLC25A13:NM_014251:exon1:c.T2C:p.M1T# 转换后写法
# c.2T>C/p.Met1Thr (NM_014251.3) Exon1/18import redef convert_HGVS(hgvs: str, total_exon: int):"""hgvs: 待转换HGVStotal_exon: 基因的全部外显子数量"""# 按:符号分割输入hgvslist_hgvs = hgvs.split(':')gene = list_hgvs[0]exon = nm = cds_change = aa_change = exon_change_position = aa_change_position = ref = alt = ref_aa = alt_aa = ''for context in list_hgvs[1:]:if 'exon' in context:exon = contextif 'NM' in context:nm = contextelif 'c.' in context:cds_change = context# 匹配ref碱基、外显子发生变异的坐标和alt碱基match = re.search(r'([A|T|C|G]*)(\d+)([A|T|C|G]*)', cds_change)if match:# 获取ref碱基ref = match.group(1)# 获取位置exon_change_position = match.group(2)# 获取alt碱基alt = match.group(3)else:raise Exception("ERROR!")elif 'p.' in context:aa_change = context# 匹配ref氨基酸、外显子发生变异对应氨基酸改变的坐标和alt氨基酸match = re.search(r'([A|F|C|U|D|N|E|Q|G|H|L|I|K|O|M|P|R|S|T|V|W|Y]*)(\d+)([A|F|C|U|D|N|E|Q|G|H|L|I|K|O|M|P|R|S|T|V|W|Y]*)', aa_change)if match:# 获取ref氨基酸ref_aa = match.group(1)# 氨基酸改变的坐标aa_change_position = match.group(2)# 获取alt氨基酸alt_aa = match.group(3)# 将字典简写氨基酸转换为三字母缩写氨基酸ref_aa = dict_AA[ref_aa].get('Abbreviation', "ERROR")alt_aa = dict_AA[alt_aa].get('Abbreviation', "ERROR")else:raise Exception("ERROR!")# 调整写法 c.2T>C/p.Met1? (NM_014251.3) Exon1/18hgvs_formated = 'c.{exon_change_position}{ref}>{alt}/p.{ref_aa}{aa_change_position}{alt_aa} ({nm}) {exon}/{total_exon}'.format(exon_change_position=exon_change_position,ref=ref,alt=alt,ref_aa=ref_aa,aa_change_position=aa_change_position,alt_aa=alt_aa,nm=nm,exon= exon.capitalize(),total_exon=total_exon)# 打印中间变量print(gene, exon, cds_change, aa_change, exon_change_position, ref, alt, aa_change_position, ref_aa, alt_aa)return hgvs_formated # 测试
print(convert_HGVS(hgvs='SLC25A13:NM_014251:exon1:c.T2C:p.M1T', total_exon=18))
# c.2T>C/p.Met1Thr (NM_014251) Exon1/18print(convert_HGVS(hgvs='PKD1:NM_001009944:exon15:c.G3496A:p.G1166S', total_exon=46))
# c.3496G>A/p.Gly1166Ser (NM_001009944) Exon15/46

生信算法文章推荐

生信算法1 - DNA测序算法实践之序列操作

生信算法2 - DNA测序算法实践之序列统计

生信算法3 - 基于k-mer算法获取序列比对索引

生信算法4 - 获取overlap序列索引和序列的算法

生信算法5 - 序列比对之全局比对算法

生信算法6 - 比对reads碱基数量统计及百分比统计

生信算法7 - 核酸序列Fasta和蛋白PDB文件读写与检索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据分析——数据预处理

数据预处理 前言一、查看数据数据表的基本信息查看info()示例 查看数据表的大小shape()示例 数据格式的查看type()dtype()dtypes()示例一示例二 查看具体的数据分布describe()示例 二…

算法常见手写代码

1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…

Windows环境如何ssh远程连接本地局域网内的Archcraft系统

文章目录 前言1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 前言 本文主要介绍如何在Archcraft系统中安装Cpolar内网穿透工具,并以实现Windows环境ssh远程连接本地局域网Archcraft系统来说明使用…

相位和展开相位

相位 (Phase) 相位是一个周期信号在一个周期内的位置,通常以角度(度或弧度)表示。在许多应用中,相位被限制在一个周期内。例如,相位通常被限定在 −180∘到 180∘ 或 0∘ 到 360∘ 之间。 示例 −90∘ 表示信号在周…

从基础到高级:视频直播美颜SDK的开发教学

本篇文章,小编将从基础到高级,详细讲解视频直播美颜SDK的开发过程,帮助开发者更好地掌握这一技术。 一、基础知识 什么是视频直播美颜SDK? 视频直播美颜SDK包含了一系列用于视频处理的功能模块,特别是美颜效果的实现…

C++支持哪些继承类型?

在C中,继承是一种面向对象编程(OOP)的特性,它允许一个类(称为派生类或子类)使用另一个类(称为基类或父类)的属性和方法。这种机制提高了代码的重用性,减少了代码的冗余&a…

Linux高并发服务器开发(一)GCC和Make

文章目录 1 工作流程2 静态库和动态库连接2.1 静态连接2.2 动态链接 3 静态库制作和使用4 动态库的制作和使用5 GDB 调试器6 Makefile 1 工作流程 第一步预处理,生成.i 第二部生成汇编文件.s 第三部生成目标代码.o 第四部生成可执行文件 2 静态库和动态库连接 2.1…

使用Mixamo极简绑骨,导入unity中使用

如果你只想专注于角色建模,对于动画设计没有过多精力;如果你想白嫖别人的角色动画,用到自己的模型上;那么,这个网站很适合你:https://www.mixamo.com/ 操作步骤: 首先将自己的模型上传到这个网…

精确控制激励功率,保障晶振正常工作

随着科技的发展,晶振在电子产品中的应用越来越广泛。作为电路中的重要组成部分,晶振的性能直接影响着整个电路的稳定性和可靠性。激励功率是影响晶振性能的关键因素之一,因此,对晶振激励功率的控制至关重要。 一、激励功率的含义…

海外短剧系统,开启你的国际视野

一、海外短剧系统是一个创新且富有吸引力的平台,它能够为用户提供来自世界各地的精彩短剧,从而开启用户的国际视野。 1、文化多样性:海外短剧系统汇集了来自不同国家和地区的短剧作品,这些作品反映了各自独特的文化背景和社会风貌…

在 Git 中创建新分支

在 Git 中创建新分支非常简单。你可以使用 git branch 命令来创建一个新的分支。以下是如何创建新分支的步骤&#xff1a; 首先&#xff0c;确保你当前在 Git 仓库的某个分支上。你可以使用 git status 来查看你当前所在的分支。 使用 git branch <branch-name> 命令来创…

主变变压器保护屏组成,功能介绍

主变变压器保护屏组成&#xff0c;功能介绍 在电力系统中&#xff0c;主变变压器是核心设备之一&#xff0c;对于保障电力系统的稳定运行起着至关重要的作用。为了确保主变变压器的正常运行&#xff0c;需要采用各种保护措施。其中&#xff0c;主变变压器保护屏是其中的重要组成…

Bootstrap 5 网格系统

Bootstrap 5 网格系统 Bootstrap 5 是目前最流行的前端框架之一,它提供了一套强大的网格系统,帮助开发者快速构建响应式布局。本文将详细介绍 Bootstrap 5 的网格系统,包括其工作原理、使用方法以及最佳实践。 什么是 Bootstrap 网格系统? Bootstrap 网格系统是一种基于…

高效DEBUG事务正确性BUG

作者&#xff1a;张旭 MO研发工程师 目录 Part 1. 事务回顾 Part 2. 事务的正确性问题 Part 3. 如何高效 DEBUG 熟悉数据库分布式事务的读者&#xff0c;应该能够理解DEBUG分布式事务正确性问题的BUG是一件非常有挑战的事情。本文主要是给大家介绍一下&#xff0c;MatrixO…

可平滑替代传统FTP的国产FTP方案,了解一下

企业在处理数据传输时&#xff0c;效率和安全性是关键。尽管传统FTP曾被广泛采用&#xff0c;然而&#xff0c;随着企业业务需求的增长&#xff0c;传统FTP在传输速度、安全性、稳定性以及可控性方面的不足逐渐显现。许多企业正在寻找更为高效、安全且用户体验更好的的国产FTP方…

视频监控EasyCVR视频汇聚/智能边缘网关:EasySearch无法探测到服务器如何处理?

安防监控EasyCVR智能边缘网关/视频汇聚网关/视频网关属于软硬一体的边缘计算硬件&#xff0c;可提供多协议&#xff08;RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK&#xff09;的设备接入、音视频采集、视频转码、处理、分发等服务&#xff0c;系统具备实时…

【云原生】Kubernetes网络管理实操

Kubernetes网络管理 文章目录 Kubernetes网络管理资源列表基础环境一、环境准备1.1、绑定映射关系1.2、安装常用软件1.3、关闭swap空间1.4、时间同步 二、部署Docker环境三、部署Kuberenetes集群3.1、配置Kubernetes源3.2、安装Kubernetes所需工具3.3、生成配置文件拉取所需镜像…

Inception_V2_V3_pytorch

Inception_V2_V3_pytorch 在上一节我们已经精度了Inception_V2_V3这篇论文&#xff0c;本篇我们将用pyorch复现论文中的网络结构&#xff01; 从论文中我们可以知道InceptionV3的主要改进为&#xff1a; 5 * 5卷积分解为2个3 * 3卷积核分解为不对称卷积滤波器组 我们可将GoogL…

【事件总线】EventBus

文章目录 概述如何使用如何发布消息如何进行消息监听 来源 概述 事件总线是对发布-订阅模式&#xff08;观察者&#xff09;的一种实现&#xff0c;是一种集中式事件处理机制&#xff0c;允许不同的组件之间进行彼此通信而又不需要相互依赖&#xff0c;达到一种解耦的目的。 …

Doris和ClickHouse详细介绍、优缺点深析、使用场景与选型建议

Apache Doris和ClickHouse&#xff08;CK&#xff09;都是流行的开源OLAP&#xff08;在线分析处理&#xff09;数据库&#xff0c;主要用于大数据分析和实时查询。它们各自有不同的设计理念、功能特点以及适用的使用场景。下面是对这两个数据库的详细介绍&#xff0c;以及它们…