快速读取python文件
我正在读取格式如下的FASTA文件: >gi|31563518|ref|NP_852610.1| microtubule-associated proteins 1A/1B light chain 3A isoform b [Homo sapiens] MKMRFFSSPCGKAAVDPADRCKEVQQIRDQHPSKIPVIIERYKGEKQLPVLDKTKFLVPDHVNMSELVKIIRRRLQLNPTQAFFLLVNQHSMVSVSTPIADIYEQEKDEDGFLYMVYASQETFGF快速读取python文件,python,bioinformatics,fasta,Python,Bioinformatics,Fasta,我正在读取格式如下的FASTA文件: >gi|31563518|ref|NP_852610.1| microtubule-associated proteins 1A/1B light chain 3A isoform b [Homo sapiens] MKMRFFSSPCGKAAVDPADRCKEVQQIRDQHPSKIPVIIERYKGEKQLPVLDKTKFLVPDHVNMSELVKIIRRRLQLNPTQAFFLLVNQHSMVSVSTPIADIYEQEKDEDGFLYMVYASQETF
你一次问的问题太多了!关注其中一个 阅读和编写FASTA文件包含在中(如注释中所建议的) 我注意到您还没有计算JC距离,所以这可能是您需要帮助的地方。 以下是我的想法:
import itertools, math
def computeJC(seq1, seq2):
equal = 0
for base1, base2 in itertools.izip(seq1, seq2):
equal += (base1 == base2)
p = equal / float(len(seq1))
return -3/4 * math.log(1 - 4/3 * p)
itertools.izip技巧解释如下:
这段代码可以处理任何类型的字符串,当seq1或seq2到达末尾时,该外观将停止
其他人可能会提出一个“pythonicone-liner”,但首先要试着理解我的方法。它避免了代码陷入的陷阱:嵌套循环、不必要的分支、运行时列表增长、意大利面代码等等。享受吧 看一看。它支持读取和写入fasta文件。
import itertools, math
def computeJC(seq1, seq2):
equal = 0
for base1, base2 in itertools.izip(seq1, seq2):
equal += (base1 == base2)
p = equal / float(len(seq1))
return -3/4 * math.log(1 - 4/3 * p)