当前位置: 首页 > news >正文

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

python 3.9实现以下算法。

1. 简单的写文件和读文件

# 写
file1 = open('count.txt','w')
file1.write('this is a test')
file1.close()# 读
file2 = open('my_file')
print(file2.read())

2. 将列表内容写入文本文件

# 生成100-500数字列表
data = [i * 100 for i in range(1, 6)]
print(data)context = []
for value in data:# 将内容追加至context列表context.append(str(value) + '\n')# 写入文件
open('results.txt', 'w').writelines(out)# 文件内容
# 100
# 200
# 300
# 400
# 500

3. 将NCBI Genbank文件转换为fasta文件

Genbank包含了所有已知的核酸和蛋白质序列,以及发表的期刊及生物学注释等信息。

AY810830.gb文件下载:
https://www.ncbi.nlm.nih.gov/nuccore/AY810830
下载.gb文件

genbank_file = open("AY810830.gb")
fasta_file = open("AY810830.fasta","w")flag = False
# 遍历文件每行
for line in genbank_file:# 写入ACCESSION编号if line.startswith('ACCESSION'):accession = line.split()[1].strip()fasta_file.write('>' + accession + '\n')# 存在ORIGIN,则存在fasta序列if line.startswith('ORIGIN'):flag = Trueelif flag:fields = line.split()if fields != []:print(seq)# fasta序列seq = ''.join(fields[1:])fasta_file.write(seq.upper() + '\n')genbank_file.close()
fasta_file.close()

4. 提取fasta序列header信息

fasta_file = open('AY810830.fasta','r')
out_file = open('AY810830.header','w')for line in fasta_file:# > 开头为fasta序列header信息if line.startswith('>'):out_file.write(line)out_file.close()

5. 转换RNA fasta序列为氨基酸序列

# 定义密码子表字典
codon_table = {'GCU':'A', 'GCC':'A', 'GCA':'A', 'GCG':'A', 'CGU':'R', 'CGC':'R',   'CGA':'R', 'CGG':'R', 'AGA':'R', 'AGG':'R', 'UCU':'S', 'UCC':'S','UCA':'S', 'UCG':'S', 'AGU':'S', 'AGC':'S', 'AUU':'I', 'AUC':'I','AUA':'I', 'UUA':'L', 'UUG':'L', 'CUU':'L', 'CUC':'L', 'CUA':'L','CUG':'L', 'GGU':'G', 'GGC':'G', 'GGA':'G', 'GGG':'G', 'GUU':'V','GUC':'V', 'GUA':'V', 'GUG':'V', 'ACU':'T', 'ACC':'T', 'ACA':'T','ACG':'T', 'CCU':'P', 'CCC':'P', 'CCA':'P', 'CCG':'P', 'AAU':'N','AAC':'N', 'GAU':'D', 'GAC':'D', 'UGU':'C', 'UGC':'C', 'CAA':'Q','CAG':'Q', 'GAA':'E', 'GAG':'E', 'CAU':'H', 'CAC':'H', 'AAA':'K','AAG':'K', 'UUU':'F', 'UUC':'F', 'UAU':'Y', 'UAC':'Y', 'AUG':'M','UGG':'W','UAG':'STOP', 'UGA':'STOP', 'UAA':'STOP'}# 读取RNA fasta文件
rna = ''
for line in open('A06662-RNA.fasta'):# 过滤>开头行if not line.startswith('>'): # 拼接序列并去除末尾\nrna = rna + line.strip()# 三个不同阅读框,转换为蛋白序列
for frame in range(3):# 0,1,2protein_seq = '' print('Reading frame ' + str(frame + 1))for i in range(frame, len(rna), 3):codon = rna[i:(i + 3)]if codon in codon_table:# 判断是否为终止密码子if codon_table[codon] == 'STOP':# *符号表示终止密码子protein_seq = protein_seq + '*'else: # 不是终止密码子则添加转换后的氨基酸名称至protein_seqprotein_seq = protein_seq + codon_table[codon]else:# 处理非密码子表里的RNA序列,以-符号表示protein_seq = protein_seq + '-' 	# 每行48个氨基酸打印protein_seqi = 0while i < len(protein_seq):print(protein_seq[i:i + 48])i = i + 48

在这里插入图片描述

6. 将fasta序列转换为字典

P62258氨基酸序列下载:
https://www.ncbi.nlm.nih.gov/protein/P62258
NCBI protein页面

