레이블이 NCBI인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NCBI인 게시물을 표시합니다. 모든 게시물 표시

월요일, 9월 04, 2023

NCBI에서 제공하는 ribosomal RNA Database

때는 바야흐로 2020년 초

NCBI에 Blog에 새로운 ribosomal RNA 데이터베이스가 출시되었다는 글이 하나 떴었네요...


사실 그 전부터 BLAST용 ribosomal RNA 서열은 제공하고 있었습니다.

다만 그 전까지는 NCBI에 수집된 nucleotide 서열을 모아놓은 수준이었던것 같은데,

2020년에 공개된 데이터는 단순히 모아놓는 부정확한 정보 수준이 아닌 각 서열을 정확하게 식별하고 분류할 수 있도록 엄선하였다고 하네요 

rRNA뿐만 아니라 ITS 서열까지.. 2020년즈음에는 microbiome에 이어 mycobiota도 관심이 증가하고 있었던 시기였던터라 이전에 ITS 서열을 제공하지 않았던것 같은데, 역시 NCBI 훃님들은 페달 밟으면 아주 시원하게 뽑아주는듯 합니다.

여튼 요즘에는 16S, 18S, ITS 서열들을 잘 정리해서 식별할 수 있도록 (aka taxonomy 정보가 잘 정리되어 있다는 것이겠죠) 제공하고 있습니다.


>여기< 에 우리가 알고 있는 nt db와 nr db 말고도 다양한 local용 blast database들이 제공되고 있으니 잘 다운로드 받아 잘 사용하면 좋을 것 같습니다. 


또 유익한 정보를 가지고 블로그에 글을 적어보도록 하겠습니다. 





출처: @ye._.vely618




목요일, 8월 10, 2023

NCBI기반의 분류데이터를 손쉽게 다루는 방법

NCBI의 taxonomy 데이터는 드려다 보신 분들은 아시겠지만 환장의 도가니라고 할 수 있죠

그래서 보다 못한 호주의 어느 용자께서 NCBI의 taxonomy 데이터를 처리할 수 있는 스크립트를 개발하셔서 github에 올려주셨습니다. 물론 논문도 투고하셨고요


이름하여 ncbi-taxonomist, NCBI 분류학자라니.. Orz

Collecting and managing taxonomic data with NCBI-taxonomist

doi: https://doi.org/10.1093%2Fbioinformatics%2Fbtaa1027


여튼 재미있는 기능 중 하나가 NCBI의 nucleotide이든 protein이든 accession을 입력하면 이 accession의 taxonomy 정보를 알려준다는 것입니다.

물론 NCBI 분류학자답게 NCBI의 taxonomy ID과 종 이름(약간의 오타가 있어도, 그 오타가 NCBI에 등록되어 있다면)로도 검색할 수 있습죠.

accession 정보를 이용하여 taxonomy 정보를 파악하는게 생각보다 번거로운 작업인데 ncbi-taxonomist에서 명령어 한번 때려주면 호로록 검색해서 결과를 알려줍니다.

여튼 오늘은 간단한 기능을 보여주는 tool을 소개하였는데
밤새 태풍에 무탈하시기 바랍니다. :)



출처: @ye._.vely618












화요일, 8월 01, 2023

ncbi 횽아들은 어디까지 만들어 낼 것인가

이것저것 작업하면서

ncbi tool들을 다시 사용하고 있는데..

훗.. 역시 우리 ncbi 훃아들의 위대함을 다시 한번 느꼈다는...


NCBI BLAST에서 taxonomy로 제한 거는 기능을 당연히 stand-alone에서도 사용할 수 있는데 NCBI의 -taxid의 숨은 함정이 종 수준의 taxid만 제한 걸 수 있다는..

(근데 써보면 종 수준의 taxid만 제한이 걸리는지 갸우뚱 거리긴 함.. )


여튼 종 수준의 taxid만 제한할 수 있다는 것이 무엇이냐면..

종보다 상위 class의 taxid인 Enterobacterales의 taxid를 사용하면 정상적으로 작동을 안하게 된다는 말씀.

그러므로 NCBI BLAST 프로그램을 다운 받았을 때 함께 있는 get_species_taxids.sh를 활용하면 이 문제를 피해갈 수 있다고 합니다.

