python生物信息学数据管理第三章自测题

3.1 读取和写入文件

将文件读取并存为副本

file_r = open('ml.txt', 'r')
file_w = open('ml副本.txt', 'w')

txt = file_r.read()
file_w.write(txt)

file_r.close()
file_w.close()

3.2 计算文件中平均值和标准差并保存到另一个文件

import math

file_r = open('jisuan.txt', 'r')
file_w = open('结果.txt', 'w')

txt = file_r.readlines()
data = []

for line in txt:
    length = float(line.strip()) #去掉文本中的空格和换行符,再将每一行转换成浮点数
    data.append(length)  #data.append(float(line.strip()))
aver = sum(data) / len(data) #求平均数

total= 0.0
for value in data:
    total += (value-aver) ** 2
bzc = math.sqrt(total / len(data))

file_w.write('平均数值'+str(aver)+'\n')   #写入文本需转换成字符串
file_w.write('标准差'+str(round(bzc,2)))  #round(数值,保留的小数位数)

file_r.close()
file_w.close()

3.3 从纯文本文件中读取DNA序列,计算每个碱基出现的频率。还需给出最常见碱基的出现频率、计算DNA序列的GC含量,并将结果写入文本文件

file_r=open('DNA.txt', 'r')
file_w=open('DNA结果.txt', 'w')
txt=file_r.read()
data={}
for i in txt:

    #d[i]代表字典d中符号i对应的键值
    #d.get()有两个参数时,理解为当i对应键值不存在时返回第二个参数作为键值,在本例中代表当i键值不存在时,返回0为i的键值,
    # 加1代表每次遍历到i键值加一,第二次遍历到i时,d.get(i,0)返回1,以此类推。
    #第三次遍历到i时,d.get(i,0)返回2,对应字典中i的键值

    #遍历i对应的字母,如果再下一次遍历则加一,不过不在则返回0,直到遍历完整个txt
    data[i] = data.get(i, 0)+1
del data['\n']   #删除空格
total=sum(data.values()) #将结果返回为list,共有多少个字母
maxfre=0
for i in data:
    file_w.write('{}的频率为{:.1%}\n'.format(i,data[i]/total))   # print("{:.2f}".format(3.1415926))  3.14
    if data[i]>maxfre:
        maxfre=data[i]
        zuigao=i
file_w.write('{}出现频率最高:{:.1%}\n'.format(zuigao,maxfre/total))
file_w.write('GC含量为{:.1%}'.format((data['G']+data['C'])/total))
file_r.close()
file_w.close()

DNA.txt:
CGCCCTTGAGTACTAATTCCTTCCACCGACGCTTAGTCTCCATTCCTCAGCACCAGCTAT
TTGATATAAGGACATCTCTGTATCAAGGTGCTTCGCTGGGTGGGTGGACAAACTACGGAA
TGTAACACCGGATTTTACCCACAAAAAAATTATTCAGAACCTGTGTAGTCTACCCCACGG
CGTTTACGCCGATCCTAGTAGTCACACCTTTTAGGAACCGCTTAATAGGGCAGTGCTCGA
CTATCGAATGCCCTTCGTCAGTGCGAGACGTAATTTTCCACCCTTCCCGTACGCTTGGGT
GAAGCAAGCCGCAAACCTTGAAAGGGAGCAACCAATGCCTCACACTCGAGCCGTATTCTT
GACAGGTCTGTTAATCTCCCTGCTACCTGTCTTGCAGTAACTTCACATTAGCCGTGAAGC
TTCTGTCTGATAGGCGTACCCGCTTGGATAACAGAGCCAGCGCATGCGTAGTAGGAGTCG
GTGAGGATCCTAGAAATGGCGATATACGGGCGAGGAAGAGGCACATGGGTGATAGACCTT
GTTTCGATTATGAGATATAGTCATGTATACGTGCCTTCTGACCCTAGACATGGTATTGGT
CAAATATGTCCACCTCTATACGGCGGCATCACTGACTAGTCTATCTGCCGAGTACGCTGC
AACGACTGCTAGAAGGAGTCAAGTTTCGACAATCGTTCACCTCATCCAACAACCATAACT
TGAACCGAATCGTAACGGGAACTTCTGCCAGGGAGGAACAGTGATTTCCGTTACGGCTTA
GACGTTAAGCCAGACCCGCAAAGGCTACCGAGAACCTCACAAGGATGCCTTGCAGTGACG
TAGCACGGCATGACTCCCATCCATCGCATTGTTCGCATAGCCGAAATTTAACTGCTCTTA
AAGACGCCTTAATTCTGTAATACTTTGCTAATGGTTCCCCCGGTTGACACTCTTCTGGCG
CATTTTCCGCGGGCGCTGACTCTGAGCGGGCTCTCCCCTG

DNA结果.txt
C的频率为26.8%
G的频率为23.0%
T的频率为25.4%
A的频率为24.8%
C出现的频率最高:26.8%
GC含量为49.8%
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值