bioinfo:e-direct로_명령행에서_entrez_db_접근하기
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
bioinfo:e-direct로_명령행에서_entrez_db_접근하기 [2023/06/22 15:23] – created hyjeong | bioinfo:e-direct로_명령행에서_entrez_db_접근하기 [2023/06/22 17:26] (current) – [기본 개념 및 설치 방법] hyjeong | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== E-direct로 명령행에서 Entrez DB 접근하기 ====== | ====== E-direct로 명령행에서 Entrez DB 접근하기 ====== | ||
- | Entrez는 미국 NCBI가 보유한 biomedical database의 통합적 질의 시스템 혹은 웹 포털을 의미한다. NCBI에서는 유닉스 혹은 리눅스의 명령행 환경에서 Entrez에 직접 접속하여 검색을 실시하고 그 결과를 활용하는데 필요한 유틸리티를 제공하고 있는데, 이것이 바로 [[https:// | ||
+ | ===== 기본 개념 및 설치 방법 ===== | ||
+ | |||
+ | Entrez는 미국 NCBI가 보유한 biomedical database의 통합적 질의 시스템 혹은 웹 포털을 의미한다. NCBI에서는 유닉스 혹은 리눅스의 명령행 환경에서 Entrez에 직접 접속하여 검색을 실시하고 그 결과를 활용하는데 필요한 유틸리티를 제공하고 있는데, 이것이 바로 [[https:// | ||
+ | |||
+ | 웹사이트에서 설명한 설치방법 외에도 bioconda(entrez-direct) 또는 데비안 패키지(ncbi-entrez-direct)로도 제공되므로 이를 활용할 수 있다. | ||
+ | |||
+ | 설치와 간단한 사용법에 대한 동영상은 유튜브(' | ||
+ | |||
+ | ===== 유전체 정보 다운로드를 위한 FTP path 알아내기 ===== | ||
+ | 다음은 EDirect에서 // | ||
+ | |||
+ | $ esearch -db assembly -query ' | ||
+ | (latest[filter] AND (all[filter] NOT " | ||
+ | project" | ||
+ | efetch -format docsum | \ | ||
+ | xtract -pattern DocumentSummary -element FtpPath_RefSeq | \ | ||
+ | awk -F"/" | ||
+ | |||
+ | 맨 마지막의 awk 명령어는 설명이 필요하다. 직전의 xtract 명령으로 출력되는 라인은 다음과 같은 형식을 갖는다. 이 URL은 파일이 있는 디렉토리이다. | ||
+ | (1) ftp:// | ||
+ | |||
+ | 그러나 다운로드할 수 있는 실제 파일의 URL은 다음과 같다. | ||
+ | (2) ftp:// | ||
+ | |||
+ | 입력된 값인 (1)에서 슬래시로 구분된 가장 마지막 컬럼을 한번 더 반복한 다음 _genomic.fna.gz를 덧붙인 것이다. 이를 만들어 내기 위해 awk를 사용하였다. 컬럼 구분자는 기본값인 탭이 아니라 슬래시를 쓰게 하였고, [전체 라인 + 슬래시 + 마지막 필드 + _genomic.fna.gz를 출력하여 파일로 리다이렉트한 것이다. $0, $1, $2…는 awk에서 각 컬럼을 나타내는 변수이다. $1은 첫번째, | ||
+ | |||
+ | ===== 미생물 대표 유전체 염기서열의 일괄 다운로드 ===== | ||
+ | 이상에서 학습한 것을 응용하여 RefSeq으로부터 prokaryotic reference & representative genome의 GenBank flat file을 한꺼번에 다운로드하는 방법을 알아본다. NCBI Insights에 이에 대한 업데이트 소식이 가끔 올라온다. [[https:// | ||
+ | |||
+ | (" | ||
+ | |||
+ | 검색결과 맨 위에 ' | ||
+ | |||
+ | $ esearch -db assembly -query ' | ||
+ | (reference_genome[filter] OR representative_genome[filter])' | ||
+ | efetch -format docsum | xtract -pattern DocumentSummary \ | ||
+ | -element FtpPath_RefSeq > download_path.txt | ||
+ | |||
+ | [[: | ||
+ | |||
+ | $ safe_download.sh download_path.txt | ||
+ | | ||
+ | |||
+ | ===== 다른 정보를 추출하기 ===== | ||
+ | |||
+ | 만약 FtpPath뿐만 아니라 여러 가지의 정보를 추출하고 싶다면 ' | ||
+ | |||
+ | $ esearch -db assembly -query GCA_000017025.1 | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | $ esearch -db assembly -query GCA_000017025.1 | efetch -format docsum | ||
+ | <?xml version=" | ||
+ | < | ||
+ | " | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | … 중간 생략 … | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 이번에는 유전체 정보가 공개된 특정 종 균주가 어떤 곳에서 분리되었는지 알아내는 방법에 대해여 설명하고자 한다. 위에서 설명한 xtract 명령어에서 ‘-element BioSampleAccn’ 옵션을 적용하여 그 결과를 biosample_acc.txt 파일에 저장한다. 이를 esearch + efetch + xtract 명령어에 적용하여 BioSample 데이터베이스를 검색하되 모든 Accession Number에 대해서 적용하도록 반복문을 돌리는 것이 핵심이다. | ||
+ | |||
+ | $ cat biosample_acc.txt | ||
+ | SAMN13428652 | ||
+ | SAMN11521245 | ||
+ | SAMN11521242 | ||
+ | SAMN11521244 | ||
+ | SAMN10822424 | ||
+ | $ for i in $(cat biosample_acc.txt) | ||
+ | > do | ||
+ | > ll=$(esearch -db biosample -query $i | efetch -format docsum | \ | ||
+ | > xtract -pattern DocumentSummary -block Attribute \ | ||
+ | > -if Attribute@attribute_name -equals isolation_source \ | ||
+ | > -element Attribute) | ||
+ | > echo -e " | ||
+ | > done | ||
+ | SAMN13428652 | ||
+ | SAMN11521245 | ||
+ | SAMN11521242 | ||
+ | SAMN11521244 | ||
+ | SAMN10822424 | ||
+ | …(후략) | ||
+ | |||
+ | BioSample 데이터베이스의 Attribute 항목에는 여기에서 소개한 isolation_source 외에도 strain, collection_date, | ||
+ | |||
+ | # data.txt 파일은 ‘xtract –pattern DocumentSummary -element Genbank FtpPath_GenBank BioSampleAccn BioprojectAccn’으로 추출된 것으로, 첫 번째와 세 번째 컬럼(굵은 글씨)을 사용함 | ||
+ | $ head -n 1 data.txt | ||
+ | GCA_014068615.1 ftp:// | ||
+ | PRJNA592543 | ||
+ | $ for i in $(awk -vOFS=, ' | ||
+ | > do | ||
+ | > A=${i%,*} | ||
+ | > B=${i#*,} | ||
+ | > ll=$(esearch -db biosample -query $B | efetch -format docsum | \ | ||
+ | | ||
+ | | ||
+ | > echo -e " | ||
+ | > done | ||
+ | GCA_014068615.1 SAMN13428652 | ||
+ | …(후략) | ||
+ | |||
+ | 위의 사례에서는 data.txt 파일에서 유래한 두 컬럼을 do 반복문 안에서 A와 B 변수로 나누어 저장하기 위해 다소 복잡한 방법1을 동원하였다. 그러나 'awk ' | ||
+ | |||
+ | 다음의 사례는 출력물의 세 번째 컬럼에 Organism 정보를 포함시켜서 출력하되 모든 결과를 results.txt 파일에 기록하도록 하는 방법이다. BioSample 레코드에서는 Organism이 별도의 block에 들어있지는 않지만, 복수의 -block 구문을 사용하여 서로 다른 섹션에 위치한 정보를 하나의 xtract문으로 추출하는 것이 가능하다([[https:// | ||
+ | |||
+ | $ for i in $(awk -vOFS=, ' | ||
+ | > do | ||
+ | > A=${i%,*} | ||
+ | > B=${i#*,} | ||
+ | > ll=$(esearch -db biosample -query $B | efetch -format docsum | \ | ||
+ | | ||
+ | | ||
+ | > echo -e " | ||
+ | > done | ||
bioinfo/e-direct로_명령행에서_entrez_db_접근하기.1687414981.txt.gz · Last modified: 2023/06/22 15:23 by hyjeong