사실 최근까지 get_species_taxid.sh가 왜 있는지 관심은 없을 뿐더러
왜 쓰잘떼기 없는 shell script는 왜 넣어놨는지 했다는 ㅎㅎ 


여튼 언제나 NCBI 훃님들께 감사인사를... :)


참고 URL: https://www.ncbi.nlm.nih.gov/books/NBK569846/



출처: @ye._.vely618


일요일, 9월 23, 2018

Microbiome Database를 만들어볼까? -NCBI편 4-

지난번 글에서 받기시작했던 nt.gz파일은 잘 받아졌나요?

그럼 이제 이 파일에서 무엇인가 뽑아내야 겠죠?

무엇을 뽑아내느냐?
16S rRNA를 뽑아낼겁니다.
어떻게?
다음 스크립트를 작성해 봅시다.

$vi parser_nt.py

import glob,sys,re,gzip
from Bio import SeqIO

try:
        input_fa = sys.argv[1]
except:
        print "fasta_split.py <in.fa.gz>"
        exit(1)
for rec in SeqIO.parse(gzip.open(input_fa),format='fasta'):
        desc = rec.description
        seq = str(rec.seq)
        name = desc.strip().split('\x01')[0]
        if name.upper().find(' 16S RIBOSOMAL RNA ') != -1 or name.find(' 16S RIBOSOMAL RNA,') != -1:
                if name.upper().find('MITOCHONDRIA')!= -1:
                        pass
                elif name.upper().find('CHLOROPLAST')!= -1:
                        pass
                elif name.upper().find(' 23S ') != -1:
                        pass
                else:
                        if name.upper().find(' SIMILAR ') != -1:
                                pass
                        elif name.upper().find(' INTRON') != -1:
                                pass
                        elif name.upper().find(' PLASTID') != -1:
                                pass
                        else:
                                print '>%s\n%s\n'%(desc,seq)


※ 위의  스크립트를 수정해서 입맛에 맞게 교정하시고 사용하시면되겠습니다.

$python parser_nt.py nt.gz > nt.fasta
위에 스크립트 실행시키면 떡 하니 수 gb 짜리 파일이 하나 나올겁니다.

이 파일안에는 nt서열 중에서 16S rRNA 서열 (대신 mitochondria와 chloroplast의 16S rRNA는 제외하고 이것도 16S rRNA지만 저한테는 일단 필요없어서 뺐습니다. 사용하고 싶으시면 사용하셔도 됩니다. :) )이 500만개 정도 들어 있습니다.

이 파일에는 온갖 종의 16S rRNA 서열이 있지만 문제가 있다는 점!

16S rRNA 서열이 품질이...
어떤 녀석은 full 서열이 있지만 어떤녀석은 서열의 일부만 가지고 있는 경우가 있습니다.

그래서 그런 녀석들을 잘 확인해서 제거를 하던지 merge를 하던지... 

그건 개인 취향으로 남겨 놓도록 하겠습니다. :)
aka 필터링을 하던 안하던 문제 생기면 그 문제의 책임은 오롯이 당신의 것!!

그리고 즐거운 추석보내시기 바랍니다. :)

출처 SM


수요일, 9월 19, 2018

Microbiome Database를 만들어볼까? -NCBI편 3-

지난 시간에 이곳에서 귀한 자료를 받아 봤을 겁니다.
그게 무엇이냐!!!

지금까지 공개된 bacteria의 서열들이죠 정확하게 말하면
현재까지 수많은 연구자들이 자발적(자의타의)으로
공개해준 것을 NCBI가 아름답게 정리한 RNA서열들만 다운받았습니다.

근데 우리는 RNA 서열이 아니라 rRNA 서열이 필요하죠

이전 글에서 우리는 rna라는 폴더 안에 12만개에 달하는 파일들을 다운받았습니다.
아마 그냥 ls하시면 어쩌구 저쩌구 long 할겁니다.
ls로 불러오기에 item이 너무 많다 이거죠
그럼 어쩌지?? @.@

우리에겐 귀도 훃님의 파이썬이 있지 않겠습니꽈

간단하게 다음과 같은 스크립트를 뚝딱 뚝딱 만들어보죠