sequences = {}
ac = ''
seq = ''# 遍历fasta文件
for line in open("P62258.fasta"):# header信息保存至字典if line.startswith('>') and seq != '':sequences[ac] = seqseq = ''# >开头则获取蛋白序列编号, 否则添加氨基酸序列至seq变量if line.startswith('>'):ac = line.split('|')[1]else:seq = seq + line.strip()sequences[ac] = seq# 打印全部key
print(sequences.keys())# 打印指定Key字典氨基酸序列
print(sequences['P62258.1'])

sequences['P62258.1']

7. 从pdb文件提取氨基酸序列

PDB数据库是一个数据中心,主要包含:原子坐标,蛋白质结构的其他信息和除蛋白以外生物大分子的信息。pdb文件可以从该数据下载。

牛β-胰蛋白酶 pdb文件下载:
https://www.rcsb.org/structure/1TLD
在这里插入图片描述

# 氨基酸简写字典
aa_codes = {'ALA':'A', 'CYS':'C', 'ASP':'D', 'GLU':'E','PHE':'F', 'GLY':'G', 'HIS':'H', 'LYS':'K','ILE':'I', 'LEU':'L', 'MET':'M', 'ASN':'N','PRO':'P', 'GLN':'Q', 'ARG':'R', 'SER':'S','THR':'T', 'VAL':'V', 'TYR':'Y', 'TRP':'W'}seq = ''
# 遍历.pdb文件
for line in open("1tld.pdb"):# SEQRES开头行为氨基酸序列if line.startswith("SEQRES"):line_split = line.split()print(line_split)# 拼接氨基酸序列for aa_code in line_split[4:]:seq = seq + aa_codes[aa_code]# 打印拼接结果, 每行63个氨基酸
i = 0
print(">1tld")
while i < len(seq):print(seq[i:(i + 64)])i = i + 64

pdb文件SEQRES:
pdb文件SEQRES
seq打印结果:
打印结果

生信算法文章推荐

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

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

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

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

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

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

相关文章:

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

python 3.9实现以下算法。 1. 简单的写文件和读文件 # 写 file1 open(count.txt,w) file1.write(this is a test) file1.close()# 读 file2 open(my_file) print(file2.read())2. 将列表内容写入文本文件 # 生成100-500数字列表 data [i * 100 for i in range(1, 6)] pri…...

【Python】Python异步编程

Python 异步编程 异步编程 异步编程是一种编程范式&#xff0c;通过非阻塞的方式执行任务&#xff0c;允许程序在等待某些操作&#xff08;如I/O操作、网络请求、数据库查询等&#xff09;完成时&#xff0c;继续执行其他任务。这与同步编程&#xff08;或阻塞编程&#xff09…...

pytorch笔记:自动混合精度(AMP)

1 理论部分 1.1 FP16 VS FP32 FP32具有八个指数位和23个小数位&#xff0c;而FP16具有五个指数位和十个小数位Tensor内核支持混合精度数学&#xff0c;即输入为半精度&#xff08;FP16&#xff09;&#xff0c;输出为全精度&#xff08;FP32&#xff09; 1.1.1 使用FP16的优缺…...

R语言ggplot2包绘制世界地图

数据和代码获取&#xff1a;请查看主页个人信息&#xff01;&#xff01;&#xff01; 1. 数据读取与处理 首先&#xff0c;从CSV文件中读取数据&#xff0c;并计算各国每日收入的平均签证成本。 library(tidyverse) ​ df <- read_csv("df.csv") %>% group_…...

【Linux】Linux的权限_1

文章目录 三、权限1. shell外壳2. Linux的用户3. Linux权限管理文件访问者的分类文件类型和访问权限 未完待续 三、权限 1. shell外壳 为什么要使用shell外壳 由于用户不擅长直接与操作系统直接接触和操作系统的易用程度、安全性考虑&#xff0c;用户不能直接访问操作系统。 什…...

日语_远程办公常用日语单词

基本词汇 リモートワーク&#xff08;Rimōto Wāku&#xff09;&#xff1a;远程工作テレワーク&#xff08;Terewāku&#xff09;&#xff1a;远程工作&#xff08;Telework&#xff09;在宅勤務&#xff08;ざいたくきんむ&#xff0c;Zaitaku Kinmu&#xff09;&#xff…...

MTK 平台项目security boot 开启/关闭 及 系统签名流程

以 https://online.mediatek.com/FAQ#/SW/FAQ26691 为基础做如下记录以做备忘&#xff1a; How to Enable/Disable Secure Boot for Security 3.0: 1、 How to Enable Path Enable Preloader /vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/{…...

