Python脚本:没有输出,但没有错误?
我有一系列的短DNA比对,我想追踪其中的位置和各种不匹配。路线之间用“---”分隔,因此文件如下所示:Python脚本:没有输出,但没有错误?,python,Python,我有一系列的短DNA比对,我想追踪其中的位置和各种不匹配。路线之间用“---”分隔,因此文件如下所示: TTCGCTTGCAGAGAGAAATCAC ||||| |||||||||||||||| TTCGCATGCAGAGAGAAATCAC -- TGCTCACCTCTCTTTCTGTCAGT ||||||||||||||| ||||||| TGCTCACCTCTCTTTGTGTCAGT -- TGCTCAC-TGCTCTTTCTGTCAG ||||||| | ||||||||||||| TGC
TTCGCTTGCAGAGAGAAATCAC
||||| ||||||||||||||||
TTCGCATGCAGAGAGAAATCAC
--
TGCTCACCTCTCTTTCTGTCAGT
||||||||||||||| |||||||
TGCTCACCTCTCTTTGTGTCAGT
--
TGCTCAC-TGCTCTTTCTGTCAG
||||||| | |||||||||||||
TGCTCACCT-CTCTTTCTGTCAG
--
5,'T A'
15,'C G'
7,'- C'
9,'G -'
我有一个使用BioPython创建对齐对象的短脚本,我想将结果写入如下文件:
TTCGCTTGCAGAGAGAAATCAC
||||| ||||||||||||||||
TTCGCATGCAGAGAGAAATCAC
--
TGCTCACCTCTCTTTCTGTCAGT
||||||||||||||| |||||||
TGCTCACCTCTCTTTGTGTCAGT
--
TGCTCAC-TGCTCTTTCTGTCAG
||||||| | |||||||||||||
TGCTCACCT-CTCTTTCTGTCAG
--
5,'T A'
15,'C G'
7,'- C'
9,'G -'
这是我到目前为止写的脚本。它不返回任何错误,也不返回任何输出。非常感谢您的帮助/指导
#!/usr/bin/python
from __future__ import print_function
from itertools import groupby
from Bio import Alphabet
from Bio.Align.Generic import Alignment
from Bio.Align import AlignInfo
from Bio.Align.AlignInfo import SummaryInfo
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC, Gapped
def align_iter(tmp2):
"""given an alignment file, yield tuples of topline, pipes, bottomline"""
al = open('tmp2', 'r')
alniter = (x[1:3] for x in groupby(al, lambda line: line[0] == "-")) ## split file on '--'
align = Alignment(Gapped(IUPAC.unambiguous_dna, "-")) ## these are gapped alignments
for align in alniter: # for i in range(len(alniter(i)))
align.add_sequence("full", x[1]) ### together the 3 lines are the alignment
align.add_sequence("pipes", x[2])
align.add_sequence("mature", x[3])
"""
for each mismatch in the alignment, print out the mismatching pairs
and their index position
"""
def reportMismatch(align):
for i,c in enumerate(align): #### want to return an iterator, i think
if " "==str(x[2].seq): ### where ever there's a mismatch in the alignment (no pipe),
yield "{}".format(i) ### return the column and its index
for i in reportMismatch():
with open('Out.txt', 'a') as f: ### write the results to a file
print(i, align.get_column(i), file=f) ### including the position (index) and column contents
Python脚本需要一个主入口点来运行它 在脚本底部添加以下代码:
if __name__ == '__main__':
# Call the function you want to invoke.
然后,您至少可以看到您的函数正在执行。然后您可以开始进一步调试。这就是您的整个脚本吗?没有任何函数调用这些函数。行
产生“{}”。format(i)
将创建一个生成器。您的注释表明您可能希望返回值,而不是生成值。旁注:itertools.groupby
为组和分组元素的生成器返回两个元组(一对)x[1:3]
将生成一个仅包含生成器的元组(切片要求两个元素,但从索引1开始只有一个元素),而该生成器无法被索引。除此之外,当您使用结果时,您迭代命名组align
,然后索引x
,这是双重错误;没有x
,无法对生成器编制索引。这就是你真正想要的groupby
?也许你想要一些其他的groupby
,例如熊猫(从未使用过)?在这些情况下,我所做的是,在每几行之后,在每个if
语句中,添加命令print(number)
,其中number
每次增加1,然后我计算出程序的输出数量,然后我会看到哪些遗漏了,我可以用它来定位问题