Overview

在转换fasta格式的文件为chen's format文件时,发现前人的程序有些bug,会将最后一条正样本的class标记为-1于是将程序改了一下,这下就没有问题了。

解决方案

fasta格式如下,第一行为头信息,第二行为氨基酸序列:

>sp|Q2YIT7|VIRB3_BRUA2 Type IV secretion system protein virB3 OS=Brucella abortus (strain 2308) GN=virB3 PE=3 SV=1|1
MTTAPQESNARSAGYRGDPIFKGCTRPAMLFGVPVIPLVIVGGSIVLLSVWISMFILPLIVPIVLVMRQITQTDDQMFRLLGLKAQFRLIHFNRTGRFWRASAYSPIAFTKRKRES

现在需要将其转换为如下格式,以供cksaap以及aaindex算法之用:

MTTAPQESNARSAGYRGDPIFKGCTRPAMLFGVPVIPLVIVGGSIVLLSVWISMFILPLIVPIVLVMRQITQTDDQMFRLLGLKAQFRLIHFNRTGRFWRASAYSPIAFTKRKRES    Q2YIT7  any 1

修改后的python代码如下:

import sys
import re
import fileinput  

check_head = re.compile(r'\>')
seqs = ''
head_line = ''
cls = ''
for line, strin in enumerate(fileinput.input(sys.argv[1])):

    if check_head.match(strin):
        strin_vec=strin.split('|')
        cls = strin_vec[len(strin_vec)-1].strip()
        head_line = strin_vec[1].strip()                
    else:
        seqs = strin.strip()    
        print seqs+'\t'+head_line+'\t'+'any'+'\t'+cls

有些程序处理类似的格式时,有可能会把下一行或者上一行的信息和本行信息混淆,所以处理完之后最好手动检查一下正负样本交界处的数据。