Sunday, February 6, 2011

생명정보학자들은 어떤 역할을 해야 하나?

네이쳐 바이오테크놀로지에 2010년 생명정보학 연구 하일라이트에 관한 글이 실렸다.
http://www.nature.com/nbt/journal/v29/n1/pdf/nbt.1747.pdf

이 글 중 Box2 에는 '분야를 뛰어넘는 연구자( Cross functional individual )' 들이 생명정보학 연구에 어떤 기여를 하고 있는지에 관한 내용이 담겨있다. 여기서 말하는 분야를 뛰어넘는 연구자들은 곧, 생명정보학자, 계산 생물학자로 지칭되는 생물학과 계산과학 두 분야 모두에 전문적인 지식을 가진 연구자들을 이야기 한다.

생명정보학 툴이 생물학계 전반에 퍼지는 양상은 3단계에 거쳐 진행이 된다고 하는데, 이 순서는 아래와 같다.

1. 생명정보학자들이 정보학적 분석을 통해 해결할 수 있는 생물학 문제들을 인식하고 간단한 방법론을 통해 이런 문제들을 해결할 수 있다는 사실을 증명한다.
2. 정통 계산과학자 ( 수학 및 컴퓨터과학자들 ) 들이 좀더 정교한 방법론들을 이용해 생명정보학자들이 만들어 놓은 간단한 방법론을 개선하여 생물학자들이 사용하기 쉬운 '툴'로 만든다.
3. 만들어진 '툴'을 필요로 하는 생물학자들이 사용하여 새로운 발견에 이용된다.

마이크로어레이 '분류( classification )' 연구에서 핵심이 되는 것은 특징 찾기(feature selection) 과정인데, 이 분야 연구를 예로 들어보면,  1999년 Todd golub 에 의해 출판된 네이쳐 논문이 선구적인 논문으로 이와 관련해 가장 인용이 많이 된 논문인 것으로 알고 있다.

그런데, 이 논문의 핵심이 되는 feature selection 알고리즘은 새롭게 개발된 것이 아니라, 흔하게 쓰이는 t-test 다. 즉, 위의 1번 과정 처럼 '기존에 존재하는 단순한 방법론' 을 '새로운 생물학 문제'에 적용을 하여 효과적으로 문제 해결을 할 수 있다는 사실을 증명한 것이다.

이후로 이 보다 훨씬 정교한 방법론들이 수학자, 통계학자, 컴퓨터 공학자들에 의해 엄청나게
만들어 지면서 2번 과정이 진행된다. 이 중에 가장 효과적이라고 검증된 SAM 과 같은 몇몇개의 방법론들은 마이크로어레이 분류 문제 해결을 위해 전세계의 생물학자및 생명정보학 연구자들에 의해 사용되는 3번 과정을 거치며 기술 정착 단계에 이른다.

1,2,3번 과정에서 가장 큰 업적으로 평가받는 것은 1번, 즉 가장 먼저 '문제를 인식' 하고 '간단한 방법으로 해결 가능성' 을 보인 사람이다.  노벨상도 이런 일을 한 사람에게 돌아간다. 즉, 노벨상이나 각광받는 연구 업적들은 대단한 '방법론' 에 의한 경우보다 새로운 '문제 인식(발견)' 인 경우가 많고, 이런 새로운 '문제 인식' 에는 복잡한 방법론이 필요하지 않은 경우가 많다는 얘기다.

똑같은 문제를 조금 더 효과적으로 해결하는 방법론 을 만들기 위해 노력하는 것 보다, '중요한 문제' 발굴에 좀 더 신경을 쓰는 것이 좋은 생명정보학 연구자로 거듭나는 길이 되지 않을까 생각해 본다.

Wednesday, December 15, 2010

소득과 행복은 상관없다? - 이번에 출판된 PNAS 논문

http://www.pnas.org/content/early/2010/12/08/1015962107.full.pdf+html

