일요일, 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월 18, 2018

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

RDP
이름에서 똭 느껴지지 않으십니까?
Ribosomal Database Project

일반 fasta/gb 자료가 있고
trainset 데이터가 있습니다.

Bacteria unalign seq (fa,gb)
Archaea unalign seq (fa,gb)

Train Set 은 여기서 받으시면됩니다.

근데 RDP 같은 경우 사실 그냥 별 이유 없이 받아보는 겁니다. ㅋ
-저도 이게 어떻게 쓰일지 잘 모르겠어요 :)

출처 JYP

목요일, 9월 13, 2018

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

SILVA는 de.NBI 가 뒷배인 DB로 지속적으로
업데이트되고 있는 DB중 하나입니다.

서열 개수도 아마 가장 많을 것으로 생각됩니다.
대신에 그만큼 정리가 가장 안되어 있기도 합니다. ㅋ
-사실 이정도 양의 서열에 저정도 수준을 갖춰놓은것도 용하긴합니다.

그리고 작년? 제작년쯤에 SILVAngs라는 서비스
MG-RAST의 대항마쯤으로 런칭을 했는데 사견으로는
그때 이미 MG-RAST는 심심하면 서비스 다운되서 MG-RAST는
이미 논외 대상이었을것 같다능...(다년간 쌓아놓은 데이터가 문제였지..)

여튼 silva에서 제가 사용하고자 하는 파일은
silva에서 제공하는 qiime용 파일입니다.
>다운로드링크<

직접 찾아가려는 경우 [Download] > [Archive]를 클릭하시면
페이지에 온갖 리스트들이 나오는데 그중에서 [qiime]를 클릭하시면
제가 사용하고자 하는 파일이 보이실 겁니다. ;)

ㅋㅋ 당분간은 계속 다운로드만 주구장창 받는 글들입니다. :)


출처: JYP

일요일, 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월 05, 2018

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

Microbiome분석을 시작하면서 많이 보게되는 DB가 두개 있습니다.
GG와 Silva입니다.

오늘은 그중에 GG즉 greengene 자료를 받아 보겠습니다.

greengene 공식 사이트는 >여기<입니다.
(잘 안들어가지는 특징이 있습니다.)

공식 greengenes 사이트의 다운로드 페이지를 가면 2013년 5월자 자료가 마지막으로 나옵니다.

근데 롭훃님의 qiime 사이트를 돌아다니다보면
2013년 8월 자료를 득템 할 수 있습니다.
>그곳링크<

위의 2013년 5월 자료와 8월 자료가 얼마나 차이가 날지는
저도 잘 모르겠습니다.

무엇을 받던 도찐개찐 ;)

아니면 이번 기회에 한번 비교 해볼까요?
- 2013년 5월과 2013년 8월 자료는 rep_set 99_otus 기준으로 동일할 것으로 보입니다.
모 그냥 쓰고 싶은거 쓰시면됩니다. (2018년 9월 8일 업데이트)



출처 JYP

토요일, 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 캡쳐

수요일, 8월 29, 2018

Microbiome Database를 만들어 볼까?

Microbiome분석을 위해서 여기저기 기웃거려봤다면
여러가지 16S rRNA 데이터베이스가 있다는것을 아실겁니다.

보통 microbiome분석에 입문해서 사용하는 것이라면
대게 처음 분석하는 tool에따라 결정되는데
우리 롭횽님의 qiime를 접한다면 greengene을, mothur을 접하게된다면 silva를 database로 만나게됩니다.

사실 대부분의 연구 결과들이 greengene과 silva로 나오기 떄문에 이 두 database를 사용하면 당연히 그 누구도 갠세이 놓지 않습니다.
-아니면 에디터나 리뷰어에게 외쳐보자. Drop the DB, yo!

근데 매번 분석하다보면 family수준 밑에만 내려가면 unknown은 왜이리 많을걸까..

그렇다면 그냥 우리가 손수 microbiome분석을 위한 db를 만들어보면 어떨까?

당근 이렇게 만들경우 실제 연구에 사용하기는 마뜩치 않다는걸 미리 말씀드립니다.

