화요일, 6월 21, 2016

snpEff에서 사용하는 genome annotation은 어떻게 추가할 수 있는가?

snp annotation에 빈번히 사용되는
snpEff (snpSift는 난 모르겠고)

snpEff에서도 나름 최신의 genome 정보를 제공하고 있지만
내가 de novo진행한것은?? (제가 곰팽이 de novo들을 많이하다보니.. ㅋㅋ)
어떻하라는 말인가...

고갱님 genome과 gene정보를 NCBI에 등록하고 NCBI gff가 공개되서 snpEff팀에서 지원해주는 시점에 사용하시면 됩니다.

근데 우리 고갱님들 그때까지 기다리시면 암걸리시죠?

그래서 간단한 가내수공업만 할 줄 아시면 곧바로 작업 가능합니다.

일단 위에 소개된 snpEff 사이트에서 snpEff 다운받으시고
압축푸시면 되겠습니다.

그리고 이번에 새로 조립하신 complete든 draft든 genome의 서열과 gff(version 2/3 택일)파일을 /path/to/snpEff/data/ 폴더 밑에 genome 이름으로 폴더 만드시고 그 밑에 복사하시면 되겠습니다. 대신 genome과 gff파일 이름은 genes.gff, sequences.fa로 바꿔주시는 센스!!

ex) 새로 조립한 genome이름이 Lee girwon이라면 Lee_girwon이라고 만드시고 그 밑에 파일을 복사해주시면 되겠습니다.

그리고 추가적으로 하나더 해야 하는 작업은 snpEff.config파일 수정
/path/to/snpEff/snpEff.config파일 끝에 새롭게 추가할 genome을 추가해 줍니다.

ex) vi snpEff.config
Lee_girwon.genome : Lee_girwon
--다음 라인은 선택사항 입니다.--
[TAB]Lee_girwon.chromosomes : AAA0001.1, AAA0002.1
[TAB]Lee_girwon.AAA0001.1.codonTable : Standard
[TAB]Lee_girwon.AAA0002.1.codonTable : Invertebrate_Mitochondrial

자 snpEff.config에 필요한 정보를 추가하였다면 이제는 database를 만들어주는 시간입니다.

java -jar /path/to/snpEff/snpEff.jar build -gff3 -v Lee_girwon

하시면 snpEff database가 뚝딱 만들어 집니다.

참 쉽죠?

위에 까만글씨로 욕은 아닌데 욕먹은 느낌이 나서 귀찮다?
그럼 작업가능한 서버계정과 흡족 할 사례비주시면 대행해드립 ㅋㅋ

토요일, 4월 30, 2016

CUTADAPT 사용설명서

cutadapt는 현재 1.9.1이 최신판으로

cutadapt guide에 설치에서부터 사용법
A to Z까지 너무나도 자세히 잘  소개되어 있습니다.
2011년에 논문도 있고

여튼..

cutadapt --help하시면 잘나오고
URL을 보시면 옵션에 따라 어느 위치의 adapter를 제거해주는지
어떤 방식으로 제거해 주는지 잘 나와있습니다.

-a,-g,-b 옵션이 adapter를 확인하고 remove하는 위치를 선정하는 중요한 옵션입니다.

single-end인 경우에는 cutadapt 사용시 큰 문제는 없지만
paired-end인 경우 cutadapt 사용시 다음과 같이 사용해야 합니다.

$cutadapt -a adapt_seq -A adapt_seq -o out_1.fq -p out_2.fq in_1.fq in_2.fq
-g, -b를 paired-end에서 사용하려면 -g -G, -b -B를 사용하시면됩니다.
-u는 일정한 길이로 cutting하는 옵션인데 second에서도 적용되게 하려면 -U를 사용하시면된다고 합니다.

일요일, 4월 24, 2016

SQLite3에서 import/export 하기

SQLite3를 사용할때 csv로 import, export하는 방법에 대해서
알아보겠습니다.

이게 왜 필요한거냐구요?
저한테 필요한거라서 포스팅하는겁니다.
그리고 알아두시면 쓸일이 있을지 누가 아나요? :)

csv를 특정 테이블에 import하기

#sqlite3 <database>
sqlite> .headers on
sqlite> .separator ","
sqlite> .import <in.csv> <table.name>
이때 in.csv는 쉼표 구분자로 되어 있어야 합니다.
다른 구분자로 되어 있으면 아마 제대로 import가 되지 않겠죠? :)

