生信算法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包含了一系列用于视频处理的功能模块,特别是美颜效果的实现…

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、文化多样性:海外短剧系统汇集了来自不同国家和地区的短剧作品,这些作品反映了各自独特的文化背景和社会风貌…

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

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

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

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

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

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

Inception_V2_V3_pytorch

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

【事件总线】EventBus

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

2024届应届生突破1179万人,如何瞄准AI行业,获得高薪职业前景

应届生如何开启AI行业的职业生涯? ©作者|Zhongmei 来源|神州问学 引言 人工智能和数据科学几乎可以在任何产生数据的场合中发挥作用,因为它们开辟了一种全新的范式——让机器能够从数据中提炼出知识。自2011年人工智能走出实验室的门槛&#xff0c…

架构师篇-4、TOGAF-ADM【4A】

内容摘要: 1、4A架构实践 2、架构方法ADM、架构语言、架构工具 本章课程交付: 1、4A架构实践 2、架构方法ADM、架构语言、架构工具 TOGAF核心方法理论 TOGAF 9.2内容结构 ADM架构开发方法 ADM工件 ADM-预备阶段 明确目标建立架构成熟度:如…

金融科技在智能投研领域的革新与未来趋势

金融科技作为当今金融行业的重要驱动力,其在智能投研领域的应用正逐渐改变传统的投资研究模式,引领着行业向更加智能、高效的方向发展。本文将从不同角度探讨金融科技在智能投研领域的革新及未来趋势。 一、技术革新:从数据分析到智能决策 金…

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端…

ONLYOFFICE 编辑器8.1,一个功能全面的编辑器

目录 官网地址:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 一、PDF编辑 二、PPT播放 1. 多样化的幻灯片样式与布局 2. 强大的文本编辑与格式化功能 3. 丰富的图形与图表插入功能 4. 灵活的过渡效果与动画设置 5. 舒适的呈现与演讲辅助功能 6. 便捷的团…

pdf压缩大小,PDF压缩大小不影响清晰度

你是否曾为PDF文件过大而烦恼?想要分享或上传文件时,却因为它的体积而束手无策?别担心,今天我将为大家分享一些简单实用的 PDF 压缩技巧,让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”, 的网站。然后上…