일단 tree를 만들기가;;; 녹녹치 않습니다. (물론 서열수를 줄이면 수십G 메모리를 가지는 워크스테이션이 있으면 가능합니다.)
그리고 제가 분류학자도 아니고 제가 서열보고도 얘가 몬지 알지도 못하고
서열에 taxonomy 붙여도 제대로 연결시킨건지 확인이 되지 않는다는 큰 문제가 있습죠
#물론_이사진을보면_누군지_압니다, 출처:SM Town

그럼에도 불구하고 왜하냐? 그냥 재미삼아, 경험삼아 만들어보는것입니다.

내가 사용하는 DB를 만드는데 얼마나 많은 고민이 녹아있고
얼마나 많은 생각들이 들어가 있는지 이해를 해보는것도 나쁘지 않을듯하고요 ㅎㅎ ;)

일단 이런걸 하겠다고 블로그에 띄워놨으니 언젠가는 후속글을 올리지 않을까요?
따라가능하도록 소스같은것은 각 글이나 github에 업로드하는 걸로 :)
jupyter notebook으로 올리면 더더욱 좋겠지만 제가 아직 notebook이 익숙치가 않아서..

우선 다음 글에서는 Custom Microbiome Database에 필요한 기초 자료 수집에 관련된 내용들을 올리도록 하겠습니다. :)

월요일, 7월 30, 2018

태도와 인성이 진짜 중요한것인가?

최근 회사에서 사람을 뽑을때 무엇을 봐야하나?
능력을 봐야하나 태도나 인성을 봐야하나? 라는 내용의 글이 심심치않게 보이는데..
왜? 지금 타이밍에? 진짜 그런거야? 아니면 뭘 얘기하는거야?
라는 생각이 들어서...

솔까말 위에 언급한 내용의 글을 쓰는 분들과는 달리 본인이
회사에 컨설팅을 하는 사람도 아니고
걍 생정보학이라는 도구를 가지고 바이오회사 이곳 저곳을 경험한것들을 바탕으로
쫄래쫄래 돌아다니고있는 닝겐이지만..

왜 갑자기 이런 류의 글들이 회자되고 있을까라는 궁금함이 컸고
기존에는 저런 거 별로 없었는데 왜 이 타이밍에 하나같이 저럴까 해서
사견 가득하고 전문적이지도 않은 어찌보면 별 내용없는 뻘글 하나 투척한다는 기분으로 글하나 끄적여봅니다.

사실 회사가 원하는 직원
동서고금을 막론하고 회사에 이윤을 안겨다주는 직원아닌가?
-그건 대표가 하는거고 직원은 그냥 대표가 시키는 일만하면 된다라고 하시면.. 네 죄송합니다.


이윤을 안겨다 주는 직원과 대표 혹은 상사가 시키는 일을 잘하는 직원이 아닌
태도가 좋은 직원이 진짜 회사가 원하는 인재인가?
-내가 창업할것도 아니고 채용해주면 "감사합니다. 열씨미 일하겠습니다."해야지 무슨 말이 이렇게 많단말인가 ㅋ-

그럼 우선 인성/태도라는 단어가 채용에서 주 관심 Keyword가 되었을까?

대략 이런 글들의 예를 보면
회사는 사람이 모인곳이다.
일의 규모가 커지고 있기에 혼자서 일을 처리할 수 없다.
고로 협업을 잘해야한다.
근데 인성/태도가 않좋으면 협업이 어렵다.
그러니깐 능력/실력도 중요하지만 인성/태도가 더 우선하는게
더 회사를 성장시키는데 유리하다고 말하고있다.

예, 점점 일의 규모가 커지면서 협업은 필수적인 일의 방식이 되었다.
근데 여기서 협업이 어려운게 단순히 인성과 태도 때문일까?

※여기서 잠깐 인성과 태도에 대해서 한번 집고 넘어가자. (대한민국의 최고 포탈 사이트인 네이버에서 한번 검색해봤다.)

인성:
1.사람의 성품,
2.각 개인이 가지는 사고와 태도 및 행동 특성.

태도:
1. 몸의 동작이나 몸을 가누는 모양새.
2. 어떤 일이나 상황 따위를 대하는 마음가짐. 또는 그 마음가짐이 드러난 자세.
3. 어떤 일이나 상황 따위에 대해 취하는 입장.


인성과 태도가 좋은 사람을 뽑아야 한다는데 과연 그 좋다는게 무엇일까?
인성과 태도가 좋은게 어떤걸까?
설마 상사의 모든 업무 요청을 다 들어주고 야근은 하되 수당은 받지않고 모 그런건가?
(심증은 있지만 물증이 없으니... 마음속으로만...)

