Thursday, December 2, 2010

gap closing by phrap & consed

요즘 FLX로 de novo assemble 한 scaffold의 gap closing 중인데. gap 인 N부분을 메꾸기 위해서 sager sequencing 을 이용하고 그 gap 부위의 assembly를 phrap을 이용하고 consed로 확인을 한다. phill green 이라는 사람이 만들었는데 프로그램을 얻기가 여느 프로그램 중에 젤 까다롭다. phred랑 phrap은 바로 첨부파일로 보내주지만 consed는 파일이 크기 때문에 접속할 ip를 academic 한 이유로 프로그램을 이용한다는 동의서와 함께보내야한다. 
뭐 여튼.. 기본적인 make 만 하면 되고 make install도 없다 다만 실행 파일을 모아놓은 bin을 path로 걸어놓기만 하면 끝. 


gap이 무자게 많은 관계로 가능한 automation을 하고 싶어서 이것저것 짜고 있는데.. 결론은 아무리 정리를 해도 눈으로 확인해봐야 한다는... 여튼 눈으로 확인하기 전에 최대한 정보를 정리해서 summary를 해야 하는 까닭에... 필요한 데이터를 링크, 정리는 아직 모르겠고


-ace file format
http://bcr.musc.edu/manuals/CONSED.txt


autofish라고 있는데.. 이게 뭔지는 자세히 들여다 봐야 할듯.. 
http://www.phrap.org/consed/autofinish.html

Monday, November 29, 2010

Fwd: Thank you from the Wikimedia Foundation

wikipedia에다가 기부했다. 내 생전 자발적으로 기부해보긴 첨이네. 요즘 몇번이고 wikipedia를 들어갔을때 wikipedia의 창립자의 personal appeal 이라는 배너가 계속 뜬걸 봤는데. 사실 무시하다가. 그래도 wiki 만큼 나에게 많은것을 알려준 것도 없다는 생각에. 그냥 무시하기엔 미안한 맘이 크게 들어서.. 그래서 가장 싼 값으로 선택해서 donate 했다. 난 마음이 아직 부유하지 못해서.
(아 그리고 이번 포스팅은 Email로 보내서 한다. 무슨 이야기냐면 얼마전에 알았는데 blogger.com에서 자신의 블로그에 Email 계정을 줘서 그 계정으로 메일을 보내면 보낸 내용이 바로 포스팅 된다.)


---------- Forwarded message ----------
From: Sue Gardner <donate@wikimedia.org>
Date: Mon, Nov 29, 2010 at 10:06 AM
Subject: Thank you from the Wikimedia Foundation
To: sehwan Kim <graphy21@gmail.com>




Dear sehwan,


Thank you for your gift of USD 20 to the Wikimedia Foundation, received on November 29, 2010. I’m very grateful for your support.
Your donation celebrates everything Wikipedia and its sister sites stand for: the power of information to help people live better lives, and the importance of sharing, freedom, learning and discovery. Thank you so much for helping to keep these projects freely available for their nearly 400 million monthly readers around the world.


Your money supports technology and people. The Wikimedia Foundation develops and improves the technology behind Wikipedia and nine other projects, and sustains the infrastructure that keeps them up and running. The Foundation has a staff of about fifty, which provides technical, administrative, legal and outreach support for the global community of volunteers who write and edit Wikipedia.
Many people love Wikipedia, but a surprising number don't know it's run by a non-profit. Please help us spread the word by telling a few of your friends.


And again, thank you for supporting free knowledge.


Sincerely Yours,




Sue Gardner
Executive Director


* To donate: http://donate.wikimedia.org
* To visit our Blog: http://blog.wikimedia.org
* To follow us on Twitter: http://twitter.com/wikimedia
* To follow us on Facebook: http://www.facebook.com/wikipedia




This letter can serve as a record for tax purposes. No goods or
services were provided, in whole or in part, for this contribution.
The Wikimedia Foundation, Inc. is a non-profit charitable corporation
with 501(c)(3) tax exempt status in the United States. Our address is 149 New Montgomery, 3rd Floor, San Francisco, CA, 94105. Tax-exempt number: 20-0049703






--


*********************************************
Saehwan Kim, M.S (majored in Bioinformatics)

    Email : 
graphy21@gmail.com
    Blog : 
