본문 바로가기

생명과학을 위한 생물학+정보학

NCBI BLAST+ :초파리 단백질서열

참고블로그는 다음과 같다.

http://www.ibric.org/myboard/read.php?Board=news&id=257053&BackLink=L215Ym9hcmQvbGlzdC5waHA/Qm9hcmQ9bmV3cyZQQVJBMz0xMA==

이 블로그는 위 블로그 내용에 따라 직접 실습한 내용을 적어놓은 학습노트입니다.고주온박사님께 감사드립니다.



 자신의 컴퓨터에 설치된 BLAST+를 이용하여 한 번에 분석 결과를 만드는 예를 보자. 초파리 단백질 데이터와 blastp를 이용하여 예제를 진행한다.우선 질의 서열을 몇 개 준비한다. 사용 중인 ~/BLAST/ 디렉터리 밑에 query라는 디렉터리를 만들고,  NCBI 웹사이트에서 관심 있는 단백질 서열들을 내려 받아 ~/BLAST/query 디렉터리에 풀어 놓는다. 

질의서열을 직접 ftp로 다운받으려고 시도했지만 잘 안되는 관계로 아래 블로그에서 다운로드 받았다 

http://bioprofiler.tistory.com/




ls -al     #설치된 faa파일목록을 확인함. 

ls *.faa > list_faa     # 여러개의 파일목록을 lsit_faa에 담는다.

cat list_faa     #목록을 확인한다.

 



이제, blastp를 사용하는 스크립트를 작성한다. 바로 blastp 명령문을 반복 실행하는 스크립트를 작성할 수도 있으나, 처음이고 하니 확인도 할 겸 아래의 스크립트를 mkblp.sh라는 이름의 파일로 (다른 이름도 상관 없다) ~/BLAST/query 디렉터리에 저장한다

1. vi mkblp_sh     # mkblp_sh파일을 만든다. 내용은 아래처럼 입력한다. 입력할 때는 i, 나올때는 esc --> :wp를 입력    

#!/usr/bin/env bash  

 genes=$(cat $1) 

for gene in $genes                                                                            

do                                                                                                 

echo "blastp -query $gene -db ../blastdb/drosoph.aa -out  ${gene%.faa}_blp.out"                                                                                

done 



2. 이제, 출력 결과를 확인하기 위해 실행해 보자. 이번에는 지금까지와 다르게 chmod 명령을 사용하지 않고 스크립트를 바로 실행하는 방법으로 해 본다.

   sh mkblp.sh list_faa     # sh명령어로 실행한다.

  • 지금까지와 다르게 chmod 명령을 사용하지 않고 스크립트를 바로 실행하는 방법으로 해 본다.                      

  •  list_faa는 mkblp.sh 스크립트의 $1에 해당하는 입력 매개 변수이다. 화면에 출력되는 내용을 보면, 다음과 같이 여러 줄의 blastp 명령문임을 알 수 있다.

  •  $gene과 ${gene%.faa}_blp.out의 (변수) 위치에 list_faa 파일의 질의 서열 파일 이름이 들어가 있는 것을 알 수 있다. 이렇게 화면에 출력되는 내용을 파일로 저장하려면 >를 이용한 출력 방향 재지정 (redirection)을 사용하면 된다.


3. sh mkblp.sh list_faa > exeblp.sh     #  exeblp.sh는 잠시 전 화면에 출력되었던 내용을 저장한 파일이다.

  •  cat 명령으로 내용에 이상이 없는 지 확인할 수 있다. 이렇게 작성된 텍스트 파일에는 앞 부분에 파일 처리에 필요한 처리기 지정 부분이 없다. 

  • (편법일 수도 있지만) sh 명령으로 이 파일 (exeblp.sh) 역시 다음과 같이 실행할 수 있다.




 이번에는 핵산 서열로 단백질 데이터베이스를 검색하여 그 결과를 html파일로 출력하는 예를 몇 가지 옵션을 지정해서 실행해 보자. 최근에는 mRNA (messenger RNA) 서열 데이터 (cDNA; complementary DNA)를 분석해야 하는 실험 방법들도 많은데, 이 경우에 활용할 수 있는 방법이기도 하다. 

1. vi blxexe.sh     # 텍스트파일을 작성한다.

  • 중간에 스크립트를 파일로 만들지 않고 바로 명령을 실행하는 방법을 알아 보기로 하자. 다음의 내용을 ~/BLAST/query 디렉터리에 blxexe.sh이라는 이름의 텍스트 파일 (다른 이름도 상관 없다)로 저장한다.


2. cat blxexe.sh     #준비된 핵산 질의 서열 파일을 확인하고  이들의 이름을 텍스트 파일로 저장하여 그 내용을 확인한다 

3. sh blxexe.sh list_fna

  •  blxexe.sh를 실행하여 for 루프로 blastx 명령문들을 실행한다잠시 기다려서 실행이 끝나면, 결과 html 파일을 확인한다

  • 여기서 바로 앞의 방식과 달라진 것은 for 루프 내에서 echo 명령으로 실행문을 출력하지 않고 바로 blastx 명령문을 실행한 것이다.


<에러발생>

sh blxexe.sh list_fna를 실행하는 과정에서 에러를 뿜는다. 왜그럴까? 구글링을 통해 이유를 찾는라고 1시간넘게 서치중이다.ㅠㅠ

  • . blxexe.sh 파일오타! #line6에 syntax오류라고 뜬다.

#!/usr/bin/env bash

 genes=$(cat $1) 

for gene in $genes 

do  <-----------------요것을 빼먹은 엄청난 실수를 ㅠㅠ

 blastx -query $gene -db ../blastdb/drosoph.aa -out ${gene%.fna}_e09_blx.html \ -evalue 1e-9 -html   # do와 done 사이의 이 라인은 한 줄이다.

 done ------

  •  evalue와 le-9에 문제가 있는거 같다는 추측을 하게 된다.

결국 다음처럼 코드를 수정했다. -evalue le-9을 제거했다.

genes=$(cat $1)
for gene in $genes
do
        blastx -query $gene -db ../blastdb/drosoph.aa -out ${gene%.fna}_e09_blx.html -html

done



4. sh blxexe.sh list_fna     # 다시 실행해 보아 에러 표시가 나타나지 않으면 ok ! 에러가 발행하면 이를 잡느라 고생한다.^^


5. AK97891 단백질 서열을 nr 데이터베이스를 대상으로 E-value 옵션 1e-9로 검색한 html 결과의 일부이다.

C:\cygwin\home\user\BLAST\query로 찾아가서 html파일 하나를 더블클릭하면 다음처럼 문서가 나타난다.