Rosalind工具库:使用Biopython处理生物数据

简介: DNA互补链 Complementing a Strand of DNA根据Waston和Crick的双螺旋学说,DNA是存在两条链,并且根据A-T, C-G反向互补。

DNA互补链 Complementing a Strand of DNA

根据Waston和Crick的双螺旋学说,DNA是存在两条链,并且根据A-T, C-G反向互补。

由于DNA存在两条链,因此在分析基因组DNA序列时,我们需要要对这两条链分别处理。处理这个任务的工具有很多种,比如说EMBOSS/revseq.

问题:给定FASTA格式的DNA序列,判断在这些序列中,有多少条序列的反向互补链和原来的链是相同的。

解答:本来想用命令行工具,但是仔细一看这个题目居然还由条件判断部分,那就只能上biopython了

from Bio import SeqIO
cout = 0
for record in SeqIO.parse("rosalind_rvco.txt","fasta"):
    if str(record.seq) == str(record.reverse_complement().seq):
        count += 1
print(count)

氨基酸翻译 Protein Translation

给定一条DNA序列,我们希望知道这条序列是否是基因组的编码区,如果是编码区,那么我们就需要知道它会翻译成什么样的氨基酸。

img_f962ad2aba110768d1647128598653d9.png
DNA-AA

尽管大部分生物享有相同的翻译机制,比如说起始密码子为(AUG),终止密码子为(UAA,UAG,UGA), 但在部分物种和含DNA的细胞器上存在着遗传密码变体(genetic code variation),比如说脊椎动物的线粒体将AGA和AGG当作终止密码子。

问题:给定一条DNA序列和AA序列,判断从DNA到AA的翻译使用了哪个翻译表?

这个题目非常简单,但是却让我发现原来从DNA到AA的翻译有那么多方式,NCBI上的编号显示一共有将近30种。解题策略就是用Biopython使用不同的密码表去翻译,然后判断结果和AA是否相同。

from Bio.Seq import translate
from Bio.Seq import CodonTable
def check_table(dna,aa):
    for i in CodonTable.ambiguous_dna_by_id:
        if translate(dna,table=i,to_stop=True) == aa:
            return i

data = [line.strip() for line in open("rosalind_ptra.txt")]
check_table(data[0],data[1])

序列质量分布

这题是关于高通量测序下机数据(FASTQ)的质量分布,题目非常的简单,就是对给定的序列统计低于某个阈值的read数,原本打算使用fastp,但是做了好几次都出错。后来发现发现是fastq的phred质量编码出了问题,在历史上曾经出现过三种编码方式

  • fastq-sanger: Phread+33
  • fastq-solexa: Phred+64
  • fastq-illumina: Phred+64

考虑到Rosalind这道题目的还是熟悉Biopython,为了通过就只能用Biopython了

from Bio import SeqIO

for record in SeqIO.parse("rosalind_phre.txt","fastq-sanger"):
    total = sum(record.letter_annotations['phred_quality'])
    mean = total / len(record.letter_annotations['phred_quality'])
    if mean < 27:
        count += 1

FASTQ质量分布 Base Quality Distribution

对于测序仪器而言,一般刚开始的几个碱基由于机器刚启动会存在不稳定导致质量不够,后面几个碱基会因为反应DNA聚合酶活性不够等因素导致质量不佳。

FastQC质控过程就有一个指标判断每个位置上的碱基分布是否符合要求,称之为"Per Base Sequence Quality"

问题: 统计fastq文件每个位置上的碱基的质量平均值,要求给出低于平均值的位置。

答案: 使用biopython读取序列,使用numpy进行矩阵运算

from Bio import SeqIO
import numpy as np
lists = []
for record in SeqIO.parse("rosalind_bphr.fq","fastq-sanger")
    lists.append(record.letter_annotations['phred_quality'])
means = np.mean(np.array(lists), axis=0)
np.sum(means < 24)
目录
相关文章
|
7月前
|
机器学习/深度学习 资源调度 数据可视化
UCB Data100:数据科学的原理和技巧:第十六章到第十八章
UCB Data100:数据科学的原理和技巧:第十六章到第十八章
122 0
|
4月前
|
人工智能 安全 机器人
LLM对齐数据全自动合成!UW华人博士生提出Magpie方法,Macbook Air即可运行
【8月更文挑战第11天】在AI领域,大型语言模型(LLM)的行为对齐一直是个挑战。华盛顿大学研究人员提出名为Magpie的新方法,能自动高效生成高质量指令数据,减少人工干预,提升LLM的对齐效果。通过输入模板,Magpie利用已对齐LLM生成能力自动生成指令数据,仅需少量GPU资源即可创建大规模数据集。实验显示,使用Magpie数据集微调的模型性能媲美传统监督方法。尽管如此,Magpie仍需进一步优化以生成特定领域指令并确保数据安全性。[论文](https://arxiv.org/abs/2406.08464)
167 60
|
4月前
|
机器学习/深度学习 人工智能 数据可视化
斯坦福博士图解AlphaFold 3:超多细节+可视化还原ML工程师眼中的AF3
【8月更文挑战第8天】AlphaFold 3作为AI领域的重大突破,革新了蛋白质结构预测。斯坦福博士通过图解详析了其内部机制,展示了多尺度建模与图神经网络技术如何提升预测精度。尽管存在数据依赖性和计算成本等挑战,AlphaFold 3仍极大地加速了生物学研究与药物开发进程。论文详情参见:https://www.nature.com/articles/s41586-024-07487-w
99 4
|
7月前
|
机器学习/深度学习 人工智能 算法
【Python毕业设计】python基于CatBoost模型的混凝土强度预测研究(源码+数据集+毕业论文)【独一无二】
【Python毕业设计】python基于CatBoost模型的混凝土强度预测研究(源码+数据集+毕业论文)【独一无二】
104 0
|
7月前
|
算法 搜索推荐 数据挖掘
Sentieon | 每周文献-Liquid Biopsy-第三十二期
Sentieon | 每周文献-Liquid Biopsy-第三十二期
47 1
|
数据可视化 数据库
scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取
scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取
1497 0
|
7月前
|
SQL 存储 资源调度
UCB Data100:数据科学的原理和技巧:第十九章到第二十章
UCB Data100:数据科学的原理和技巧:第十九章到第二十章
90 0
|
搜索推荐 算法 数据挖掘
Sentieon | 每周文献-Liquid Biopsy(液体活检)-第十期
Sentieon | 每周文献-Liquid Biopsy(液体活检)-第十期
65 0
Sentieon | 每周文献-Liquid Biopsy(液体活检)-第十期
|
机器学习/深度学习 人工智能 监控
基于深度学习的海洋动物检测系统(Python+YOLOv5+清新界面)
基于深度学习的海洋动物检测系统(Python+YOLOv5+清新界面)
336 0
|
机器学习/深度学习 数据可视化 安全
机场航拍图像检测软件(Python+YOLOv5深度学习模型+清新界面)
机场航拍图像检测软件(Python+YOLOv5深度学习模型+清新界面)
420 0