downloading_genomes_from_ncbi_ftp_site
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
downloading_genomes_from_ncbi_ftp_site [2018/02/13 10:56] – [실제 사례] hyjeong | downloading_genomes_from_ncbi_ftp_site [2023/06/22 17:12] (current) – ↷ Links adapted because of a move operation hyjeong | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== NCBI FTP 사이트에서 유전체 정보 파일 다운로드하기 ====== | ||
+ | Entrez API를 사용하려면 [[https:// | ||
+ | |||
+ | <color # | ||
+ | |||
+ | ** [최신 소식] ** 2016년 9월 22일을 기하여 ftp:// | ||
+ | |||
+ | the data currently in genomes/ | ||
+ | will be moved to genomes/ | ||
+ | the data currently in genomes/ | ||
+ | will be moved to genomes/ | ||
+ | |||
+ | 그러나 ftp:// | ||
+ | |||
+ | ===== 검색을 통하여 찾아나가기 ===== | ||
+ | Entrez 창에 다음과 같은 질의어를 넣어서 나타나는 결과물 중 < | ||
+ | " | ||
+ | 위 질의어에서 BL21(DE3)를 따옴표로 둘러싼 첫은 괄호를 특별한 기호로 인식하기 때문이다. 결과가 궁금하면 [[https:// | ||
+ | Escherichia coli " | ||
+ | 이렇게 물어본 것은 실제로 내부적으로 다음과 같이 처리한다. 모든 레코드가 **Organism: | ||
+ | (" | ||
+ | |||
+ | 만약 species의 NCBI taxonomy ID를 안다면 웹브라우저 주소창에 다음과 같이 URL을 입력하여 genome sequencing 현황을 볼 수 있다. 167은 E. coli의 taxonomy ID라서 상당히 많은 결과가 나올 것이다. | ||
+ | https:// | ||
+ | ===== assembly summary file을 이용한 체계적인 다운로드 ===== | ||
+ | 아무리 웹 화면이 편리하다 한들 원하는 모든 정보에 대한 답을 담고 있지는 않다. ' | ||
+ | |||
+ | * ftp:// | ||
+ | * ftp:// | ||
+ | * ftp:// | ||
+ | * ftp:// | ||
+ | * ftp:// | ||
+ | |||
+ | ==== 실제 사례 ==== | ||
+ | // | ||
+ | - NCBI에서 assembly_summary.txt을 다운로드한다. 파일명에 날짜를 넣는 것이 특징이다(**bacteria_assembly_summary_2017-07-04.txt**). | ||
+ | - organism_name(8번째 컬럼), assembly_level(12번째 컬럼) 등을 이용하여 원하는 조건에 맞는 라인을 추출한다(**list_all**). | ||
+ | - 20번째 컬럼(ftp_path: | ||
+ | - wget으로 파일을 내려받고 압축을 해제한다. | ||
+ | - 다음의 설명을 참조하여 파일 이름을 적절히 바꾼다. | ||
+ | |||
+ | 받은 파일의 이름은 (assembly_accession)_(asm_name)_(나머지 부분)의 형식을 갖는다. 예를 들자면 **GCF_002264385.1_ASM226438v1_genomic.fna**와 같은 방식이다. 균주의 이름이나 우리가 논문 등에서 흔히 접하는 서열 accession number(CP######, | ||
+ | |||
+ | $ curl -o refseq_bacteria_assembly_summary_`date +%Y-%m-%d`.txt ftp:// | ||
+ | # 정규식 안의 ^는 없어도 괜찮다. | ||
+ | $ awk -F " | ||
+ | $ awk -F " | ||
+ | # fna, gbff, or faa file? 용도에 맞게 커맨드 라인을 작성할 것. | ||
+ | $ sed -r ' | ||
+ | $ sed -r ' | ||
+ | $ sed -r ' | ||
+ | # ~_protein.faa.gz와 ~_translated_cds.faa.gz는 서열 ID와 description의 모양새가 다름에 유의하라. locus tag등 월등하게 많은 정보를 수록한 것은 후자이다. | ||
+ | $ mkdir 01_fna | ||
+ | $ cd 01_fna | ||
+ | # GNU parallel을 응용하여 여러 파일을 동시에 받을 수도 있을 것이다. | ||
+ | $ cat ../ | ||
+ | # 또는 cat ../ | ||
+ | $ gzip -d *gz | ||
+ | $ my_rename1.pl ../list_all > id2name | ||
+ | # id2name 파일의 두번째 컬럼은 파일 이름으로 쓰일 것이므로 특수문자가 있거나 중복되면 안된다. | ||
+ | # 공백은 밑줄(' | ||
+ | # 수정을 하였다면 id2name.mod로 변경한다. | ||
+ | $ ls *fna | while read f; do my_rename2.pl id2name $f; done | ||
+ | $ rm -f GCF* | ||
+ | | ||
+ | === id2name에 대한 부연 설명 === | ||
+ | id2name 파일을 매개로 하여 GCF_000469945.2_ASM46994v2_genomic.fna.gz라는 파일이 Paenibacillus_sp._P22_GCF_000469945.2.fna로 바뀌게 된다. 변경 후 파일명의 앞부분을 차지하는 균주 이름은 당연히 assembly summary file의 여덟번째 컬럼에서 유래한다. 하지만 실제 assembly summary 파일을 열어보면 파일명으로 쓰기에 적합하지 않는 문자가 들어있는 경우가 상당히 많다. 예를 들어 공백, 세미콜론, | ||
+ | |||
+ | === while loop 대신 xargs 사용하기 === | ||
+ | $ xargs wget < ../ | ||
+ | multiple argument를 다루려면 어떻게 해야 하는가? 조금 더 알아봐라. 인수 위치의 지정은 다음과 같이 한다. 하지만 이 사례에서는 하나의 gff file에 모든 출력이 다 기록된다는 문제가 있다. | ||
+ | $ ls *fna | xargs -I{} barrnap --threads 16 {} > {}.rna.gff | ||
+ | |||
+ | ===== NCBI Genome Download Scripts ===== | ||
+ | [[https:// | ||
+ | |||
+ | $ ncbi-genome-download bacteria, | ||
+ | $ ncbi-genome-download --section genbank fungi | ||
+ | $ ncbi-genome-download --format fasta viral | ||