Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
快速读取python文件_Python_Bioinformatics_Fasta - Fatal编程技术网

快速读取python文件

快速读取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文件:

>gi|31563518|ref|NP_852610.1| microtubule-associated proteins 1A/1B light chain 3A isoform b [Homo sapiens] MKMRFFSSPCGKAAVDPADRCKEVQQIRDQHPSKIPVIIERYKGEKQLPVLDKTKFLVPDHVNMSELVKIIRRRLQLNPTQAFFLLVNQHSMVSVSTPIADIYEQEKDEDGFLYMVYASQETFGF
你一次问的问题太多了!关注其中一个

阅读和编写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)