JDBC连接MySQL

目录 1.数据库编程的必备条件 2.Java的数据库编程JDBC 3.JDBC的工作原理 4.第三方库connector的下载和导包 5.JDBC的使用 使用步骤 &#xff08;1&#xff09;创建数据源对象DataSource &#xff08;2&#xff09;给对象设置必要的属性 &#xff08;3&#xff09;和数据…...

【Qt】【模型视图架构】 在项目视图中启用拖放

文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽&#xff0c;数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用&#xff0c;如果…...

B端产品无爆款,说有的都是忽悠和外行!

前言&#xff1a;网上经常有人讲运营&#xff0c;把C端那一套硬搬到B端&#xff0c;讲的自我陶醉&#xff0c;稍微有点常识的人就知道不能这么玩。 一、什么是B端和C端 B端&#xff08;Business-to-Business&#xff09;是指面向企业客户的市场和产品。B端产品或服务主要是为…...

腾讯云的身份证核验,找不到这个类

文件上传功能在许多Web应用程序中是非常常见的需求之一。然而&#xff0c;由于文件上传存在安全风险&#xff0c;保护用户上传的文件的安全性&#xff0c;以及防止黑客利用上传功能进行攻击是非常重要的。在本文中&#xff0c;我们将讨论一些常见的安全漏洞&#xff0c;并提供一…...

vue3 vue-draggable-next 实现拖拽穿梭框效果

一、vue3 vue-draggable-next 实现拖拽穿梭框效果 <template> <div> <h2>列表 1</h2> <draggable v-model"list1" group"items" tag"transition-group" end"onDragEnd"> <div v-for"(item…...

FreeRTOS【16】直达任务通知使用

1.开发背景 直达任务通知&#xff0c;FreeRTOS 的线程任务提供的接口&#xff0c;可以用作线程唤醒&#xff0c;或者是传递数据&#xff0c;因为是基于线程本身的操作&#xff0c;是轻量级&#xff0c;速度响应更快&#xff0c;适合小内存芯片使用。 事实上本人使用得比较少&am…...

关于软件<PDF文档管理系统V1.0>的介绍

<PDF文档管理系统V1.0>&#xff08;下载地址在最下面&#xff09;是我在2023年发布的<知识辅助系统>的改善以及重新开发版本&#xff0c;软件在重新开发提供了<知识辅助系统>的所有功能的基础上&#xff0c;添加了一些新的功能。软件尽量提供简单、实用的功能…...

Java面试题-Tomcat初级面试题

Tomcat是什么&#xff1f;请简述它的主要功能。 Tomcat是一个开源的Web应用服务器&#xff0c;由Apache软件基金会开发。它是一个实现了Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术的容器&#xff0c;用于处理客户端的请求并返回响应。Tomcat的主要功能如…...

红队内网攻防渗透:内网渗透之windows内网权限提升技术:数据库篇

红队内网攻防渗透 1. 内网权限提升技术1.1 数据库权限提升技术1.1.1 数据库提权流程1.1.1.1 先获取到数据库用户密码1.1.1.2 利用数据库提权工具进行连接1.1.1.3 利用建立代理解决不支持外联1.1.1.4 利用数据库提权的条件及技术1.1.2 Web到Win-数据库提权-MSSQL1.1.3 Web到Win-…...

rust嵌入式开发之总结

我们用rust开发的新版产品刚刚交付&#xff0c;已经在海上安装测试完毕并顺利投产。终于松了口气&#xff0c;同时也有时间和精力来做个全面的总结了。 这个产品&#xff0c;目前差不多有三版&#xff1a; 第一个版本是用crt-thread写的&#xff0c;投产后出了一个内存泄露的…...

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言方法一、使用excel配置表excel转txt文本读取txt数据按配置信息生成僵尸 方法二、使用ScriptableObject 配置关卡信息源码结束语 前言 本节主要是推荐两种实现配置关卡信息&#xff0c;并按表生成僵尸和关卡波次 方法一、使用…...

回溯算法指组合总和

题目&#xff1a; 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 思路&#xff1a; 这种问题…...

java-stream转换map key重复报错解决小记

解决key重复问题 在用stream转成map过程中会有key重复的隐患&#xff0c;如果数据没重复还好&#xff0c;如果重复了会提示 java.lang.IllegalStateException: Duplicate key 8753444332651at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)at ja…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...