1

結果ファイルの重複を排除するようにコードを書き込もうとしています。これは、「N/A」の行とその下の行です。これが私が持っているものです:

    with open('false_'+uniprotID+'.txt','w') as fileinput:        
        for index, (start, end) in enumerate(searchPFAM(fname)):       
            for item in lookup[uniprotID]:
                for names in wholelookup[uniprotID]:
                    if re.search(r'\d+',names).group(0)==item and start <= int(item) <= end:
                        result = str(int(item) - start + 1)
                        try:
                            fileinput.write(">{0} | at position {1} | start= {2}, end= {3} | description: {4}\n".format(uniprotID, result, start, end, names))
                            fileinput.write(''.join(makeList[start-1:end]))
                            textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
                            fileinput.write('\n')
                        except ErrorIO as e:
                           break 
                    else:
                        fileinput.write(">{0} | N/A | start= {1}, end= {2} | description: {3} \n".format(uniprotID, start, end, names))
                        fileinput.write(''.join(makeList[start-1:end]))
                        textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
                        fileinput.write('\n')

結果ファイルは次のようになります。

Q14591 | 位置4で| start = 174、end = 196 | 説明:A177T

YQCRHCSKSFSQRSDLVKHQRIH

Q14591 | 該当なし| start = 174、end = 196 | 説明:M418T

YQCRHCSKSFSQRSDLVKHQRIH

Q14591 | 21位| start = 398、end = 420 | 説明:M418T YACSDCTKSFSRRSDLVKHQRIH

Q14591 | 該当なし| start = 398、end = 420 | 説明:M418T

YACSDCTKSFSRRSDLVKHQRIH

4

2 に答える 2

1

後でそれらを除外してみませんか?

于 2012-07-24T01:29:22.640 に答える
0

複製した4行のコードを取得し、それらから関数を作成します。次に、両方の場所から関数を呼び出します。違いをパラメーター化する必要があります。つまり、2つの呼び出しの違いに異なる値を指定できる引数を作成する必要があります。

例えば:

def do_the_common_thing(fileinput, uniprotID, result, start, end, names):
    fileinput.write(">{0} | {1} | start= {2}, end= {3} | description: {4}\n".format(uniprotID, result, start, end, names))
    fileinput.write(''.join(makeList[start-1:end]))
    textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
    fileinput.write('\n')

これは多くの議論です、あなたはより良いリファクタリングを思い付くことができるかもしれません。

于 2012-07-24T00:45:11.373 に答える