import os,glob
from Bio import SeqIO
for files in glob.glob('rna/*gz`):
    for rec in SeqIO.parse(gzip.open(files), format='fasta'):
        name =rec.description
        seq = rec.seq
        if name.find('[product=16S ribosomal RNA]') != -1:
            print '>%s\n%s\n'.format(name,seq)

(python2.7에 Biopython이 설치되어 있어야 하고 *_rna_form_genomic.fna.gz 파일이 rna폴더 밑에 위치하고 있어야 합니다.)

$python script.py > ncbi.fa

라고 해주면 헤더에 "[product=16S ribosomal RNA]"가 포함된 aka 우리가 원하는 바로 그것! 16S rRNA 서열을 각 종에서 샤샤샥 ncbi.fa라는 파일에 저장할 수가 있습니다.

-12만개 파일 읽어 오는거라 순차적으로 하면 3-4시간 걸릴것이고
subprocess로 잘 해주시면 적어도 십수분? 30분이내면 충분히 끝날각 되겠습니다.

출처: SM Town

일요일, 9월 09, 2018

Microbiome Database를 만들어볼까? -NCBI편 2-

지난 시간에 이곳에서 자료를 받아 봤습니다.

오늘은 또 다른 ncbi 자료를 받아 볼겁니다.

※지겹다고요? 제가 그랬잖아요? 당분간은 맨날 다운 받을 거라고 ㅋ
빨라야 추석 이후에야 무엇인가 하지 않을까 기대합니다.

지난번에는 ncbi에서 제공하는 모 그런걸 받았습니다.
-자세한 내용은 다음 글에... ㅎㅎ :)

그렇다면 이번에는 우리가 ncbi라고 하면
맨날 다운받았던 blast의 db를 만드는 source fasta파일인
nt.gz 을 받아보도록 하겠습니다.

자 웹브라우저에서 ftp://ftp.ncbi.nlm.nih.gov/blast/db/fasta/
들어가시면 nt.gz이 보입니다.

물론

$wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/fasta/nr.gz 

하셔서 다운받아도 무방합니다.

그럼 대략 40G 정도의 gzip파일을 받아봅시다. :)



출처: SM Town

토요일, 9월 01, 2018

Microbiome Database를 만들어 볼까? -NCBI편-

Microbiome Database를 만들려면
database에 들어갈 무엇이든 뭐든지 있어야 겠지요?

지구상에서 생명공학을 공부하면서 한번도 안들어 갈수 없는
한번 들어 가봤으면 다시는 안 갈 수 없는 바로 그곳! 거기!

근데 일단 거기는 들어갈 필요는 없구요
NCBI에서 데이터를 받아봅시다!
-아니 이양반아 거기에 안들어가고 무엇을 한단말인가?

그렇죠! 그래서 저희는 이곳을 이용할겁니다.

assembly_summary_refseq.txt 파일을 작업서버에 살포시 다운로드 받아보겠습니다.


$ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/assembly_summary.txt

이제 다 받아졌다면 잘 받아졌는지 파일을 한번 볼까요?

앜 내눈!!! 글씨밖에 없죠? 정상적인 파일입니다. 다행히 잘 받아졌군요

이 파일에서 우리가 필요한 파일들을 받을 수 있는 주소들이 있습니다.
자 파일 라인 갯수가 #으로 처리된 헤더 2라인을 제외하면 124,529개 밖에 안됩니다. ;)

대략 20번째 컬럼에 있는 ftp 주소를 한개의 파일로 한땀 한땀 모으시면됩니다.
모 번뜩 생각나는 방법은 txt파일을 엑셀에서 불러들여서 20번째 컬럼에 있는 내용 복붙하셔도...

그러나 좀 편리하게 awk를 사용하는 방법이..

$ awk '{FS="\t"} !/^#/{print $20}' assembly_summary.txt > bacteria.list
그럼 bacteria.list에 ftp주소가 모입니다.

그 다음에

