gpt4 book ai didi

python - 用 python/biopython 计算 DNA 序列

转载 作者:行者123 更新时间:2023-11-28 17:42:08 25 4
gpt4 key购买 nike

我下面的脚本计算标准 FASTA 文件中序列“CCCCAAAA”和“GGGGTTTT”的出现次数:

>contig00001  
CCCCAAAACCCCAAAACCCCAAAACCCCTAcGAaTCCCcTCATAATTGAAAGACTTAAACTTTAAAACCCTAGAAT

脚本在这里计算 CCCCAAAA 序列 3 次

CCCCAAAACCCCAAAACCCCAAAA(CCCC不算)

有人可以告诉我如何在末尾包含 CCCC 序列作为半数以为此返回值 3.5。

到目前为止,我的尝试都没有成功。

我的脚本如下...

from Bio import SeqIO

input_file = open('telomer.test.fasta', 'r')
output_file = open('telomer.test1.out.tsv','w')
output_file.write('Contig\tCCCCAAAA\tGGGGTTTT\n')

for cur_record in SeqIO.parse(input_file, "fasta") :


contig = cur_record.name
CCCCAAAA_count = cur_record.seq.count('CCCCAAAA')
CCCC_count = cur_record.seq.count('CCCC')

GGGGTTTT_count = cur_record.seq.count('GGGGTTTT')
GGGG_count = cur_record.seq.count('GGGG')
#length = len(cur_record.seq)

splittedContig1=contig.split(CCCCAAAA_count)

splittedContig2=contig.split(GGGGTTTT_count)

cnt1=len(splittedContig1)-1
cnt2=len(splittedContig2)

cnt1+sum([0.5 for e in splittedContig1 if e.startswith(CCCC_count)])) = CCCCAAAA_count
cnt2+sum([0.5 for e in splittedContig2 if e.startswith(GGGG_count)])) = GGGGTTTT_count

output_line = '%s\t%i\t%i\n' % \
(CONTIG, CCCCAAAA_count, GGGGTTTT_count)


output_file.write(output_line)

output_file.close()

input_file.close()

最佳答案

您可以按如下方式使用 split 和 startwith 列表理解:

contig="CCCCAAAACCCCAAAACCCCAAAACCCCTAcGAaTCCCcTCATAATTGAAAGACTTAAACTTTAAAACCCTAGAAT"
splitbase="CCCCAAAA"
halfBase="CCCC"
splittedContig=contig.split(splitbase)
cnt=len(splittedContig)-1
print cnt+sum([0.5 for e in splittedContig if e.startswith(halfBase)])

输出:

3.5
  1. 根据 CCCCAAAA 拆分字符串。它会给出列表,列表中的元素 CCCCAAAA 将被删除
  2. length of splitted - 1给出CCCCAAAA的出现次数
  3. 在拆分后的元素中,寻找以CCCC开头的元素。如果找到,则每次出现加 0.5。

关于python - 用 python/biopython 计算 DNA 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22790729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com