http://graphy21.blogspot.com
    Currently working as a researcher at Macrogen Inc. (
http://www.macrogen.com/)

*********************************************

Wednesday, November 24, 2010

HMMER 사용시 주의점

이런적이 예전에 있었던거 같은데.. 뭐였지.. HMMER 사용할때.. Pfam 이 버젼 문제가 있었나.. 정확히 기억이 안나는데 여튼.. 
기억해야 할 한가지가.. HMMER가 version 3까지 나왔는데 종종 HMMER를 사용하는 프로그램이 HMMER 최신 버젼 위주로 되어 있는것이 아니라 예전 걸로 되어 있다. 
이번에 rRNA prediction을 위해 RNAmmer (http://www.cbs.dtu.dk/services/RNAmmer/) (뿐만 아니라 genometools 라는 프로그램(tallymer 땜시)도 HMMER2.3.2 버젼을 사용한다)를 셋팅하는데 자꾸 프로그램이 안도는걸 확인했는데.. 몇시간의 뻘짓으로 알아낸게 RNAmmer가 HMMER 2.3.2 버젼으로 되어 있기 때문이라는 것이다. 아.. 진짜.. 이럴 때 너무 싫어..
암튼 주의하길! 

Tuesday, November 23, 2010

adding syntax highlighter

와.. 이거 참.. 유용하다. 코드를 blog에 올릴때 syntax에 highlight 하는게 가독성에 굉장히 좋은데 그러한 일을 해주는 javascript가 있다. 오.. 이것도 모르고 항상 putty capture해서 올렸는데..
이게 그 개발자 홈피고
http://alexgorbatchev.com/SyntaxHighlighter/integration.html

이게 그 blogger.com에서 어떻게 사용해야 하는지를 나타내는 blog
http://www.cyberack.com/2007/07/adding-syntax-highlighter-to-blogger.html

사용은 간단하다. 우선은 자신의 블로그 frame에 사용되어질 스크립트를 링크시키고 저장한 뒤에 블로깅 할때마다 다음과 같이 pre 태그를 사용하고 class="brush:py" 식으로 하면 된다.

def aa():
  print 'Hi, there'

MapReduce

MapReduce 는 분산 컴퓨팅을 지원하기 위한구글에서 개발한 software framework 라고 한다.


사실 GFF 파일을 파싱하고 있는데 요즘.. biopython에 있는 Bio.GFF 모듈이 없어지고 BCBio 라고 새로히 모듈이 생성되고 있다(아직 biopython에는 완전히 포함되지 않은듯). 그런데 이 모듈 개발자 블로그를 가보니 GFF parsing을 parallel 하게 할 수 있게 해놨다는 블로깅을 보고 거기서 사용한 것이 Disco 라는 것이란다. 그런데 그 Disco는 또 MapReduce를 이용한 것이고...
아... 뭐래는 거냐 얘네.. 


그래서! 알아봐야지.. BCBio 모듈을 만든 저자가 했던 말처럼 NGS 덕에 데이터 양 엄청 많아지는데 그냥 one core parsing하면 안되니까.. 사실 내가 하려는 것도 NGS 에서 나온 데이터를 파싱하려는 것이라서.. 해야지 뭐. 


우선은 링크 
-GFF module developer blog
http://bcbio.wordpress.com/2009/03/08/initial-gff-parser-for-biopython/
http://bcbio.wordpress.com/2009/03/22/mapreduce-implementation-of-gff-parsing-for-biopython/


-Disco
http://discoproject.org/


-MapReduce (intro)
http://en.wikipedia.org/wiki/MapReduce


-MapReduce (example of using MapReduce)
http://www.michael-noll.com/wiki/Writing_An_Hadoop_MapReduce_Program_In_Python
http://atbrox.com/2010/02/08/parallel-machine-learning-for-hadoopmapreduce-a-python-example/

Monday, November 22, 2010

artemis

실험하는 사람들은 비쥬얼적인 것을 굉장히 선호한다(사실 실험하는 사람만 그런 것은 아니지만). 같은 내용이라고 해도 이것이 텍스트 파일로 되어 있냐 아니면 자신이 사용하는 툴에 보일수 있느냐에 따라 인식을 달리한다. 특히 내 주변인, 미생물 균주를 다루는 사람(지극히 내 경험적인 것이다)들은 artemis에 연연한다. 똑같은 내용이라도 excel로 된 결과와 artemis로 된 결과의 완성도가 다른 것처럼 느낀다. 그래서.. artemis 를 이용할 수 있는 아웃풋으로 assembly와 annotation 결과를 report 해야 함을 느낀다(그렇지 않으면 일도 많아지고 작업 폴더가 지져분해지기 때문에). 이번 포스트에서 artemis와 관련된 자료를 모아볼려고 한다.

artemis의 input format이 별게 아니다. 그냥 genbank 아니면 EMBL format (이번 기회에 bipython의 SeqRecord 클래스의 속성들을 파악해서 genbank 파일로 출력해야겠네..)


원래 sanger 에서 만들었나보다. 2000년도 나왔네.. 
http://www.sanger.ac.uk/resources/software/artemis/


-biopython으로 genbank 만들때 주의점
1.SeqRecord 안의 Seq 객체의 alphabet 속성이  Nucleotide or Protein alphabet 이어야 한다.
2.genbank 파일을 Bio.SeqIO.read 로 받아들이면 SeqRecord.SeqRecord의 한 속성(속성이라고 해야 하나 맴버 변수라고 해야하나) feature들의 위치가 알아서 python의 indexing 계산법으로 바뀐다. 예를 들면 genbank 파일에 gene   120...158 이라고 위치 정보가 나온 gene feature가 있다고 하고 이를 biopython으로 파싱하고 그 위치를 genbank.features[#].location이라고 해서 위치를 보면 119..158로 변해 있는 것을 확인할 수 있다. 이는 python에서 이 정보를 다를 때 유용하기에 이렇게 되어있는데 이를 주의해서 genbank 파일을 만들어야 한다. 다시 말해서 위와 거꾸로 SeqFeature를 만들때 원래 위치보다 -1 값을 한 위치 정보를 SeqFeature.FeatureLocation()의 첫번째 인자에 넣어줘야 한다.

Sunday, November 21, 2010

information theory

bioinformatics 논문을 보다보면 KL-divergence 와 같은 information theory에 관한 내용을 자주 접할 수 있다 (FFP의 논문에서도 나온다). berkeley 의 대학의 bioinformatics의 한 대학원 수업을 보면 두 개의 main text book을 중심으로 배우는데 그중 하나가 바로 information theory 에 관한 책이며 다른 하나인 BSA도 information theory를 사용하며 부록에 따로 취급한다 (http://biowiki.org/view/Teaching/BioE241).


해서 간단하게 요약하려 한다. 내용은 오일석의 패턴인식이라는 책의 내용이다.


-self information
정보라고함은 놀라운 정도이다. 그러니까 오늘 날씨가 맑은데 내일도 날씨가 맑다는 정보보다는 내일은 비가 온다는 정보가 더 놀랍다. 그렇기 때문에 내일 비가 온다는 정보가 정보량이 더 많다고 할 수 있다. 이를 식으로 나타내면 다음과 같다.
h(x) = - log2 P(x)
h는 self information으로 정보량을 뜻하고 P는 사건 x가 일어날 확률을 의미한다.


-entropy
엔트로피는 모든 사건에 대한 위의 self information의 평균값이다.
H(x) = -Σ h(x)P(x)
이 엔트로피는 모든 사건의 확률이 동일할때 그 값이 최대가 된다. 곧 엔트로피는 불화실성을 뜻한다. 모든 사건의 확률이 동일하면 그 엔트로피 값도 커지고 이는 곧 사건의 확률이 동일하므로 어떤 사건이 발생할지 예측하기 힘들다는 의미이다.


-KL divergence
두개 확률 분포 p1(x) 와 p2(x) 가 있을때 두 확률 분포간의 다른 정도를 표현하는 한 지표가 Kullback-Leibler divergence 라고 한다.
KL(P1(x),P2(x)) = ΣP1(x)log2(P1(x)/P2(x)) 
KL divergence는 relative entropy (상대 엔트로피) 라고도 한다(아마도 entopy의 구하는 식과 동일한데 다만 log에서 취하는 확률값이 두 집단의 상대적인 확률을 취하기 때문인듯). 
그리고 하나 주의해야 할것은 KL(P1(x),P2(x)) 와 KL(P2(x),P1(x)) 는 서로 다르다. 그렇기에 distance라는 표현을 사용하지 않고 divergence 라는 표현을 사용한다. 이는 패턴인식에서 특징 선택을 할때 선택된 특징에 의한 두 그룹의 분별력을 측정할때 사용가능하다.


-mutual information
두 랜덤 벡터 x, y의 의존도를 평가할때 사용 가능하다.
두 벡터 x와 y가 독립이라면 p(x)p(y) = p(x,y) 의 식이 성립하고 의존성이 클수록 p(x)p(y)와 p(x,y) 의 차가 커진다.그래서 두 값 p(x,y) 와 p(x)p(y)의 KL divergence를 구한것이 mutual information (상호 정보)이다
I(x,y) = KL(P(x,y),P(x)P(y))
이러한 mutual information은 기존 특징 벡터 x에다가 새로운 특징벡터 y를 추가 하였을때 얻는 이득을 평가 할때 사용가능하다.즉 새로운 특징 벡터 y가 x와 상호 정보가 크다면 y를 추가하였을때 얻는 이득이 적다.