학교 뉴스 게시판을 보다가 이번주 PNAS 에 '경제력과 행복의 상관관계' 란 해묵은, 하지만 여전히 흥미로운 토픽에 대한 논문을 경제학과 교수가 출판한 소식을 접했다.  나도 전에 한번 국가별 행복도 지수와 개인당 소득 GNI 데이터를 가지고 이 상관관계를 분석해 본 바( 관련 포스팅: http://goldbio.blogspot.com/2009/01/blog-post.html )가 있어 상당히 흥미롭게 기사를 읽어봤다.

공교롭게도 몇일 전에 World database of happiness 에 들어가서 국가별 행복도의 변화 양상을 살펴 봤는데, 수십년 전부터 행복도 지수가 공개된 국가들의 행복도 지수의 변화가 거의 없다는 걸 알게 됐었다.  선진국이나 후진국으로 꾸준히 자리매김해 온 나라들은 그렇다 쳐도, 짧은 시간 안에 급격한 경제 성장을 이룩한 국가들인 한국, 칠레, 아일랜드, 중국 등의 나라에서도 행복도 지수의 변화가 거의 없다는 사실이 흥미로웠다.

이런 일이 있은 몇일 후, 오늘 이 논문에 대한 소식을 접하게 되었는데, 논문은 신뢰도 있는 데이터로 치밀하게 이 time-series happines - income 데이터를 분석해서 income 과 happiness 사이의 상관 관계가 없다는 결론을 이끌어 내었다.

다시 말하면, 국가의 소득 수준이 높아져도 그 국가의 행복도는 변화하지 않는다는 것인데, 여기서 흥미로운 포인트는

* 전체 국가 레벨로 놓고 보면 행복도와 경제력 간의 뚜렸한 상관관계가 관찰된다는 사실이다.

예를 들면, 덴마크가 일인당 국민소득 4만 달러고 행복도가 8이고,  한국이 2만 달러에 행복도 6, 북한 3천달러에 행복도 5 이런 식으로 전체 국가를 놓고 행복도와 국민소득은 뚜렷한 상관관계가 관찰되지만,

한 국가 안에서 행복도의 경우,  한국의 1970년 국민소득 3천 달러 행복도 6, 1980년 국민소득 8천 달러 행복도 6, 1993년 만달러 행복도 6, 2003년 2만달러 행복도 6 , 와 같이 국민소득의 증가와 행복도의 증가의 상관관계가 관찰되지 않는다는 사실이다.

이런 사실들을 종합해보면, 한 국가의 행복도는 국가의 경제 발전과 관련이 없다는 결론에 도달한다. 경제 발전이 아닌 다른 factor 들이 국가의 행복도를 결정짓는다는 것이고, 이 행복도 상승 factor 들이 발전하지 않으면 국가의 행복도는 개선되지 않는다.  이건 문화적인 국가의 성격과 밀접한 관련이 있기 때문에 어찌보면 경제 발전 보다 훨씬 개선하기 어려울 것이고, 따라서 국가의 행복도를 끌어올리는 작업은 생각보다 어려운 문제일지 모른다.

1990년대 중반까지 유럽의 가난뱅이 국가(어쩔 수 없는 해외취업-low paying sector-으로 이산가족이 그렇게 많았다고 하지...)였던 아일랜드는 일인당 국민소득 3만 8천불이 넘는 경제 발전을 이루고 난 후나 그 전이나 행복도가 7이 넘는 행복한 국가 였고, 한국은 끼니 걱정하던 1970년대나 국민소득 2만불인 지금이나 행복도 6이 안 되는 잘 살지만 (경제력에 비해)불행한 국가다. 

어른들이 심심치 않게 얘기하는 " 그래도 그 때가 좋았지 " 라는 얘기가 진짜 맞는 얘기일 수도 있다는 말이다. 그 때나 지금이나 비슷하게 그리 행복하진 않으니까...

Thursday, December 9, 2010

Google code university::구글에서 제공하는 프로그래밍 교육 자료


기말 시험을 앞두고, 평소에 들어가보지도 않던 웹들을 이곳 저곳 들어가보다가 Google Code University 라 명명한 곳에서, 프로그래머들을 위한 교육 자료를 제공하고 있는걸 발견했다.

교육 카테고리는 크게
  • 프로그래밍 언어
  • 웹 프로그래밍
  • 웹 보안
  • 알고리즘
  • 안드로이드
  • 분산 시스템
  • 구글 API 및 툴
  • Tool 101 ( 리눅스, MySQL, Software configuration )
로 나뉘에져 있고 그 밑으로 하위 주제들에 대한 페이지들이 죽 연결되어 있는 구조다.

프로그래밍 언어에는 C++, Java, Python, Go 네 가지에 대해서만 자료가 제공된다. Perl 이 빠져 있어서 살짝 아쉽 ,,

각 세부 항목들에서 제공하는 교육 자료를 살펴보면, 대게 미국의 대학들에서 제공하는 교육자료들이 링크 되어 있는데, 밑에 Submit a course 라는 메뉴를 누르고 들어가보면, 사용자들이 직접 자료를 제공하여 만들어지는 페이지 라는 걸 확인할 수 있다.

구글 자체에서 심혈을 기울여 만들어진 페이지가 아니라, 당연히 전체적으로 자료들 간 연결성이나 통일성이 떨어지는건 어쩔 수 없지만, 자료들이 점점 업데이트 되면 꾀나 쓸만한 reference 페이지로 사용할 만 한 것 같다.




Monday, December 6, 2010

23andMe 서비스 신청



Thanks giving 맞이 대 바겐세일에 나선 23andMe 서비스를 단돈 $99 에 신청했다.
실제로는 Kit 배송료 약 $14, 그리고 세일기간엔 의무적으로 분석 maintainance 서비스를 12개월간 가입해야 해서 이 비용 ( $5 X 12 ) 해서 총 $174 가 드는 셈인데, 그렇게 해도 원래 서비스 비용 $400 에 비하면 여전히 50% 이상 싼 가격이다.

신청 후 kit 은 3일 만에 배달되었고, 거품이 엄청 일어난 침을 겨우겨우 요구 용량까지 채우고, 동봉된 반송 봉투에 Kit 을 담아 우체통에 넣어 보냈다. 이제 2-4주 정도 지나면 분석 결과를 확인할 수 있다.

Wednesday, June 16, 2010

[R::manual] 무규칙 데이터 읽기

R은 항상 format 된 table 데이터를 읽어 graphing 하는데만 사용해왔는데,
이번에 특정 format이 존재하지 않는 데이터를 처음으로 처리해봤다.
이 과정을 정리해 본다.

DATA format

1 2 3 4 5
1 2 3
1 2 3 4 5 6 7 8 9 10

과 같이 각 row의 column 개수가 일정하지 않는 input data

1. Reading file

먼저 readLines 함수를 사용해 파일을 읽는다.


>raw_data=readLines('file')


이렇게 읽은 결과는

[1] "1 2 3 4 5"
[2] "1 2 3"
[3] "1 2 3 . . . 10"

과 같이 각 row가 list에 string 으로 저장된다.

2. String split

각 row의 string을 각각의 numeric value 로 구분한다.


> data=strsplit(da,' ')


결과는
"1 2 3 4 5" 가
"1", "2", "3","4","5" 으로 각 numeric value별로 떨어져 저장

3. Converting character to numeric value

"1","2" 와 같이 각 numeric value 가 떨어진 것 처럼 보이나,
이들은 numeric variable이 아니라, 아직까지 character variable 이다.

실제 이 숫자들을 가지고, plotting, statistic test를 수행하기 위해서는
이들을 numeric variable로 인식되도록 해야 한다.

이때, as.numeric 함수를 쓸 수 있는데, 문제는 이 함수의 입력값이
독립 variable이어야 한다는 것이다. 즉, list 형태의 데이터는 독립
variable로 변환해야 이 함수를 사용할 수 있다.
이를 위해 unlist 함수를 사용한다.

이들 함수를 한번에 쓰면,


> final=as.numeric( unlist( da ) )


이 때, da 가 multi level list 인 경우( list 여러개로 이뤄진 경우 )
위의 방법을 쓰면 서로 다른 level의 list를 구분없이 하나의 list로
합쳐 final로 합쳐 진다.

예를 들면,

[[1]]
[1] 1 2 3 4 5
[[2]]
[2] 6 7 8 9

로 구성된 da 라면, unlist(da) 의 결과는

[1] 1 2 3 4 5 6 7 8 9

가 된다. 원하는 결과는 원 list format 를 유지하는 경우가 대부분 일 것이다.
이런 경우에는 각 list level에 대해 각각 위 명령을 수행하여야 하는데,
일일이


a=as.numeric(unlist(da[1]))
b=as.numeric(unlist(da[2]))


와 같이 각각의 list 를 처리해 줄 순 없는 일이다.
이를 한번에 처리 한다면 아래와 같이 정리할 수 있다.


for(i in 1:length(da) ) {
da[[i]]=as.numeric( unlist(da[[i]] ) )

}

Sunday, April 25, 2010

University ranking on Bioinformatics [ 생명정보학 대학 랭킹 ]


I ranked universities according to the number of publications in journals on bioinformatics. The journals concerned for this task are Bioinformatics, BMC Bioinformatics and Plos computational biology. The journal selection criteria might be controversial since articles on bioinformatics have been published nearly all journals on 'biology', including top science journal Nature or Science. However, I selected the three journals for further analysis since it requires additional mandatory validation for articles published in the other journals to identify whether a given article is on bioinformatics or not( I used automatic selection and counting approach for this task). Moreover, the selected three journals are top ranked journals in the field of bioinformatics ( according to ISI impact factor ) so that ranking according to the publication numbers in these journals is not depend only on number of publications but the number of 'high' quality publications.

METHOD

  • Search journal : I used CPAN perl module 'WWW::Search::PubMed' to retrieve information of papers published in three journals. To retieve Affiliation information, I added lines of codes.
  • Control variation of university name : Majority of papers used standard official name to specify each university. Howevr, some of papers used university name which is subtly different from the standard one. Since it requires mandatory validation, I didn't consider these variations. I only consider universities are the same if they used exactly the same name. However, I controled terms for 'University of California' . There are branches of universities for 'University of California', such as UC san diego, UC los angeles , UC berkely, etc. And generally, the university name is divided by comma (, ) which is a seperator in affiliation line into two parts, 'University of California' and city name such as 'Los Angeles', 'San diego' , etc. So I combined university name and the city name if 'University of California' is stated alone followed by comma without city name.

Overall ranking
( Top 50 )

#colum 1: Ranking
#colum 2: Number of publications
#colum 3: University name
( Non US universities are orange colored )

1 108 UNIVERSITY OF CALIFORNIA SAN DIEGO
2 88 STANFORD UNIVERSITY
3 72 COLUMBIA UNIVERSITY
3 72 UNIVERSITY OF WASHINGTON
3 72 UNIVERSITY OF MANCHESTER
6 71 UNIVERSITY OF MICHIGAN
7 69 YALE UNIVERSITY
8 63 UNIVERSITY OF CALIFORNIA BERKELEY
8 63 UNIVERSITY OF CAMBRIDGE
10 60 WASHINGTON UNIVERSITY
11 59 UNIVERSITY OF OXFORD
12 58 TEL AVIV UNIVERSITY
12 58 UNIVERSITY OF TOKYO
14 56 NATIONAL UNIVERSITY OF SINGAPORE
15 53 PRINCETON UNIVERSITY
16 52 UNIVERSITY COLLEGE LONDON
17 48 UNIVERSITY OF MINNESOTA
17 48 UNIVERSITY OF QUEENSLAND
19 47 IOWA STATE UNIVERSITY
20 45 BOSTON UNIVERSITY
21 44 UNIVERSITY OF TORONTO
22 42 UNIVERSITY OF CALIFORNIA IRVINE
22 42 UNIVERSITY OF PITTSBURGH
24 41 CORNELL UNIVERSITY
24 41 KYOTO UNIVERSITY
24 41 UNIVERSITY OF SOUTHERN CALIFORNIA
27 40 UNIVERSITY OF CALIFORNIA SAN FRANCISCO
28 39 KAIST ( Korea Advanced Institute of Science & Technology )
28 39 TEXAS A&M UNIVERSITY
28 39 UNIVERSITY OF BRITISH COLUMBIA
31 38 JOHNS HOPKINS UNIVERSITY
32 37 HARVARD UNIVERSITY
32 37 UNIVERSITY OF CALIFORNIA DAVIS
34 36 UNIVERSITY OF PENNSYLVANIA
35 35 CARNEGIE MELLON UNIVERSITY
35 35 UPPSALA UNIVERSITY
35 35 UNIVERSITY OF MARYLAND
38 33 BIELEFELD UNIVERSITY
39 31 UNIVERSITY OF CALIFORNIA SANTA CRUZ
40 30 PEKING UNIVERSITY
40 30 UNIVERSITY OF TEXAS SOUTHWESTERN MEDICAL CENTER
40 30 UNIVERSITY OF GEORGIA
43 29 INDIANA UNIVERSITY
43 29 UNIVERSITY OF GLASGOW
43 29 UNIVERSITY OF CALIFORNIA LOS ANGELES
43 29 TSINGHUA UNIVERSITY
47 28 OHIO STATE UNIVERSITY
48 27 Seoul National University
49 26 TECHNICAL UNIVERSITY OF DENMARK
49 26 PENNSYLVANIA STATE UNIVERSITY



Rising universities

After HGP, bioinformatics recogenized as one of the most important field of genome revolution. Universities that did not specially drive their effort on bioinformatics before the time had started bioinformatics research with large investment. Therfore, the overall ranking might have undergone lots of changes.

To find these variation, I ranked again according to relative rank increase( rank_after_2001 - rank_before_2005 / rank_before_2001).
Range of publication time is divided into two duration, before 2001 and after 2005.
Universities without any publication before 2001 were not considered for this analysis.


[ Top 10 raising university]

#colum 1: Ranking
#colum 2: University name
#colum 3: relative rank difference
#colum 4: ranking for 1998-2000
#colum 5: ranking for 2006-2010

1.UNIVERSITY OF CALIFORNIA SAN DIEGO 0.93 15 1
2.UNIVERSITY OF WASHINGTON 0.92 39 3
3.STANFORD UNIVERSITY 0.66 6 2
4.TEL AVIV UNIVERSITY 0.56 39 17
4.UNIVERSITY OF QUEENSLAND 0.56 39 17
6.YALE UNIVERSITY 0.5 6 3
7.IOWA STATE UNIVERSITY 0.41025641025641 39 23
8.UNIVERSITY OF SOUTHERN CALIFORNIA 0.35 39 25
8.UNIVERSITY OF TORONTO 0.35 39 25
8.KYOTO UNIVERSITY 0.35 39 25


Thoughts on the ranking


1. Can I say that high ranked universities are better than universities in low ranked?
  • University is different from research institution. I think university ranking should consider not only research performance, but also how successfully they educate student. This ranking is based only on number of publications so that it only consider research performance. Therefore, this ranking should not be considered to reveal overall value of universities.

2. How does UCSD excel the other top schools?
  • UCSD is ranked around 7-10 when the ranking is based only on 'Bioinformatics' or 'BMC bioinformatics'. However, UCSD is top ranked with overwelming number of publications when it comes to 'Plos computational biology' journal. Since Plos family journals were initiated with tight relationship with faculty members at UCSD, they have willingness to publish papers in Plos journal. Moreover, Philip Bourne, a professor at UCSD in the field of bioinformatics, has been contributed a series of editorials, ' Ten simple rule ' advise series, in Plos Computational biology, which are not research papers, but counted as equally as research papers to be considered for ranking.
3. Some most prominent universities such as Harvard ranked lower compared to others, are they really bad on Bioinformatics or computational biology?
  • As I described in the beginning, this ranking is only based on top three journals in the field of bioinformatics or computatinoal biology. If the other journals were considered, the ranking would be changed a lot.
4. USA vs. the other countries
  • In the top 10 list, only Cambridge and Manchester are universities out of USA. In top 20, there are 8 and 12 in top 30. Regardless of drawbacks of ranking criteria, it's ture that USA is a leading country in this field.
  • List of countries other than USA in top 30 ranking are Japan, Canada, Israel, Korea, Singapore and Austrailia. 3 Aisan countries have 4 universities ranked within top 30.

Tuesday, March 30, 2010

시퀀스에서 Di-nucleotide frequency 계산 문제.

지난해 pung96님의 블로그에 올라왔던 Di-nucleotide composition frequency 세기 문제( http://perlog.pung96.net/20 ) 를 다시 한번 언급해 본다.

문제를 다시 정리해 보면,

AGATAGCGATAGCG
AGATGACGATAGAG
...

위 처럼 DNA 서열이 담긴 input 파일이 있을 때, DNA base 두개씩을 끊은 dinucleotide ( e.g., AG, CT ) 와 같은 16개 조합( DNA base가 4개 이므로 2개의 조합 가지 수는 16개 )의 빈도를 계산하는 것이 원글의 문제다. 이때, 앞에서 순서대로 2개씩 읽되, window size는 1로 하여 1칸씩 옮겨가며 2개씩 읽어 조합을 계산해야 한다.

구체적으로 AGAA 네개 DNA 서열인 경우, AG, GA ,AA 세개의 dinucleotide 조합으로 계산해야 한다는 것이다.

TIMTOWTDI, perl의 특성답게 이를 해결하는 방법은 상당히 다양한데, pung96님의 글에 언급되지 않은 내용을 추가로 정리해 보고자 한다.

substr을 이용하는 경우 ( DNA 서열은 $seq에 저장되어 있는 경우 )

for( my $i=0; $i< length( $seq ) - 1 ;$i++ ){
$count{ substr($seq,$i,2) }++;
}


정규식의 lookahead 이용하는 경우,

my @di=$seq=~/(?=(\w{2}))/g;
$count{$_}++ for @di;


이걸 한줄로 줄이면,

$count{$_}++ for $seq=~/(?=(\w{2}))/g;


반복을 while로 돌리면,

$count{$1}++ while $seq=~/(?=(\w{2}))/g;


map 에 넣으면,

map{ $count{$_}++ } $seq=~/(?=(\w{2}))/g;

와 같은 방식으로도 문제를 해결할 수 있다. 포스팅의 요지는 lookahead 를 이용한 정규식 사용!!

사족을 좀 덧붙여 보면, 이 문제는 연세대 생명공학과 대학원 이인석 교수의 bioinformatics 수업 과제 문제다. 지난해와 올해 연구소에 연대 대학원 학생분들이 있어, 내게 이 문제에 대한 조언을 구해와 본의 아니게 2년 연속으로 이 문제에 대해 생각해볼 기회가 생겨, 포스팅해 본다.