BioPythonFaq about [BLAST] <> === BLAST 결과의 파싱 === '''Q.''' WwwBlast를 돌리고 나서 얻어지는 결과를 파싱하면, GenBank ID가 안나옵니다. 결과 HTML화일을 들춰보니, 아래와 같이 GenBank부분이 href 링크부분 list_uids라는 곳에 숨어있습니다. 따라서 이내용이 파싱이 안됩니다. GenBank ID 항목을 따로 파싱하는 파서를 만들어야 할까요? 해결안을 아시는분? {{{ gb|AAA32660.1| (M32884) leghemoglobin [Medicago sativa] 81 2e-15 }}} '''A1.''' Biopython 으로는 해결방법이 없을듯 합니다. 처리를 안해주는 걸 어떻게 하겠습니까? 아래와 같은 별도의 code 로 list 를 만들어내는 수 밖에 없을 것 같습니다. {{{ gi_list = [] b_results = open('xxx.html', 'r') for line in b_results.readlines(): if line[:92]==' formatdb -i xxx.fasta -o T }}} 이렇게 바꿔줘야 합니다. === Pairwise Alignment 문제 === '''Q.''' Biopython 에서 Blast 를 access 하는 방법은 파일이름을 넘겨주는 식입니다. Fasta 포맷의 sequence 들의 집합이 하나의 파일로 저장되어 있을때, 가능한 모든 조합에 대해서 Pairwise Alignment 를 하려면, 따로 file 들을 만들어야 합니까? 만약 그렇다면 색인을 하나 하나의 file 별로 만들어 주어야 합니까? (Programming assignment 2. 3-2) '''A.''' [[yong27]]이 사용한 방법입니다. {{{ def exeBl2seq(combTup, giDict): sys.stdout = open('test1.fasta', 'w') print giDict[combTup[0]] sys.stdout.close() sys.stdout = open('test2.fasta', 'w') print giDict[combTup[1]] sys.stdout.close() parm = ' -i test1.fasta -j test2.fasta -p blastp' r, w = popen2.popen4('C:\ncbi\blast\bl2seq' + parm) w.close() return parseScore(r) }}} giDict는 사전형태로 해당 key에 gi, value에 fasta 객체로 저장한다음에, combTup에는 한쌍씩 모든 조합의 gi쌍이 하나씩 위 함수의 인수로 전달되고... 그래서 위 함수는 해당 쌍에 대해 각각의 파일을 만들고 bl2seq를 돌리게 됩니다. 그 결과는 parseScore라는 함수로 넘어가서 스코어를 파싱한 후 돌려주도록 했습니다. '''바뜨''' 위 코드가 실행되는데 문제가 있는지 윈도에서'''bl2seq 치명적에러'''하고 에러창이 뜬후, 프로세스가 멈춰있슴.. 아직 에러에서 헤메고 있습니다. '''A. ''' 두개의 for 문으로 감싸서 안쪽의 for 문이 하나 앞서가도록 하여, 전체 pair 를 만든뒤 i,j 를 파일 이름에 덧붙여서, alignment 각각을 하나씩의 파일로 만들수 있었습니다. 위의 에러는 정확히는 모르겠으나, 밑의 코드와 같이 각 file 의 full path 를 사용하지 않아서 생길 수도 있는 것 같습니다. {{{ for i in range(len(record_list)): for j in range(i+1, len(record_list)): temp1 = open('d:\\blast\\temp1.fasta', 'w') temp2 = open('d:\\blast\\temp2.fasta', 'w') temp1.write(str(record_list[i])) temp2.write(str(record_list[j])) temp1.close() temp2.close() command = "d:\\blast\\bl2seq -i d:\\blast\\temp1.fasta -j d:\\blast\\temp2.fasta -p blastp -o d:\\blast\\pair\\pairalignment" + str(i) + str(j) + ".txt" os.system(command) }}} '''Q. ''' bl2seq 프로그램으로 alignment 한 결과를 biopython 으로 parsing 할 수 있습니까? blastall 이나 blastpgp 는 되지만, bl2seq 로 한 것은 안되는 것 같습니다. NCBIStandalone.py 에는 다음과 같이 나와 있습니다. {{{ This module provides code to work with the standalone version of BLAST, either blastall or blastpgp, provided by the NCBI. }}}