for M in `cat bacteria.txt`
do
wget -P rna $M/*rna_from_genomic.fna.gz
done

이렇게 해주시면 rna폴더에 rna_from_genomic.fna.gz 파일들이 차곡 차곡  쌓입니다.

대신 12만개 다운 받아야하니.. screen 실행시킨 다음에 하시고요

그럼 다 받을때까지 요즘 날씨도 좋으니 놀다오는걸로 :)

#날씨도좋은데놀아보자 출처: YOUTUBE 캡쳐

월요일, 3월 26, 2018

NCBI Website and Data Usage Policies and Disclaimers

관련 NCBI 원문 URL

Website Disclaimer
쓰는건 님 자유지만 어떠한 유형의 문제가 발생하면 쓴 너님 문제

Website Usage
NCBI 웹페이지는 Title 18 조항에 의해 보호되니깐 작은 하마를 건들면 ㅈ되는 것처럼 똑같이 됨.


Copyright Status of Webpages
NLM (National Library of Medicine) 웹 페이지의 공개 정보는 자유롭게 배포 및 복사 할 수 있습니다. 그러나 몇몇 저작물(그게 무엇인지는 비밀)에 대해서는 NLM에 적절한 확인을 요청해야 합니다. 


Molecular Data Usage
NCBI 웹 사이트의 분자 데이터베이스는 nucleotide sequences (GenBank), protein sequences, macromolecular structures, molecular variation, gene expression, and mapping data를 통칭.
NCBI는 이 안에 포함된 데이터의 사용이나 배포에 대한 아무런 제한을 두지 않는다. 제출자가 재사용/재배포에 대한 제한을 요청해도 승인하지 않는다. 그러나 제출자가 특허나 저작권 또는 기타 지적 재산권을 주장 할 수는 있다. NCBI는 이러한 청구에 대해서 평가를 하는 기관이 아니다. 제출자로부터 권리를 양도받지 않았기에 NCBI는 제 3자에게 양도 할 권리가 없다.
요약: 문제의 소지가 있는 데이터가 존재 할 수 있고 문제 발생 시 NCBI는 관여하지 않으니 니들끼리 알아서 해결하세요


Human Genomic Data Submitted to Unrestricted-Access Repositories
대규모 인체 게놈 데이터를 NCBI에 보관하고 싶으면 NIH 게놈 데이터 공유 정책(GDS)의 조건에 충족해야한다.


Use of Web Browsers
NCBI는 크롬과 불여우, 사파리 그리고 에지의 최신버전및 이전 두 버전을 지원한다.
놀랍게도 IE11이상이면 IE에서도 작동한다. 역시 자국 소프트웨어를 써주는건 어느나라나 동일한듯.


Accessibility Policy
가능한 모든 사람들이 접근 할 수 있도록 노력을 기울이고 있습니다.


Privacy Policy
NCBI는 님들 정보따위에 관심없으니 걱정마셈


Medical Information and Advice Disclaimer
NLM은 특정 의학 조언을 제공하는 것이 아닌 자신의 건강 및 진단된 장애를 더 잘 이해할 수 있는 정보를 사용자에게 제공하기 위함이니 정확학 임상적인 조언은 진단을 할 수 있는 자격을 갖춘 의사와 상담하길 바란다.


Guidelines for Scripting Calls to NCBI Servers
NCBI 시스템에 부하를 주지마세요. https://eutils.ncbi.nlm.nih.gov 를 사용하세요.

금요일, 3월 23, 2012

Blastall Manual


NCBI에서 제공되는 Blastall에 대한 메뉴얼
blast-2.2.18을 기준으로 작성합니다. 현재 2.2.20이 나와있죠??
아마 옵션은 거의 동일할것입니다.
제가 많이 사용하는 것을 중심으로 설명합니다.
-지금은 더 업되어 있을 겁니다.
 그리고 이제는 슬슬 BLAST+로 옮겨타보려고 계획중입니다. :)

-p 5개의 기본 blast 프로그램중 하나를 선택하는 옵션
ex) -p {blastn|blastp|blastx|tblastn|tblastx}

-d blast를 돌리기 위한 데이터베이스 선택하는 옵션
ex) -d {nr|nt|your_database_file}
blast에서 데이터베이스로 사용하기 위해서는 fasta파일을 formatdb로 blast에 사용할 수 있는 데이터베이스로 변환시켜주어야 사용 가능. formatdb 수행후 붙는 확장자 명은 적어주지 않아도 됨. 파일이름 적음.

-i 검색해보고 싶은 서열(들) 입니다. Query 파일은 fasta format으로 되어있어야 함.
ex) -i your_query_file.seq 현재폴더에 있는 서열 파일      
      -i /your/home/path/query.fasta 다른 폴더에 있는 서열 파일

-e Expectation value를 정해줘서 설정된 값보다 크면 결과에 포함시키지 않는 옵션. 일반적으로 blastn의 경우 1e-06/1e-12, blastp의 경우 1e-03/1e-06으로 설정하고 상황마다 조정하면서 사용.
ex) -e 1e-06
-m 결과 파일을 저장할때의 format 결정 옵션. 일반적으로 로컬에서 blast를 돌리시려는 분들은 대량의 서열을 분석하기 위함이니, -m 8이 결과 파일을 분석하기 용이함,
ex) -m 8


-o Blast 결과 파일 설정하는 옵션
ex) -o your_output_file


-M blast를 실행시킬때 Matrix를 사용하게 하는 옵션. 서열과 서열을 비교하면서 weight를 주어서 peptide 서열을 검색할때 사용됨. 기본값은 BLOSUM62.
Matrix는 /your_blast_folder/data/ 밑에 있음.
ex) -M {BLOSUM62|PAM250|your_matrix}

-a CPU가 1개 이상일때 blast 수행시 하나 이상의 cpu를 사용하게 하는 옵션
ex) -a 2

Local에서 Blast 작업 돌리기


BLAST는 최근 생명공학을 하는데 기본 도구중에
하나가 되었지만 그럼에도 많은 연구자들이 BLAST를
제대로 사용하지 못하고 있는 것이 현실이다.

BLAST를 수행하는데 Database가 NCBI나 다른 여타의 사이트에서
제공안되는 Database를 이용해야만 되는 경우가 발생하면 어떻게 할 것인가?

혹은 BLAST를 해야할 Query가 수십개가 아닌 수백, 수천개라면
어떻게 할 것인가?

이런경우 자신의 컴퓨터에서 BLAST를 수행하게 된다면 원하는 작업을
손쉽고 빠르게 할 수 있다.

BLAST 프로그램은 대부분 연구자들이 알고 있듯이
NCBI에서 다운로드 받을 수 있다.
ftp://ftp.ncbi.nih.gov/blast/executables/release
위의 ftp 주소에 들어가 자신의 플랫폼에 맞는 파일을 다운로드 받으면 일단 BLAST를
수행할 수 있는 준비가 된다.

다운로드 받은 압축 파일(실행파일(*.exe)로 압축되어있는)을 풀면
bin, data, doc 세개의 폴더가 나타난다.
BLAST를 직접 수행하는 실행파일은 bin 폴더안에 있다.

기본적으로 BLAST를 사용하기 위해서 두개의 파일이 필요하다.
blastall과 formatdb이다.
blastall은 일반적인 blast, 즉 blastn, blastp, blastx, tblastx,tblastn를 수행할 때 사용된다.
formatdb는 blast를 할 수 있는 database를 만들어 주는 파일이다.
blast에 사용되는 database는 항상 ncbi나 다른 웹사이트에서 제공해주는 것이 아니기
때문에 자신만의 database를 만들 수 있어야 한다.


formatdb -i INPUT_FILE -p T|F -o T|F


- i INPUT_FILE은 fasta form을 따르는 서열들이 모인 파일이면 문제없다.
- p INPUT_FILE이 DNA서열인지  Protein 서열인지 확인하는 옵션값 protein의 경우 T
- o INPUT_FILE를 paser하는 옵션 NCBI에서 수집한 서열의 경우 -o T를 하여도 문제 없지만, NCBI의 form을 완벽하게 따르지않았다면 F 값을 사용.


blastall -p SELET_PROGRAM -i INPUT_FILE -d DATABASE_FILE -o OUTPUT_FILE  -m  OUTPUT_FORMAT


- p 어떤 blast 프로그램을 사용할지 선택
- i Query가 될 서열, 하나의 서열 혹은 다수의 서열이 하나의 파일에 존재 할 수 있다.
- d blast할 database
-o blast를 수행한 후 결과를 저장할 파일 이름을 지정한다.
-m -m 옵션을 지정하지 않으면 NCBI에서 blast를 수행한 화면을 볼 수 있다. 만약 다른 정보들은 필요 없고, 어느 서열이 어떤 서열과 유사성이 있는지 환인 할 수 있는 정보만 필요하다면 -m의 옵션값을 조절하여 원하는 정보만 저장 할 수 있다. 본인의 경우 -m 8을 많이 애용한다.