noHup - fasta
type: channel
link: http://www.nohup.cc/tag/fasta/
items: python转换文件格式的一处bug

python转换文件格式的一处bug
type: item
date: 2016-01-30T08:48:00+00:00
description: Overview解决方案 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 有些程序处理类似的格式时，有可能会把下一行或者上一行的信息和本行信息混淆，所以处理完之后最好手动检查一下正负样本交界处的数据。