태도와 인성의 좋고 나쁨은 위에서 본것과 같이 어떻게 정량하기도 구분하기도 힘들다.
코에 걸면 코걸이 귀에 걸면 귀걸이가 된다.

태도와 인성이 중요하긴 하지만
곶간에서 인심나듯이 내가 여력이 있을때 얘기지
내 코가 석자인데 협업은 무슨 개뿔 뜯어먹는 소리인 현실에서
태도와 인성 운운하는건 이건 탁상공론아닌가?

그리고 태도와 인성이 본인의 문제일수도 있지만
다른 사람의 선입견이라면? 상급자 혹은 보스의 문제로 인해
태도와 인성이 되먹지 못하게되었다면?

두서없는 글 마무리하도록 하겠습니다.

요약하자면..
1. 인성과 태도 그리고 능력 중에 저울질 하지 말자.
인성과 품성은 근본적으로 고치기 어려운것이고 능력은 선임자나 다른 능력자가 가르치면된다는 환상에서 이제 그만 벗어나자. 당신은 다른 사람의 능력을 끌어올릴만한 능력이 없다는것을 다시 얘기해주어야 하는가?

2. 인성과 태도는 상급자(보스)에 따라 얼마든지 컨트롤 가능하다.
인성/태도가 쓰레기인 사람들도 사람이다. 싸이코패스 아닌이상 본인을 진심으로 대하는
사람이 누구인지 그들이라고 모르겠는가? 섣부르게 판단하지 말자.

3. 인성과 태도 운운하는데 인성과 태도도 좋으면서 능력있는 사람에게는 그만큼의 대우를 해주는가?
인성과 태도, 그리고 능력을 저울질하면서 정작 주위에 있는 인성과 태도도 좋으면서 능력까지 있는 사람들에게는 그만큼의 대우는 하고 있는가?

결론은 인성/태도 운운하지말고 회사/조직/팀에 필요한 사람을 적절하게 채용하고 적재적소에 배치하는게 중요하지 않나 싶다.

결론: 돈주면 성과는 내겠습니다.  :) ㅋ

수요일, 7월 18, 2018

Biopython Entrez 사용하기

최근에 rosalind를 다시 해보면서
가능하면 파이썬 기본 라이브러리로 해결해보려고 했는데
Bioinformatics Armory 부분의 일부 문제는 Biopython을 사용하지않으면
꽤나 곤란한 상황이 발생할것 같아서
일부 문제에서는 걍 추천하는대로 biopython을 사용하는걸로..

그리고 Biopython과 함께 E-utilities를 사용해야 하는데
역시 간만에 보니 생각이 안나는게 인지상정

관련 NCBI 페이지


E-utility에서 사용하는 DB 이름..
Entrez DatabaseUID common nameE-utility Database Name
BioProjectBioProject IDbioproject
BioSampleBioSample IDbiosample
BiosystemsBSIDbiosystems
BooksBook IDbooks
Conserved DomainsPSSM-IDcdd
dbGaPdbGaP IDgap
dbVardbVar IDdbvar
EpigenomicsEpigenomics IDepigenomics
ESTGI numbernucest
GeneGene IDgene
GenomeGenome IDgenome
GEO DatasetsGDS IDgds
GEO ProfilesGEO IDgeoprofiles
GSSGI numbernucgss
HomoloGeneHomoloGene IDhomologene
MeSHMeSH IDmesh
NCBI C++ ToolkitToolkit IDtoolkit
NCBI Web SiteWeb Site IDncbisearch
NLM CatalogNLM Catalog IDnlmcatalog
NucleotideGI numbernuccore
OMIAOMIA IDomia
PopSetPopSet IDpopset
ProbeProbe IDprobe
ProteinGI numberprotein
Protein ClustersProtein Cluster IDproteinclusters
PubChem BioAssayAIDpcassay
PubChem CompoundCIDpccompound
PubChem SubstanceSIDpcsubstance
PubMedPMIDpubmed
PubMed CentralPMCIDpmc
SNPrs numbersnp
SRASRA IDsra
StructureMMDB-IDstructure
TaxonomyTaxIDtaxonomy
UniGeneUniGene Cluster IDunigene
UniSTSSTS IDunists
모 그렇다고 합니다.