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년 연속으로 이 문제에 대해 생각해볼 기회가 생겨, 포스팅해 본다.

Tuesday, March 2, 2010

HelloGene :: 한국 최초 개인유전체 정보 분석 서비스

KOBIC 센터장이었던 박종화 박사가 합류하면서 이목을 끌었던 테라젠(Theragen)에서 드디어 한국에선 최초로 개인유전체 분석 서비스를 출시하였다. 서비스 이름은 HelloGene 이며, 웹사이트 ( htttp://hellogene.co.kr/pgp/ )를 통해 서비스 신청을 할 수 있다.


서비스 내용을 살펴보면, 23andME에서 최초로 서비스 했던 SNP 칩 분석을 통한 개인유전체 분석 서비스와 Knome, DecodeME 등의 회사가 제공하고 있는 Whole genome sequencing 분석 서비스 두가지 모두를 서비스 상품으로 내놓고 있다.

가격은 SNP칩 분석 서비스의 경우 1,100,000( 백십만원, 일반형 ), Whole genome sequencing의 경우 150,000,000 (1억 5천만원, 일반형) 으로 23andME의 SNP칩이 $390, Knome의 whole genome sequencing이 $68,500 임을 감안하면 HelloGene의 서비스 가격이 2배 이상으로 비싼 편이다.

그러나 기존의 미국계 개인유전체 회사들의 분석 내용이 서구인에 대한 연구 결과를 바탕으로 한 것으로, 한국인의 유전체 분석에 오류가 상당하다는 단점이 있었기 때문에, HelloGene 서비스의 분석에서 이런 부분을 보완한다면 상대적으로 높은 가격에 의의를 부여할 수 있을 것 같다.

지난 겨울 직접 테라젠(Theragen, Teragen이 아님)에 방문했을 때만 해도 아직 연구소 셋팅이 제대로 되지 않은 상태여서, 서비스는 고사하고 정상적으로 연구 기반을 잡는데만 상당한 시간이 걸릴 것으로 생각했었는데, 벌써 이런 상용 서비스를 개시하다니 상당히 놀랍다.

테라젠의 HelloGene 서비스를 위시하여 한국에도 개인유전체 관련 산업이 시작되었다. 테라젠이 가천의대와 밀접한 연관을 가지고 연구를 하고 있어, 병원의 환자 의료 정보 시스템과의 연계 등에 비전을 가지고 연구를 진행한다면, 세계적으로도 유례없는 개인유전체 기반 의료 서비스를 선보일 수도 있을거라 생각한다. ( 병원의 환자 의료 정보에 대한 접근은 개인 정보 접근 등에 제한이 많은 외국보다 한국이 훨 수월하다고 생각한다.)

아뭏든, 최초의 한국형 개인유전체 분석 서비스인 HelloGene의 선전을 기원한다!!

Monday, March 1, 2010

Jquery이용한 dynamic 페이지 스타일

Javascript 라이브러리인 Jquery를 이용하면, 간단하게 복잡한 Javascript 기능을 구현할 수 있다.
최근에 간단한 웹DB를 만들면서 로딩된 page에 CSS 스타일을 적용하는 기능을 구현하였는데, Jquery( 및 Javascript) 를 이용할 때, 주의해야할 사안에 실수를 저지르는 바람에 한참 삽질을 했는데, 이를 정리해 본다.

먼저 아무런 내용이 없는 html 구조를 아래와 같이 설정하자.
(이 페이지의 html코드에서 html tage (<, >) 가 허용이 안되어, tag 괄호를 <> 대신 () 를 사용하였다. )

(html)
(div id="main")

(/div)
(html)


그다음 Jquery를 이용해서, id=main 부분에 외부 html 파일을 읽어 뿌려주는 부분을 html head부분에 script로 추가한다.

(script)
$(document).ready(function(){
$(#main).load('content.html');
});
(/script)



* 여기서 첫번째 문제, load된 html 내용에 원 html 파일에 적용된 CSS 가 적용될까?
적용된다. 페이지에 설정된 CSS 이기 때문에 load되어 원 페이지의 CSS 규칙 적용을 받는 내용에도 CSS 규칙이 적용된다.

다시 page로 돌아가서, 이번에는 load된 html의 특정 div id 를 가진 부분에 대해 CSS 규칙을 추가한다.

(script)
$(document).ready(function(){
$(#main).load('content.html');
$('#top').addClass('css_top'); //id=top에 CSS 규칙 css_top을 적용한다.
(/script)



* 여기서 두번째 문제, load된 html의 특정 부분에 CSS 규칙이 적용될까?
정답은 조건적으로 그렇다 이다. 문제는 네트워크 지연에 있다. AJAX방식의 모든 구현에서 발생하는 문제로, script에서는 load 이후, css가 추가되는 것 처럼 보이지만, 실제 html이 load되는 시점은 html을 읽어오는 동안의 '지연' 이 발생하므로 css 추가 부분이 적용된 이후가 될 수 있다. 이런 경우엔 css 규칙 적용 부분이 먼저 실행되고 html이 로딩이 되었기 때문에, css 규칙 추가가 이루어 지지 않는다.

실제로는 plain html 파일인 경우, 지연효과가 미미하여, 이 문제가 발생하지 않을 수 있는데, 내가 작업하는 상황에서는 읽어오는 파일이 그 자체로 Mysql 을 긁고 processing 을 하여 조금 시간이 걸리는 php 파일이었기 때문에, 이 문제가 발생하였다.

이런 상황에서 문제없이 순서대로 원하는 기능을 구현하기 위해서는 '콜백' 기능을 이용해야 한다. 즉 각 jquery 라인을 순서대로 실행하도록 조건을 걸어두는 것이다.

콜백 기능 구현은 간단한데, 위의 상황에서 html 파일을 load하고 난 이후, css 규칙을 추가하는 콜백 함수를 구현하면, 원하던 기능을 문제없이 수행할 수 있다.


(script)
$(document).ready(function(){
$(#main).load('content.html', function(){
$('#top').addClass('css_top');
});
});
(/script)

Sunday, February 21, 2010

우리 연구소의 티스푼은 얼마나 빠르게 사라지나?

http://www.bmj.com/cgi/content/full/331/7531/1498?view=long&pmid=16373727

'연구소에서 티스푼은 얼마나 빠르게 사라지나? ' 에 대한 연구 논문이 BMJ(British medical journal) 라는 저널에 2005년에 게제되었었다. 메인스트림의 과학적 질문과는 다분히 거리가 멀어 보이는 이 연구가 Impact factor 가 12나 되는 의학 저널에 실렸다. 의학적으로도 이 연구가 그리 연관성이 있어보이지 않는데...

연구 내용을 정리해 보면,

* 연구 장소 : 140명 정원의 연구소 .

* 연구 내용 : 70개의 티스푼을 순서메겨 이름표를 표시하여, 5개월간 이들의 행방 추적.

* 연구 결과 :
1)80%의 티스푼 ( 70개 중 56개) 가 연구기간 중 사라짐.
2)티스푼의 품질은 티스푼 사라짐 정도와 무관함.
3)사라지는 속도로 고려해 볼 때, 이 정도 규모의 연구소에서는 연간 250개 티스푼이 필요하다고 추정됨.

연구소에서 티스푼은 office material로 필수적인 것이기 때문에, 티스푼의 안정적인 공급을 위해 이런 연구가 의미있다라고 생각해 볼 수 있을까? 의학적인 성과라면, 의학 연구 기관 종사자들이 안정적으로 차를 타마실 수 있는 안정적인 티스푼 공급량을 산출했다라고 할 수 있을까 ? ㅋ

이런 식의 연구가 필요한 분야가 있을 것 같긴 하다. 생활과학 관련 분야? 티스푼 생산 업종 관련 기업의 연구소 등. 이 논문의 footnote를 보면 유사 연구도 많고, citation 된 횟수도 7회 정도로 된 걸 보면, 이런 연구를 전문적으로 하는 사람들이 있을 것 같기도 한데, 확신은 못하겠다.

여튼, 이런 식의 다소 엉뚱한 연구들이 수행되고, 논문으로 publish 될 수 있는 문화적 토양이 튼튼한 사회들이 참 부럽다. 창의적이란건 사실 정말 별게 아니다. 그저 스스로 재밌어 보이는 일련의 path를 따라가면 자연스럽게 남들과 다른 독특한 사고를 할 수 있고, 시도를 하게 된다. 우리 나라에선 이런 창의적인 사고도 결국 '성과' 지표의 일환으로 연결 될 때, 의미있는 것으로 판단되지만, 이러한 엉뚱해 보이는 연구들이 시도조차 될 수 없는 peer pressure가 존재하는한, 그 어떤 과학 부흥 정책도 정말 정책 입안자들이 원하는 '돈되는 성과'로 나타나긴 요원한 일이다.

Thursday, February 18, 2010

Upcoming Perl book


Effective Perl Programming 2판이 2010년 5월 17일 출간 예정이라고 한다.
Amazon에 올라온 책 설명을 요약해 보면 1판에 비하여 CPAN에 관한 9개 챕터 추가, 다양한 application과 UI 기법들, 연습문제 및 풀이에 대한 업데이트가 이루어졌다고 한다.

Effective Perl Programming 1판을 보지 않은 상태에서, 연습문제 및 풀이가 들어가 있는 것으로 보아, perl learner를 위한 책이 아닌가 생각했는데, 1판의 독자리뷰를 보니, 완전한 초심자들을 위한 책은 아니라고 한다. 일례로 1992년 부터 perl 을 쓰고, community college에서 강의까지 한 사람이 이 책을 읽고 다양한 tip & technique 을 습득할 수 있었다고 한다.

이러한 예로 ($a,$b)[$a<$b] 같은 구문을 들었는데, 이 구문은 두 변수 중 큰 값을 반환한다고 한다.

my $a=5;
my $b=10;
my $c=($a,$b)[$a<$b];


에서 $c 를 찍어보면 값이 10이 나온다. 이 구문은 처음 봤는데, 이 책에 이런식의 다양한 기법들이 등장한다고 하니, 책이 나오면 한번 사봐야겠다는 생각이 든다.

Thursday, February 11, 2010

Dynamic modularity for disease prediction

2009년 2월에 출간된 Dynamic modularity in protein interaction networks predicts breast cancer outcome ( nature biotech, 27, 199 ) 에서 'Dynamic modularity' 라는 개념을 토대로 PPI network 을 분석하고, breast cancer 환자 survival data를 이용 환자 survival을 prediction 한 연구 내용을 소개하고 있다.

기본적으로 Dynamic modularity라는 개념은 이미 이전에 많이 언급되었던 내용인데, network의 연결이 상황에 따라 느슨하거나 타이트하게 변화한다는 것이 핵심이 된다.

논문에서는 우선 분석 대상이 되는 유전자를 network의 허브 유전자로 한정한다. 이렇게 허브 유전자로 한정한 원인은 두가지 정도 생각해 볼 수 있는데, 첫째, network 의 허브들 간의 연결에 주목하여 중요한 biological path 를 커버하여 분석할 수 있고, 동시에 주요하지 않은 유전자들을 모두 분석에 사용하여 과다하게 복잡한 양의 결과 분석을 통해 올 수 있는 노이즈를 사전에 제거할 수 있다는 의미, 두번째로는 분석 계산양의 감소 효과다. 논문에서는 허브 유전자간 co-expression 계산을 통해 네트워크의 dynamic modularity 를 잡아내는데, 네트웍에 들어있는 모든 유전자들을 사용한 pair-wise co-expression 계산량은 node 개수가 증가함에 따라 기하급수적으로 늘어나 계산 시간을 엄청나게 늘린다. 40,000개 노드 정도가 되면 array 숫자에 따라 틀리긴 하겠으나 경험상 일주일 이상 하나의 컴퓨터가 온전하게 소요되어야 할 정도 ( 포스팅 참조 ).

한정된 hub 유전자들을 두고, tissue-specific human gene expression dataset을 이용해 1)intramodular hub 와 2)intermodular hub 로 허브 유전자들을 구분한다. 이때, intramodular hub 는 tissue non-specific하게 높은 co-expression 정도를 보여주는 유전자들이고, intermodular는 tissue에 따른 co-expression 이 변화량이 들쭉날쭉한 유전자들이 된다.