특정 테이블을 csv로 export하기

#sqlite3 <database>
sqlite> .headers on
sqlite> .mode csv
sqlite> .output <output.txt>
sqlite> select * from <table.name>;
이때 output.txt는 export할때 내용을 받는 파일 이름입니다.
그리고 tab구분자를 사용하려면 아마 .mode tabs 하시면될겁니다.

그리고 sqlite3 데이터베이스안에서 작업하지 않고 다음과 같이 명령어 한줄로도 끝낼수 있습니다.

sqlite3 -header -separator " " ./home/data.db "select * from table;" > out.txt      
sqlite3 -header -separator "," ./home/data.db "select * from table;" > out.txt        
sqlite3 -header -separator quot;\t" ./home/data.db "select * from table;" > out.txt 


모 그렇다고 합니다. :)

금요일, 4월 22, 2016

월요일, 4월 04, 2016

Long-read sequence assembly of the gorilla genome

서부저지고릴라(Western Lowland Gorilla, Gorilla gorilla gorilla) 중 하나인 Susie의 genome이 PacBio를 이용해서 좀더 high resolution으로 만들어졌다는 아름다운 논문입니다.

Long-read sequence assembly of the gorilla genome

왼쪽 녹색은 Susie, 오른쪽 아이보리색은 gorGor3의 contig size
각각 전체 Genome에서 10% 서열을 나타내는데 사용되는 contig 개수를 보여주는 그림으로 PacBio로 시퀀싱하여 어셈블리한 Susie가 short read assembly로 하는것보다 월등함을 확인시켜주고 있다(300M를 보여주는데 susie는 contig개수가 10개 남짓이면 되는것에 비해 gorGor3는 세어보시길;;;).

그리고 첫장 Table1에서 기존에 short read assembly한 결과보다 이번 결과가 더 월등하다는것을 여실히 보여주고 있는데 스캣폴드 개수가 554개 무슨 곰팡이 contig 개수인줄..
contig 최대 길이 서열은 36M bp, scaffold 최대 길이 서열은 110M bp. orz

그밖에 논문에서
기존 genome에서보다 gap 더 줄였구요
기존에 짧게밖에 못봤던 mobile element들 거의 full length로 확인할수있었구요
수kb에 달하는 insertion 확인해서 유전자 없는것도 확인할수 있었습니다라는
다양한 잘난척을 시전해 주고 계시는데...


결국 사용한 SMRT cell이 236개라는...
이거 PacBio 시퀀싱가격만... ㄷㄷㄷㄷ

이 논문보시고 우리도 genome 향상시킬수있어!! 라고 핑크빛 바램을 가지고 있으시는분들..  여러분들도 원래부터 좋은 genome가지고 연구할수 있었습니다.
다만 연구비가 귀여워서 못한것 뿐이고 그리고 모든 동물에 대해서 이렇게
드라마틱하게 genome 품질이 향상되지는 않습니다.
척추동물정도면 이정도 연구비 때려부으면 가능하지만 그 이하에서는 아직
해결해야할 것들이 좀 있습니다.

다 아시는 분들께서 모르시는척 하시기는... :)

그리고 PacBio의 Sequel 출시로 기존에 RSII로 했을때 보다는 반값에 가능하지 않을까합니다.
일단 SMRT cell개수를 줄일수 있으니... ㅋㅋ
그거 노리고 일단 RSII기준으로 시퀀싱비용 비싼듯보이게하고 Sequel로 하면 싼것처럼 느끼게 하려는 고도의 노림수인가;;;

여튼... 잘 따져보시고 시퀀싱하시기 바랍니다.

너도나도 앞다투어 시퀀싱하면 거지꼴 못면합니다.

월요일, 3월 21, 2016

Widespread Polycistronic Transcripts in Fungi Revealed by Single-Molecule mRNA Sequencing


Widespread Polycistronic Transcripts in Fungi Revealed by Single-Molecule mRNA Sequencing

간만에 읽은 저널 한편...
어느 지구정복을 꿈꾸시는 과학자분께서 운영하시는 것에 비하면 그냥 트윗터 수준임을
미리 알려드립니다.

자세히 안파해칩니다.

필요한것만 읽습니다.(제목만 보고 대충 때려맞추겠다는 심본데? 정답!!)

