所以我有一个家庭作业的问题,我需要在某些部分计算每个字母的字符。示例文件:
>Rosalind_4451
TGTGCTGAGAATTTGCACCACTCCCGTGTCGATGGTATGAGGGAACTGGTTGTAGAACTG
CGACATTACTTTCTGAGACGCAAGGCGTACAGCCAAATGTGAAGTACAAACCAAGAAGTT
CGGGCCGGTCGTTAAGTATCCCGCATACCACACCTTGAATGGAACCCGTCGGGCCCGGGT
TTTTTAAGGGGTTTAACACACCAGACTAAGGCGTTTTCTGACTTGGAGTCGAGTCGATGG
GATGTACCTATCGAAAGAGGTACTCTATATTTGTACCGTGCAG
>Rosalind_6341
CGACAGGCTCTTTAAATTGCGAAGTGTGCCATCCTACCGCATATGCCTAGCCTAATCTTG
AGCTCGAAACCGGAAATGGAAGCACACCAATGTCTCTCCGAGCTACTGTCCATCTACGTC
ATTGCTGACGTCATATGGGCATTAGTTCCTAATCGTGATAGCGAAGGCGGTTGCGTATAC
GGCTGGTGTGTTCGGGCCAATAACGTAGAAGTATCAACATGACAGCCGTCGTGGGGAACC如何让Python计算4451节和6341节中的字符?文件每次都不同,所以我不能手动让它用字母来计算行数
另外,下面是我的代码
txt = open (input ())
lines = txt.readlines ()
for lines in txt:
if lines == ">Rosalind_9690":
#fin = txt.seek(">Rosalind_9690")
#data1= fin.readlines("Rosalind_4299" to "Rosalind_9690")
a = lines.count("A")
g = lines.count("G")
c = lines.count("C")
t = lines.count("T")
float (a)
float (g)
float (c)
float (t)
CG_con = (g+c)/(a+g+c+t)
print (CG_con)发布于 2019-04-03 04:35:27
字典可以用来保存id和base。如果您事先知道想要的id,您可以遍历字典(通过想要的id)并计算每个id的基数
您可以使用集合中的Counter对每个序列的碱基进行计数。
from collections import Counter
d = {} # dictionary to hold fasta data
file = input('Filename: ')
with open(file, 'r') as fasta:
for line in fasta:
line = line.rstrip()
if line.startswith('>'):
id = line
d[id] = ''
else:
d[id] += line
wanted = ['>Rosalind_4451', '>Rosalind_6341']
for id in wanted:
print(id)
seen = Counter(d[id])
CG_com = (seen.get('G', 0) + seen.get('C', 0)) / sum(seen.values())
print(format(CG_com, '.4f'))对于您的数据,我收到的输出是:
>Rosalind_4451
0.4912
>Rosalind_6341
0.5042发布于 2019-04-03 03:38:57
您可以使用import re和re.split来拆分不同的部分,假设它们遵循相同的格式,然后在每个部分上使用.count()
发布于 2019-04-03 03:55:36
尝试使用以下正则表达式来确定该行是否包含节标题(或者在我们的示例中将其称为分隔符):
'>\w+\_\d+\n‘
这将传递给>Rosalind_4451和>Rosalind_6341格式的分隔符以及类似的分隔符。
当您在一行中找到匹配项时,将所有字母表的计数重新初始化为0。希望这能有所帮助。
附注:确保使用以下语句导入正则表达式。
import rehttps://stackoverflow.com/questions/55482235
复制相似问题