논문에서는 이렇게 구분된 두개 클래스의 허브 유전자들에 대한 network topology, functional analysis 등을 통해 intra-,inter-modular hub 유전자들의 특성을 비교 분석한다.

마지막으로 breast cancer patient cohort data를 이용해 breast cancer patient 에 specific하게 강하거나 약한 co-expression 을 보이는 허브 유전자 쌍들을 feature로 이용해 prediction 하고 그 결과를 리포팅하고 있는데, 결과는 현재 상업적으로 이용되는 breast cancer diagnostics 기법에 비해 6~23% 높은 정확도를 보인다.

Sunday, January 31, 2010

Counsyl :: 개인 유전체 기반 기업의 진화

뉴욕타임즈 1월 29일자 온라인판에 Counsyl 이란 또하나의 개인 유전체 기반 기업에 대한 기사가 실렸다. ( http://www.nytimes.com/2010/01/29/business/29gene.html?pagewanted=1&ref=research ) Counsly의 기술은 23andME와 무척 닮았다. 킷에 침을 뱉아 회사로 보내면 회사에서 침에 들어있는 DNA를 SNP chip으로 찍어 개개인의 SNP 를 분석하여, 다양한 분석 서비스를 제공하는 방식이 2008년 TIME지 선정 올해의 기술로 선정되게 하였던 23andME의 진단킷이다. Counsyl 도 이와 같은 방식을 사용한다. 집에서 서비스를 신청하면 진단킷이 배송되고, 진단킷에 침을 뱉아 회사로 우송하면 회사에서 SNP chip을 이용해 개인의 유전체를 분석한다.



여기까지는 23andME의 서비스와 다를 것이 전혀 없다. Counsyl 의 핵심은 그 이후다. 바로 "어떤 분석 정보를 제공"하느냐가 23andME와 차별화 된다. 23andME가 유전체 정보 분석 당사자의 다양한 유전체 분석 정보를 제공하는데 반하여, Counsyl은 유전체 정보 분석 제공자의 2세에 대한 유전 질병을 진단해준다.

단 한번의 SNP chip 분석을 통해 내 2세가 100여개 이상의 다양한 유전질병에 노출될 가능성을 조기 진단할 수 있다. 그것도 단돈 349$에. 부모는 2명이니 698$면 정확하게 100여개의 유전질병에 대한 진단을 임신 이전에 진단해 볼 수 있다. 현재 각각의 유전질병에 대한 진단을 기존의 진단 방법으로 할 경우 250,000$ 정도가 소요된다고 하니, 일반인의 관점에선 이것이 정말 획기적인 서비스라 생각할 수도 있을것 같다. 실제로 뉴욕타임즈 기사의 댓글에 이러한 류의 댓글들이 달려있다.

Genetics연구자들, Personal genomics에 관심을 가지고 연구하고 있는 과학자들의 관점에서 보면 이런 테스트는 전혀 새롭지도 않고 센세이셔널하지도 않을 것이다. SNP chip을 찍어서 그동안 published된 GWAS 관련 정보를 그대로 mapping만 하면 끝나는 정말 심플한 idea를 기반으로한 서비스일 뿐이니까. 물론 Counsly의 서비스를 실용화 하면서는 genetic counsler 와 의사들이 서비스 이후의 전문가적 분석과 사후 처리 서비스가 뒤따를 것이긴 하지만, 핵심이 되는 기술은 전혀 새로울 것이 없는 간단한 아이디어에 기반하고 있는 것이 사실이다.

그러나 Counsyl의 전략은 명쾌하고 강력하다. 앞으로의 개인유전체 사업에서는 이러한 관점의 차이로 어떻게 서비스를 잘 포장하느냐가 기업의 성패를 결정하게 될 것이라 생각한다. 23andME의 분석기술과 동일한 Counsyl의 서비스가 '2세의 유전질병 진단' 이란 이름으로 옷을 바꿔 입고 나오면, 이건 일반인에겐 완전히 다른 기술을 가진 서비스로 비춰진다. 그리고 그 서비스 내용은 너무나 매력적이고, 너무나 적절하게 target 고객층을 공략한다. 2세를 가질 계획이 있는 모든 부부들이 왜 이 값싸고 정확하고, 유전 질병을 가진 2세를 조기진단하거나 치료할 수 있게 해주는 서비스를 우리돈으로 단돈 40만원(부부 80만원)에 받아보지 않겠나?

이와 비교하면 같은 분석 기술을 가지고 시장에 먼저 상륙한 23andME의 캐치프레이즈는 너무 두리뭉실해 보이고, target 고객층이 명확하지 않다. " 건강, 질병 그리고 가계 분석을 위한 유전 진단 " 이라는 캐치프레이즈를 보고 40만원을 들여 꼭 해야 겠다는 생각이 드는 사람은 그렇게 많지 않을 것이다.

23andME 서비스는 개인 유전체 테스트 불가방침으로 몇몇개 주에서는 서비스 허가가 떨어지지 않은 것으로 알고 있다( 캘리포니아와 뉴욕주에서 의사의 허가 하에 서비스 받을 수 있도록 제한하고 있다). 이에 반해 Counsyl은 명확한 의학적 의의( 2세 유전질병 진단) 와 그 경제적 이점 ( 기존 테스트의 1/100 가격으로 진단 가능) 을 잘 어필하여, 의료보험 지정 테스트로도 승인을 받아, 탄탄한 사업망을 구축하였다.

앞으로 유전체 기반 DTC( Direct To Consumer ) 서비스 산업은 Counsyl 과 같이 명확한 비전과 고객 타겟을 가지고 진출하는 회사들이 주목받고 성공적인 비즈니스를 할 수 있을 것으로 생각된다. 유전체 기반 기술의 기반이 되는 기술은 기본적으론 매우 단순하고, 또 모든 회사들이 비슷한 기술에 기반할 수밖에 없다. ( SNP chip, 향후엔 whole genome sequence ) 이런 동일한 platform위에서 어떤 방식으로 서비스를 제공할 것인지가 비즈니스의 성패를 가름할 것이다. 이는 마치 동일한 PC 위에 어떤 소프트웨어를 구축하여 올릴 것인지가 관건이 된 Computer 산업의 역사를 반복하는 듯 하다. 컴퓨터 산업의 최강자로 남은 기업은 Microsoft 와 Google 이고, 이 두 기업 모두 하드웨어 생산 업체가 아닌, 소프트웨어 기반 회사다. 앞으로 PG ( Persoanl Genome ) 산업사가 이런 Computer 산업의 역사를 반복할지 두고볼 일이다.

마지막으로 Counsyl의 CTO인 Balaji Srinivasan의 말을 덧붙여 본다.

"The goal is not to maximize revenue but to bring the benefits to humanity"
"Nothing is more relevant than making sure your child doesn’t die from a preventable disease"

개인유전체 기반 회사라면 이런 인류애와 사명감, 세상을 좀 더 행복하고, 건강하게 만들려는 의지가 기본이 되어야 하지 않을까

Tuesday, January 19, 2010

Median Rank Score ( MRS ) for cross-platform microarray classification

Patrick Warnat의 논문( BMC bioinformatics, 6, 265 ) 을 읽던 중, Median Rank Score 을 이용한 cross-platform microarray data integration 방법이 있어 정리해 본다.

[Procedure]
  1. 서로 다른 Microarray dataset 두개를 통합하는 경우, n개 array 로 이루어진 datasetA 와 m개 array로 이루어진 datasetB 가 있다고 가정하고, 먼저 둘 중 하나의 dataset을 reference dataset으로 정한다.
  2. Reference dataset의 각 유전자( probeset) 에 대해 median expression value 를 구한다
  3. 유전자에 대한 Median expression value vector를 오름차순으로 sort
  4. Non-reference dataset의 각 array를 expression value를 기준으로 오름차순으로 sort
  5. Sort된 non-reference dataset의 array 의 각 유전자의 expression value를 같은 순위의 reference dataset의 median expression value vector의 값으로 대치한다.

Procedure를 보면 quantile normalization 방법의 기본적인 아이디어와 유사하다는 것을 알 수 있는데, 자연스럽게 MRS 를 이용한 integration 결과도 quantile normalization과 유사하게 서로 다른 range의 expression value를 공통된 range의 expression value로 normalization 하게 된다.

Wednesday, January 13, 2010

생명정보학( Bioinformatics, Computational biology) 선도 연구기관 랭킹

1000 genome project ( 1000명의 genome을 sequencing 하는 HGP 이후의 가장 큰 국제 생물학 연구 컨소시움 ) 에 참여하는 연구 그룹 중, 실험 부분을 제외한 순수 data analysis 참여자들의 숫자를 counting 하고 이 순서로 생명정보학(Bioinformatics, Computational biology) 대학/연구그룹 랭킹을 매겨봤다.

HGP, 1000 genome project 를 리딩하는 sanger 연구소가 1위, MIT와 하바드의 broad institute이 2위로 bioinformaitcs 분야를 이끌고 있는걸 확인할 수 있다.

미국 탑 대학들 중 칼텍이나 스탠포드는 분석 참여자 0명과 1명으로 이 순위 최하위권에 랭크되어 있다. 시퀀싱 프로젝트인 만큼 업계 리더들인 Applied biosystems 와 Illumina 가 10위 12위를 마크하고 있다. 또 아시아권에선 유일하게 Beijing Genome Institute이 미국의 대표적인 Bioinformatics 기관인 NCBI, Illumina와 공동으로 12위를 마크하고 있다. 유럽의 연구기관들은 1위를 차지한 Sanger institute, 5위의 Oxford, 7위 EBI, 17위의 MPI ( Max Planck Institute ) 이 상위권에 랭크되었다.

향후, Personalized genomics 가 생물학 연구의 핵심화두이자, 바이오 산업 중흥의 열쇠를 쥐고 있다는 것을 생각하면, 앞으로 박사과정 및 포닥을 위한 연구기관 선정을 고려하고 있는 경우, 이 리스트에 포함된 연구기관들과 연구자들을 적극 고려해 봄직 하다고 생각한다.

#### 1,000 Genome project, Data analysis 참여 연구자 숫자에 따른 생명정보학 연구기관 랭킹 ####
1. Sanger Institute 30
2. Broad Institute 26
3. Yale University 14
4. Cornell University 13
5. Oxford University 11
6. Baylor College of Medicine 10
6. European Bioinformatics Institute 10
6. Washington University in St. Louis 10
9. University of Chicago 9
10. Applied Biosystems 7
10. University of Michigan 7
12. Illumina 6
12. Beijing Genomics Institute, Shenzhen 6
12. National Center for Biotechnology Information 6
15. Boston College 5
15. University of California, Santa Cruz 5
17. Cold Spring Harbor Laboratory 4
17. University of Washington 4
17. Max Planck Institute for Molecular Genetics 4
20. Roche Applied Science 3
20. Louisiana State University 3
22. University of Utah 2
22. Brigham and Women's Hospital / Broad / Harvard 2
22. University of Auckland 2
22. National Human Genome Research Institute 2
22. Translational Genomic Research Institute 2
22. University of California, San Diego 2