곰팡이중 basidiomycete fungi를 Iso-Seq을 이용하여 transcriptome 분석을 수행하였고, 우리는 기존의 short read가지고 깨작대던 님들이 못찾는거 찾는 기승전시퀀싱자랑하는 논문되겠습니다.

일단 이 논문은 JGI와 Pac이 손잡고 만들었습니다.
이 말은 곧 SMRT 비용 신경안쓰고(는 아니고 다른 연구자들보다 적게 신경썪을..) 분석에 사용하기 좋은 고 퀄러티 read들을 넉넉히 생산했을 것이기에 이런거 하고 싶다고 그냥 무작정 논문에 나온 SMRT cell 만큼 시퀀싱하시면 거지꼴 못면합니다.
suppl보시면 아시겠지만 SMRT cell 두자릿수 입니다. 앞자리가 10이 아닌건 안비밀 Orz..

복잡하고 어려운거 직접 보시면되니깐 쉬운거 말씀드리고 끝내겠습니다.

기존에 분석한 basidiomycete fungi중 Plicaturopsis crispa를 집중으로 파해쳤는데 이전까지 알고 있는 isoform 비율 10%가 아닌 한 20%정도 된다. 그리고 곰팡이도 isoform 3개 이상짜리도 엄청 많이 있음. 우리 곰팡이 무시하지 마셈.

그리고 비교셋으로 일루미나 숏-리드도 시퀀싱해서 ToFU (Transcript isOforms: Full-length and Unassemble,의 약자로 iso-seq을 분석하는 파이프라인? 시퀀싱 전략? iso-seq 결과물? 논문 보시면 아시겠지만 다양하게 사용되는것을 알수 있음)와 비교해봤는데
기승전 풉 짧은 것들은 안됨.
(하..... 지금까지 짧은것가지고 한것도 서러운데.....  ㅠ.ㅜㅋ)

여튼.. 모 검증은 해봐야하는거고 이 논문에는 RT-PCR해서 polycistronic 검증을 하긴했는데 좀더 확인해봐야 할것 같고..
새로운것 찾았다고 하고싶은 분들은 Iso-Seq 관심가지고 해보시는것도 나쁘지 않을것 같습니다.

근데 왜 너는 PacBio 관계자도 아니면서 PacBio로 실험한 논문 소개 하냐?

제 비록 제가 몸담고 있는 곳에는 PacBio가 주력이 아니지만
저는 언제나 연구자분들이 좀더 멋진 연구를 하실수 있도록 아낌없이
조언을 해드리고자 고심하는 연구자아니깐요 (캬~ 멋있다)

토요일, 3월 19, 2016

InterProScan Error를 대하는 방법

근래 interproscan을 돌리는데
어떤 옵션은 문제없이 작업이 진행되는데
어떤 옵션은 작업중에 주구장창 에러만 뱉어내서
내가 무엇을 잘못하는지 어리둥절하고 있었는데 은근 쉬운 문제였다는...

우선 제가 하는 작업은

1) interproscan.sh -i input.fa -appl pfam -f tsv
2) interproscan.sh -i input.fa -goterms -f tsv

1)번 command는 문제업이 계속 잘 진행
2)번 command는 미친듯이 자바에러를... ㅠ.ㅜ

그런데 역시나 그렇듯이
에러를 자세히 보면 해결할 수 있다는 :)
(문제속에 답이 있다는 드립은 아니고;; )

제가 겪은 오류의 문제는 hostname 설정만 해주면 된다는 사실
이유는 -iprlookup 때문인데.. Host를 찾을 수 없어서 쉰나게 에러를(아이 씬나~ )
그래서 /etc/hosts에 127.0.0.1에 그냥 알아서 잘 추가해주면 된답니다.

interproscan 돌리실때 에러난다고 속상해하지 마시고
에러를 잘 확인하시면 그 속에 길이 있을수 있습니다.
ps. 세그먼트 폴트가 난다면 그냥 때려치우세요..

토요일, 3월 12, 2016

Kmer 분석 관련 논문


간만에 뒤적이다가 Kmer 관련해서 설명된 2013년도 논문이 있어서 아실분은 아시겠지만
공유차 끄적끄적 합니다.

Estimation of genomic characteristics by analyzing kmer frequency in de novo genome projects

