目录
写在前面
ROSALIND: https://rosalind.info/problems/locations/
Rosalind是一个通过解决问题来学习生物信息学和编程的平台。使用此刷题网站的好处是在学习生物信息学的同时,能够加强编程能力,并且在实践中学习,快速进步。
在此将题目与答案记录下来,方便日后翻阅查看,如有错误还望读者批评指正。
刷题之前,需要提前安装配置好python。 笔者使用的python版本是3.9.7,版本不同,相应的代码可能会有差别,需要注意一下。
1、Counting DNA Nucleotides
Problem
碱基是组成遗传密码的基本单元,其中碱基A、G、C、T存在于DNA中,而A、G、C、U存在于RNA中。(A:腺嘌呤,G:鸟嘌呤,C:胞嘧啶,T:胸腺嘧啶,U:尿嘧啶)
DNA双螺旋结构中,位于两条方向相反、相互平行多核苷酸链上的嘌呤嘧啶碱基,围绕着螺旋轴,通过形成氢键,互相搭配成对,称为碱基配对。碱基配对,即一条长链上的A,总是与另一条长链上的T形成氢键; 而G总是与C形成氢键。即A=T、G≡C。
Given: 一条DNA链 s ,其长度不超过1000 nt。
Return: 四个整数(用空格分隔),分别计算符号“A”、“C”、“G”和“T”在 s 中出现的次数。
Sample Dataset
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
Sample Output
20 12 17 21
Code
# Counting DNA Nucleotides
def count(s):
A_count = s.count("A")
C_count = s.count("C")
G_count = s.count("G")
T_count = s.count("T")
return A_count, C_count, G_count, T_count
example = "AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"
A, C, G, T = count(example)
print(f"{
A} {
C} {
G} {
T}")
with open('rosalind_dna.txt', 'r') as file:
DNA = file.read()
# print(f"The length of this file is {len(DNA)}")
A, C, G, T = count(DNA)
print(f"{
A} {
C} {
G} {
T}")
Output
20 12 17 21
215 243 237 245
注意
- 答题时,会下载一个文件,需要基于下载的文件进行操作
- 每次下载的