논문요약을 하자면
NGS의 발전으로 re-seq말고도 de novo를 하는데 short read라서 우리가 genome assembly를 잘했는지 "아 몰라요" 하지 않기위해 서열의 content frequency를 사용해서 예측하는 k-mer 분석을 해서 대략적으로라도 genome size를 확인해서 우리가 "assembly 쩔 잘했어요"를 외치는데 도움이 되는 테스트도 해봤고 소스도 있습니다. 우리 잘했죠?
모 그런 내용 되겠습니다. :)

가장맘에 들었던 figure는 error와 heterozygous에따른 Kmer 분포 였습니다.


NGS 특히 일루미나 데이터를 가지고 de novo 해보셨던 분들께서는
아마 다음과 같은 그림을 보셨을겁니다.



맨날 보는 그림이고 이그림은 시퀀싱 error를 포함하고 있는 그림입니다(1-2 depth에 peak가 무제한인게 가당키냐 한 얘기냐고요 >_< ).

다음이 이상적인 시퀀싱이 된 결과 에서 얻어질수 있는 원래 kmer 그래프 입니다(이것도 가당키나 가능한 얘기냐??).


그리고 하단의 그림은 위의 그림들을 merge하여 잘 표현해놓은 그림입니다.




그리고 마지막으로 Kmer분석하면 진짜 genome size 예측 제대로 되는거 맞어?
라는 의구심을 가지시는 분들께서는 논문 p25에 Table2. b 테이블보시면 되겠습니다.

현재 genome size가 보고된 종들에 대해서 Kmer분석을 해봤고, 어떻게 하면 그나마 실제 genome size에 가까운 Kmer 분석 결과를 얻을 수 있는지 아실수 있습니다. 그리고 보시다 싶이 genome size큰거는 (사람은 150Mb 차이가 나는데) 예측 잘 안되는거 아니냐 라고 할수 있지만 %로 보면 오차가 5%내외이니 크게 걱정하지 않으셔도 됩니다(아마추어 같이 왜그러십니까).

그리고 논문 마지막에 K-mer 분석하려면 (인간적으로) genome size에 30x 이상은 시퀀싱하자 라고 촉구하고 있습니다.

사족: 논문 맹신하지 말아라. 겪어보면 알겠지만 케바케다. 


토요일, 7월 04, 2015

Bowtie index 생성이 잘 안된다면..


오랜만에 글씁니다.

요즘 NGS다 모다 때문에
Bowtie이 BWA이 모 이상한 aligner?mapping tool 많이 쓰시고 있죠?
(예, BLAST나 BLAT하나면 다 되던 때가 저도 그립긴 합니다. ㅋ)

근데 요녀석을 하려면 BLAST처럼 db같은거 index를 만들어 줘야합니다.
왜냐고요? 아 몰랑 검색하시면 다 나옵니다.

근데 요녀석들이 그냥
명령어 치면 다 만들면 괜찮은데
가끔씩 말 안들을 때 있습니다.

그럴땐 어떻게 해야 하나..
(서버 때려봐야 내 발만 아프고 여차하면 수천 깨집니다. 보스한테 쫓겨날수도 있고요 ㅋ)

bowtie-0.X.X인 경우 debug 프로그램이 없는듯한데
bowtie-1.X.X인 경우 bowtie-build-[l/s]-debug가 있습니다.
이거 돌려보시면 index가 정상적으로 생성되지 않는 이유를 알 수 있습니다.

그럼 그냥 늦은 밤 간만에 글 써봤습니다. :)

금요일, 12월 26, 2014

BSMAP 2.xx 설치시 error


BSMAP: whole genome bisulfite sequence MAPping program


간만에 BSMAP설치하는데 다음과 같은 에러가 딱!!
(예전에 설치할때는 에러 없었는데.. ㅠㅜ.)
param.cpp: In constructor ‘Param::Param()’:
param.cpp:8:20: error: ‘_SC_NPROCESSORS_ONLN’ was not declared in this scope  num_procs=sysconf(_SC_NPROCESSORS_ONLN);
param.cpp:8:40: error: ‘sysconf’ was not declared in this scope
  num_procs=sysconf(_SC_NPROCESSORS_ONLN);

구글링한결과

해결글


param.cpp파일에  "#include<unistd.h>" 추가해주면 되는 것였음

참 쉽죠~
내가 겪은일 해결방법 공유하면 다른 누군가는 개이득~ :)