Monday, December 7, 2009

유전자 발현 정보 이용한 Pathway based classification

Microarray gene expression data를 이용한 disease classifier 연구는 microarray 연구 초창기 부터 많은 연구자들이 연구해왔던 topic이다. 최근에는 기존의 gene based classifier 에서 탈피, pathway based classifier 로 진화하여 gene based 방법에 비해 좀 더 견고하고 정확도 높은 classifier 구축이 가능해졌다.

이 분야 선도 그룹은 UCSD의 Trey Ideker 그룹으로 KAIST의 이도헌 교수 연구실과 공동 연구를 통해 최근 2편의 pathway based classifier 논문을 출판하였다. ( Mole. Syst. Biol. , 3, 140 , Plos Comput. Biol. , 4, e1000217 )

기본적으로 이러한 Pathway 기반 disease classifier 연구의 정확도가 상대적으로 높은 이유는 single gene 레벨의 높은 발현 variation 이 pathway level 의 발현도로 summarize 되면서 상대적으로 발현의 variation이 낮아지기 때문인 것으로 판단된다.

예를 들어 Pathway A의 유전자 5개에서의 발현도가 각각
a1=10,a2=15,a3=30,a4=20,a5=50
이라 한다면 이 Pathway A의 평균 발현도는 25가 된다.

다른 실험에서 이 pathway A의 유전자 5개의 발현도가
a1=20,a2=30,a3=50,a4=30,a5=10
이라 한다면 이 실험 환경에서 pathway A의 평균 발현도는 28로 이전의 실험환경에서 얻어진 pathway 평균 발현도와 유사한 값을 나타내지만, 각각의 유전자 발현의 차이를 계산하면,
발현도 95( Euclidian distance )의 차이를 나타낸다.

오늘 Plos ONE 에 Pathway 기반 classifier 의 정확도를 향상시킨 논문이 출판되었다. ( Plos ONE, 4, e8161 ) 이 논문이 개선한 기존의 Pathway 기반 모델의 문제점은 Pathway 레벨의 발현도를 계산할 때, 하나의 Pathway에 속한 모든 유전자들의 발현도를 평균을 내어, Pathway에 속한 특정 유전자와 특정 phenotype 과의 관계를 정확히 반영하지 못한다는 점이다.

어떤 유전자는 특정 phenotype과 positive correlation 관계를, 어떤 유전자는 negative correlation 관계를 가질 수 있는데 Pathway 레벨로 모든 유전자들의 발현도가 평균되면
이러한 개개의 유전자와 phenotype의 관계가 사라져버리고, 전체 pathway 발현과
phenotype과의 관계만이 존재하게 된다. 물론 이렇게 되면서 개개의 유전자들의 발현 variation이 낮아져 상대적으로 안정적이고 재현도 높은 pathway 레벨의 feature가 생성되어 유전자 기반 모델보다 우수한 classification 정확도를 높이게 된 결정적인 원인이기도 하지만 말이다.

논문에서는 이런 문제점을 해결하고자 Pathway level의 발현도로 개개의 유전자 발현도를 summarize 할 때, 각 phenotype 그룹의 유전자 분포를 이용하여 특정 유전자의 서로 다른 두 phenotype 간의 PDF ( Probability Density Function ) 의 차이를 Log ratio 로 계산하여 각 유전자의 두 phenotype 간 발현도의 상대적 분포의 차를 구하여, 전체 pathway 의 phenotype discrimination score 를 구한다. Phenotype discrimination score 의 순위로 top feature 를 선정하고, 이를 바탕으로 phenotype classification 을 수행하게 되는데, 이 과정은 여타의 방법과 큰 차이가 없다.

여타의 Pathway classifier 와 비교하면 새로운 pathway scoring 방법이 우수한 성능을 보이는데, 정확도의 향상은 모든 test에서 5% 이하로 미미하긴 하나, 모든 test 에서 기존의 모든 방법론보다 우수한 결과를 나타내었다는 것은 유전자 context 기반 pathway scoring 이 기존의 pathway averaging 에 비해 pathway 기반 classifier 의 feature selection 방법으로 우수하다는 것을 보여준다 할 수 있다.

Sunday, December 6, 2009

Cross-ID mapping 문제 해결? BioGSP

Web address : http://biogps.gnf.org/

Bioinformatics 연구에서 다양한 소스의 데이터를 통합해야 하는 경우가
빈번하다. 유전자 이름만 해도 NCBI 내에서만 Gene ID, Entrez ID, Genbank ID
등등 다양하고, 기관 마다 차이가 존재하기 때문에, 이러한 다양한 기관의
ID 들 간의 cross-mapping 은 필수적이다.

그러나 매번 같은 소소의 정보를 이용하지 않는 경우가 많다보니, 매번 서로다른
기관들의 ID 매핑이 어려운 과정은 아니지만 반복되어 짜증을 유발하는 경우가
많다.



이번에 Genome Biology 에 소개된 ( http://genomebiology.com/2009/10/11/R130 )
BioGPS 는 이러한 cross-mapping 문제 해결을 위한 web-server 다.
BioGPS 에서 커버하는 ID 소스는

* Gene symbol ( from various institution )
* GO
* Interpro
* Affymetrix ID

등이고, primary ID mapping 파일을 다운로드 받을 수 있게 제공하고 있다.

Tuesday, October 27, 2009

DEG selection 방법 어떤 걸 써야 할까? [ Comparison among nonparametric DEG selection methods ]

초창기 Microarray 연구에서 가장 큰 관심사 중 하나는 어떻게 하면 robust한 DEG ( Differentially Expressed Gene ) 을 찾아낼 수 있는가 였다.

가장 먼저 시도되었던 기본적인 방법들이 fold change 비교와 t-test 였는데, 이는 지금까지도 microarray data 분석의 가장 기본적인 방법으로 널리 이용되고 있다. 또한 MAQC( MicroArray Quality Control) 그룹의 보고에 따르면, 이 두가지 방법을 느슨한 stringency 를 주어 DEG를 뽑을 때, cross-platform, cross-laboratory microarray data에서 가장 재연성있고 안정정으로 DEG 셋을 얻을 수 있다고 하니, 가장 기본적이면서 또한 가장 중요한 DEG selection 방법이라고 할 수 있다.

이렇듯 가장 기본적인 DEG selection 방법인 t-test에도 약점이 있었으니, 그것은 t-test가 normal distribution을 가정한 parametric test라는 것이다. microarray data는 normal distribution을 따르지 않는 경우가 대부분이라고 할 수 있다. 자연스럽게 t-test의 이런 약점을 보완할 수 있는 방법들이 DEG selection 방법으로 적용되었는데, 대표적으로 non-parametric t-test와 rank sum test 를 들 수 있다.

오늘 이 posting 을 맘먹게 한 논문 ,Nonparametric identification methods for differentially expressed genes, bioinformatics, 18, 1454, 은 현재 Princeton 대학에서 교수로 재직중인 Olga G. Troyanskaya 가 Stanford 에서 박사과정 중 출판한 논문으로, 앞서 언급한 microarray data의 DEG selection methods 들 중, nonparametric method 3가지를 비교 분석한 논문이다.

논문에서 비교 분석 대상이 된 Non-parametric method 3가지는 non-parametric t-test, Wilcoxon rank sum test, Ideal discriminator method 되겠다. 이 3가지 방법을 simulated data 셋에 적용하여 TPR, FPR 을 측정하여 상대적인 비교우위에 대한 분석을 논하고 있는데, 결론부터 얘기하자면, Rank sum test 를 쓰는 것이 다른 방법들에 비해 stringent 한 결과를 주고, multiple permutation 을 통한 significance 를 측정할 필요가 없기 때문에 일반적인 상황에서는 rank sum test를 쓰는 것이 이 세가지 방법 중 가장 computationally efficient 하고, 상대적으로 보수적이지만 정확하게 DEG set 을 뽑아낼 수 있다는 것. 덧붙여 p-value 0.1 정도에서 sensitivity와 specificity 의 trade-off 에서 가장 만족스러운 결과를 얻을 수 있었다는 결과가 리포팅 되어 있다.

차후에 SAM,GSEA 등을 비롯한 다양한 DEG selection 방법이 소개되었으나, 기본적인 single gene based DEG selection analysis 는 기본적으로 필요한 과정이니, microarray 분석을 할 때 기 이를 염두에 두고 nonparametric test 를 적용해보는 것이 좋을 듯 하다.

이 논문이 출판되고 4년 후, MAQC 그룹이 출판한 Nature 논문 에 따르면 느슨한 t-test p-value 0.1 와 fold change 1.2~1.5 정도를 함께 사용하여 DEG set 을 선정하였을 때, 가장 만족스러운 결과를 얻을 수 있었다고 보고하고 있으니, 이 결과도 참고해둘 만 하다.

* Non-parametric t-test : normal distribution 을 가정한 상태로 p-value를 구하지 않고, permutation test에 의해 t-test statistics 의 distribution 을 만들고 이와 원 t-test statistics 값을 비교하여 p-value significance 를 구한다.

Saturday, June 20, 2009

Random permutation generator

Bioinformatics 분야에서 널리 쓰이는 통계적 테스트 방법으로 Permutation test가 있다.

샘플 숫자가 통계적 테스트를 할 만큼 크지 않은 경우, 주어진 샘플을 permutation 하여
인공적으로 샘플 숫자를 늘려, 전체 population 을 통계적 테스트가 가능한 크기만큼 키운 후,
원래의 주어진 샘플에 대한 수치 ( e.g. mean, standard deviation , etc ) 가 전체 셋과 비교하여
얼마나 유의한지 ( significant ) 테스트 하는 방식이다.

permutation 할 수 있는 개수는 원래의 샘플의 개수에 따라 이미 정해져 있지만, 샘플 개수가
10개만 넘어가도 가능한 전체 숫자 만큼의 permutation set을 모두 고려하기 힘들다. 따라서
permutation set의 generation은 random 하게 통계 테스트가 가능할 만큼만 하면 충분하다.
보통 그 숫자는 1000개, 10,000 개 정도다.

최근 이 Permutation test 를 코딩해야할 일이 있어 코딩하던 중, CPAN의 random permutation
generator를 써봤는데, 이 모듈 사용이 직관적이지 않고, 쓸데없는 정보를 덧붙여 클래스 형태로 데이터를 format해야 해서 쓰기가 번거롭다.

그래서 random permutation 모듈을 하나 만들어봤다. 그냥 간단한 서브루틴 하나다.



sub rand_permutation{
my @array=@_;
my @permuted_array;

while( @array ){
my $rand_pos=int(rand(@array));
push @permuted_array, $array[$rand_pos];
delete $array[$rand_pos];
@array=grep /\w/, @array;
}
return @permuted_array;

}

1,2,3,4,5 로 구성된 어레이를 넘기면 서브루틴이 random 하게 이 순서를 뒤섞어 준다.
그래서 결과로는 5,1,3,2,4 와 같이 random하게 permutation 된 셋을 리턴한다.

Thursday, April 9, 2009

Dealing with gzip file in Perl

There are several ways to process gzip compressed files in Perl.
I tried to show some of them according to the chronological order
that I experienced.


Year 2005

Before I joined Jong Park's lab, I have no chance to deal with gzip compressed file processing. But the situation changed. The first data set in gzip format is PDB data files, which contain the information for 3-D structure of protein.

I solve the problem just by 'uncompressed' the gzip files !!
Simple and easy, hur?


Year 2006


One day, my lab member let me know there's linux command 'zcat', which 'cat' the gzip compressed file. So I just used that command in my Perl script.


my @file=`zcat xx.gz`;
while( @file ){ .. }



Year 2007

I was not CPAN lover before 2007. So I didn't tried to find any solution from CPAN. But after I participated 'Agile programming education', I changed my mind and started to love CPAN as I used it.

The module I found at that time for this problem is 'PerlIO::gzip'.



use PerilIO::gzip;
open $fh,'<:gzip',"xx.gz";
while(<$fh>){.. }



Year 2009


Recently, I set up my new computer with Ubuntu 8.04 and 8.10 version. But there was a problem to install PerlIO::gzip module. It seemed that there's conflict between OS set-up and module's basic configuration. So I tried to find if there's another module to process gzip files in CPAN.

And there is as TMTOWTDI !



use IO::Zlib;
my $fh=IO::Zlib->new("xx.gz",'r');
while(<$fh>){ .. }

Friday, March 27, 2009

Symbolic reference 사용시 유의점


$x=10;
$sym='x';
$$sym=20;

print "$x\n";



위의 코드를 실행하면 $x 값으로 20이 출력되는 것을 확인할 수 있다.
Symbolic reference 가 적용되어 $sym = 'x'에 대해
$ { $sym } = $ { x} = $x 로 해석되어
$$sym=20 은 $x=20과 같이 해석되기 때문이다.

그럼 아래 코드는 어떨까?


my $x=10;
my $sym='x';
$$sym=20;

print "$x\n";


첫번째 코드의 결과와 같은 값이 출력될까?
정답은 NO!
이 코드는 그대로 $x에 대해 첫 라인의 정의대로 10이 출력된다.

해답은 'my' 과 symbolic reference의 동작 원리에 담겨있다.
my로 선언된 lexical 변수는 symbol table에 저장되지 않는다.
symbolic reference는 오직 lexical 변수를 제외한 package 변수에만 적용된다.


따라서 두번째 코드에서 변수 선언을 my 대신 local이나 our로 해주면 첫번째 코드와 같은 결과를 얻을 수 있다.


my $x=10;
$sym='x';
$$sym=20;

prnt "$x\n";


이 코드는 어떨까?
$$sym = ${x}= $x 로 해석되어 최종적으로 symbolic reference
의 적용을 받는 변수는 $x다. 그런데 $x가 my 로 선언되어 있어
symbol table에 저장되어 있지 않다.

따라서 $$sym=20 은 lexical 영역의 $x에 영향을 주지 못하고
이 코드는 결과적으로 $x=10 을 출력하게 된다.

그렇다면 $$sym=20 는 완전히 아무런 의미도 없는 코드일까?

그렇지 않다. $$sym 은 원래의 역할 그대로의 역할을 수행했다.
즉, symbol table에 존재하는 package global $x 에 20을
저장한 것이다.

이를 확인하기 위해서는 package 변수 $x를 출력해 보면 된다.


my $x=10;
$sym='x';
$$sym=20;

print "Lexical 변수 : $x \n"; # 10을 출력
print "Package 변수 : $::x \n "; # 20을 출력

Wednesday, March 18, 2009

BioTool::NCBIfetch

Nowadays, I've tried to build my own perl pacakges selections on routine bioinformatics tasks.
Althrough BioPerl is already out there, it usually doesn't have modules for my own purpose.
For example, a package for learning PAML packages from A to Z, not requiring specific formatting to run the BioPerl. Well, so I started to build my own perl packages.

I named the base package name 'BioTool' and added packages whenever I confronted any situation
that I found some tasks might be used repeatly and routinely.

Recenlty, I made 'BioTool::NCBIfetch' package, which can extract sequences and all the related references db information including Gene symbol, Gene description, Chromosome location, Ensembl, Unigene, Uniprot, KEGG and GO for a given gene query.

Since the package fetches the information from result of NCBI eutils query, which results with up-to-date information, the analysis result for a given gene is up-to-dated. So users don't need to worried about whether the reference data is out-dated when they use a program which works the same taks based on localized data. In short, users could free themselves from updating all related indenpent databases day to day.

I'll show some example usage of this package


use BioTool::NCBIfetch;
my $ncbi=BioTool::NCBIfetch->new;
$fetch->set_query(gene,780,xml); # Input : search DB, ID(geneID, gID), result type, result format type)

$fetch->get_result;
my $symbol=$fetch->get_symbol;
my @TreEMBL=$fetch->get_uniprotTreEMBL;

print "$symbol\t@TreEMBL\n";



This package might be very helpful for ones who want to cross mapping between major biology databases based on NCBI gene identifier. I actually made it for cross-mapping genes in GEO platform since GEO platform annotation is frequently incomplete and inaccurate.

If anyone interests in this pacakge and want to use, request!

Tuesday, March 10, 2009

Economic crisis & public data deposition in GEO

Does stunning global economic crisis starting from the late 2007 influence each gorvernment to cut down the budget for scientific research? If you're an independent researcher, you've already experienced how serious it is. If you are not, you don't know the actual influence of it on science research.

Starting with just interest, I tried to answer to above question by analyze the trend of data deposition to the largest public gene expression database, GEO. Since the number of gene expression data deposition has been increasing from the creation of GEO, I hypothesize that the data deposition might be not continuously increasing in year 2008 if the global economic crisis was really a matter for cutting down the budget for the science research.




Look at the table above! The number of data deposition to GEO in 2008 is slightly decreased as I expected. The number of data deposition has continuously increased from 2001 through 2007 but this trend stop in the year 2008.



This trend is repeately found for the top 5 countries of budget for science. By the way, USA is really a huge player in the basic science. Look at the size of data! US itself deposited several fold more data than the sum of all the data the other four countries deposited. Anyhow, back to the main point, I think this trend represent the effect of economic crisis on shirinking science budget in each gorvernment.




Except the USA from the chart, another interesting point shows up. That's UK. Deposition of data from UK was decreased from 2007 not 2008. Their contribution to public data was peak in 2006 but the number is less than a half in 2007. What happened in UK at that time? I don't have any evidence on this matter. Just I expect that UK changed their research plan for biology using microarray since microarray generally lack reproducibility and consistency. Or there might be some big scientific project to producing microarray data in 2006 only.

Among the 5 countries I mentioned here, Germany showed least decreasing nubmer of deposited
data. They deposited only 21 data set less compared to previous year ( 14% ) while the other four countries decreased that number around 50%.

The small contributing countries with less than 50 deposition in each year, some countries seem that they are not affected by economic crisis. South Korea is one of the exam. Their deposition increased from 16 in 2007 to 19 in 2008. As I'm researching in Korea, I think it's not because Korean gorvernment did not cut budget for science but most of researchers who producing microarray data don't know GEO at all or don't consider to deposit their data. Why? most of them are just wet-lab biologist. So they usually don't use public data for their own resarch. Even when they want to contribute, depositing data to GEO needs some computational skills for easy or automatic depositing. Without any programming skill, the process to deposit the data is very tedious and boring. So three more data sets of deposited data does not show the actual trend of Korean science budget related to economic crisis. I think the minor contributing countries might have similar situation.

That's all I want to say today! In one sentence, global economic crisis seems actually to force each gorvenment to cut their science budget.

Sunday, February 15, 2009

String split problem

스트링에 아래와 같은 문자열이 저장되어 있다고 할 때,

my $string=q/ man , girl, woman, boy, "man,woman", "girl,boy"/ ;

콤마(,) 를 기준으로 각 단어를 나눌려면 어떻게 해야할까?
이때, 따옴표(")로 묶여있는 단어 사이의 콤마는 무시 한다.

나누어
@result=( 'man', 'girl', 'woman', 'boy', 'man,woman', 'girl,boy' )
6개의 element로 저장하는 것이 최종 목표.

내 답은 아래와 같다. 더 깔끔하고, 간결한 코드가 있겠지?

my @result;
map { /"/?push @result,$_:push @result, split /,/,$_ } split /(".*?")/, $string;

Wednesday, February 4, 2009

Lookaround in PERL

'Lookaround' , a regular expression in perl, could be used as anchor in regular expression. The anchor which I mean here is a point in the string from which the perl scan for a given regular expression.

Examples of anchor in perl.



'great job boy'=~/^g/; # '^' is used to anchor
'great job boy'=~/y$/; # '$' is used to anchor


Alike the anchors above exam code, lookaround could be used similary as below



'great job boy'=~/(?=job).*boy/; # (?=pattern) is a form of positive lookaround
'great job boy'=~/(?!job).*boy/; # ( ?!pattern) is a form of negative lookaround


So how the above example lookaroud code works?

(?=job) anchors the position of match at 'j' of job.

In other words, perl scan the whole string 'great job boy' first, but after lookaround matches, perl start to search for remaining 'job boy'.

Then regular expression below matches or not?



'great job boy'=~/(?=job)boy/ ;


The answer is NO!!!

As I mentioned above, lookaround is working as anchor like '^'.
So (?=job) anchors at the position of j of 'job'. The first character
that could be matched after anchoring is j of 'job, not b of 'boy' which
is following job. Therefore, it doesn't match!

To make 'boy' match after anchoring (?=job), it need to be as below



'great job boy'=~/(?=job).*boy/;


What about negative lookaround? It's more complicated to understand.

Guess what happens below.



'YouAre'=~/(?!You)Are/;
Does it matches? It matches! Why it matches?
'You' comes before 'Are'. To regular expression success,
string before 'Are' should not be 'You'.

Then what on earth (?!You) anchor?
It should anchor where there's no 'You'.
Then it may be position 'o' or 'u' which does not match to 'You'.

Yes it is.
Then what is before 'Are' , which doesn't match to 'You'?
'u' can be! Therfore the above regular expression including negative lookaround success.


We can verify where negative lookaround anchors with some exams below


print "$`\t$'\n" if 'YouAre'=~/(?!You)/;
# Y ouAre

print "$`\t$'\n" if 'YouAre'=~/(?!You)e/;
# YouAr e

'YouAre'=~/You(?!Are)/;
# it doesn't match

Microsoft scripting game 2009

aero님의 블로그를 통해 지난해 microsoft에서 scripting game을
계최하고 있었다는 걸 알게 되었었다. 당시 이를 접한 시점에서 이미
Competetion이 끝나있어 아쉬워서, 다음 대회를 기다리고 있었는데
2009년에는 매년 2월 계최되던 winter game 에서 Summer game으로
변경되어 계최될 예정이라고 한다.

지난해 출제된 문제의 경우 굉장히 평이한 편이었는데, 올해는 좀 더 advance된
문제들이 출제될지 궁금하다. 올핸 꼭 참가하고 끝까지 문제를 풀어서
MS에서 기념품 한번 받아봐야겠다

Microsoft webpage for scripters: http://www.microsoft.com/technet/scriptcenter/default.mspx

Friday, January 16, 2009

경제력과 행복의 상관관계

" 국민총행복은 국민총생산보다 더 중요하다."

지그메 상예 왕추크 부탄 국왕이 했던 말이라고 한다.

석유 개발로 부국이 된 국가 브루나이는 이 부를 국민들의 행복도 향상을 위해 쏟아부었다고 한다. 전국민을 대상으로 마치 공무원에게 월급 주듯 월급을 주고, 언제든지 들어와서 살 수 있는 초현대식 집을 지어주고, 외부가 금으로 도금된 7성 호텔을 짓고, 저렴한 가격에 이용할 수 있는 항공사를 운영한다. 이러한 국가의 노력이 브루나이 국민들의 행복도를 이전에 비해 높여주었을까?


잘 사는 나라일수록 행복할까? 만약 그렇다면, 행복하기 위해선 얼마나 더 부강해져야 할까? 풍요롭게 잘 사는 나라도 불행한 국가일 수 있고, 반대로 경제적으로 힘든 국가라도 행복한 국가인 경우도 있다고 하던데, 과연 국가의 경제력과 행복도는 구체적으로 어떤 상관관계를 가지고 있을까?

이에 대한 궁금증을 구체적으로 해소해 보고자, 국가 행복도와 국가의 경제력에 대한 객관적인 데이터를 이용해 분석해 보았다. 국가 행복도는 World Database of Happiness ( http://worlddatabaseofhappiness.eur.nl/ )의 국가 평균 행복도 자료를 이용하였고, 국가의 경제력은 국가 전체의 경제력 보다는 한 국가에 속한 개인의 경제력이 개인의 행복에 실질적인 영향을 준다고 생각하여 개인당 GNI 지수 (GNI per capia, http://web.worldbank.org ) 를 이용하였다. ( 국가 평균 행복도는 2000년 부터 2008년 까지 해당 국가에서 시행된 행복도 조사의 평균 행복도이고, 개인당 GNI 지수는 2007년 기준 자료 )


개인당 소득과 국가 행복도의 상관관계

개인당 소득 ( GNI per capia ) 와 국가의 평균 행복도 ( 개인의 행복도 총 합 / 조사 대상 국민수 ) 의 관계도를 그려보면 ( 그림 1) , 국가의 개인당 소득이 증가할수록 평균 행복도도 증가하는 경향이 있음을 확인할 수 있다. Pearson 상관계수 값도 0.67로 두 변수 간에 유의한 상관관계가 있음을 증명한다. 그래프를 보면 이러한 경향성이 개인당 국민소득 2만 불이 넘어가는 시점에서도 계속적으로 존재하고 있는 것을 알 수 있다. 행복한 국가가 되기위해선 결국 더 잘 사는 국가가 되는 수밖에 없는걸까? 국민 소득 2만불 언저리에서 헤메고 있는 대한민국 국민이 그리 행복하지 못하다고 느끼는 건 당연한 것이었을까?



그림 1. 개인당 국민 소득과 국가 평균 행복도의 관계 그래프



얼마나 잘 살아야 하나?

개인당 국민소득의 증가가 더 이상 국가의 행복도를 높여주지 못하는 시점은 대체 언제일까? 대체 얼마나 잘 살아야 국가의 행복도가 '돈'의 영향력에서 독립적인 요소가 될 수 있을까?

그림 2는 특정 개인당 국민 소득 이상의 국가들에 대한 행복도와 개인소득의 상관관계를 나타낸 그래프다. X 축의 개인당 국민 소득이 증가함에 따라 대상 국가들은 특정 개인당 국민 소득 이상의 부자 국가들로 점점 한정되는데, 이에 따라 행복도와의 상관계수가 급격히 낮아지는 시점은 개인당 국민소득이 30,000$ 되는 지점에 가깝다.






그림 2. 특정한 개인당 국민 소득에 이상을
나타내는 국가에 대한 행복도와
개인당 국민 소득과의 상관관계.
X 축의 30,000$에 해당하는 Y 축은 개인당
국민소득 30,000$ 이상의 국가들에 대한
국민소득과 행복도의 상관관계를 의미한다.

전체 조사 대상국을 국민소득을 10,000$ 단위로 나누어 분류하고 각 구간별 행복도와 개인소득의 상관관계를 보면 ( 그림 3) , 0$에서 10,000$ 그룹에 속한 국가들에서 상관관계가 가장 높았고, 그 다음으로 높은 상관관계를 보여준 구간이 30,000$~40,000$ 구간에 속한 국가들이다. 그림 2와 3에서 공통적으로 개인당 국민소득 40,000$ 가 넘는 국가들에서는 더 이상 개인당 국민소득이 행복도에 영향을 미치지 못하고 있음을 확인할 수 있다.

소득 수준에 따라 가장 행복도가 상승한 0~10,000$ 그룹을 생각해 보면, 이 단계의 소득 수준을 보이는 국가들은 소득 수준에 따라 생명에 직결되는 의식주의 만족도가 크게 차이가 나기 때문에, 행복과 경제력의 관계가 가장 밀접하게 나타나지 않나 생각된다. 이 이상의 그룹에서 경제력의 차이는 의식주의 문제와는 직접적으로 관련이 없어, 각 국가의 문화적 배경과 정치적 안정도 등에 따라 행복도가 더 크게 영향을 받지 않나 짐작해 본다.


그림 3. 개인당 국민 소득 구간별 행복도와의 상관관계.
X축 값은 구간 시작값. 0$ 인 경우 0$에서
10,000$ 까지 구간의 상관계수를 의미한다.


못살아도 행복한 국가, 잘 살지만 불행한 국가

개인당 국민소득 순위와 행복도 순위의 차를 구해 다시 순위를 매겨서 소득 순위가 높지만 행복도가 낮은 나라와 소득 순위가 낮지만 행복한 국가를 분류해 보았다.

소득 순위보다 행복도 순위가 월등히 높은 상위 국가들을 살펴보면 나이지리아, 베트남, 콜롬비아, 우즈벡스탄, 콴타나모, 라오스, 인도네시아, 엘살바도르 등 소득 순위 100위권, 실제 개인당 국민소득이 수천달러에 불과한 나라들이 이름을 올리고 있다. 이 중에 행복도 순위가 가장 높은 국가는 콜롬비아로 행복도는 4위, 소득순위는 97위를 기록하고 있다. 소득 순위가 60위 이내이면서 상위에 랭크된 국가로는 멕시코가 행복도 5위, 소득순위 58위로 못살아도 행복한 국가 25위에 랭크되었다. ( 그림 4)

그림 4. 행복도 순위가 국민소득 순위 보다 높은 상위 30개 국가.


반대로 소득순위에 비해 행복도가 낮은 국가들의 순위를 살펴보면, 리투아니아, 불가리아, 라트비아, 마케도니아, 헝가리, 러시아, 보츠나와 등이 상위에 이름을 올리고 있고, 한국 ( 소득 순위 38위, 행복도 순위 68위 )은 전체 대상국 130개국 중, 12 번째로 소득 순위에 비해 행복도가 낮은 국가에 이름을 올렸다. 이 순위에서 아시아의 부국들 홍콩( 소득순위 29위, 행복순위 63위), 쿠웨이트 ( 소득 26위, 행복 39위 ), 싱가폴(소득 28위, 행복 37위 ),일본 ( 소득 24위, 행복 49위) 이 30위 안에 랭크되어 있는 것이 눈에 띈다. 특히나 행복도 조사가 이루어지지 않아 조사 대상에서 제외된 대만을 제외한 동아시아 경제 4룡 한국, 홍콩, 싱가폴과 아시아 최대 경제대국 일본이 모두 포함되어 있다는 점이 흥미롭다. 소득 수준에 비해 행복한 국가들 모두 소득 순위 100위권의 빈국들이었던데 반해, 소득 수준에 비해 불행한 국가들의 많은 수가 개인당 국민소득 10,000$ 이상의 비교적으로 경제적으로 안정된 국가들이 많다는 것이 특징적이다. 지역별로 보면 정치적으로 불안한 동구권 유럽 국가들, 문화적으로 개인적 가치보다 집단의 가치가 중시되는 아시아 국가들이 특징적으로 분포하고, 세계 폐권 국가를 자처하는 미국도 27위에 올라 있다. ( 그림 5)

그림 5. 행복도가 국민소득 순위보다 낮은 상위 30개 국가



돈이 먼저냐? 행복이 먼저냐? 좀 더 행복해 지기 위해서...

행복도 순위 상위 30개국의 평균 개인 소득은 30,859$ 로 행복도 하위 30개국의 평균 개인 소득 1,445$ 에 비해 21배나 많다. 동시에 30 행복 국가 중 개인당 국민소득이 10,000$가 안 되는 국가도 9개나 존재한다. 콜롬비아 ( 3,250$ ) 나 엘살바도르 ( 2,850$) 과테말라(2,440$) 베트남 ( 790$) 처럼 국민 소득이 턱없이 낮아도 행복한 국가들이 존재하고 있는 것이다.

행복도 순위 하위 30개국 중 소득 1,000$가 넘는 국가는 12개국이고, 10,000$가 넘는 국가는 존재하지 않는다 ( 이 중, 소득이 가장 높은 나라는 리투아니아로 9,920$). 나머지 18개국의 평균 개인당 국민소득은 379$ 이고, 가장 소득이 낮은 브룬디는 110$ 밖에 되지 않는다. ( 그래도 브룬디는 행복도 하위 30개국 중 가장 소득이 높은 리투아니아보다 행복도가 두단계나 높다. )

전체적인 경향성을 보면, 경제력이 일정 수준이 일정 수준 이하가 되면 행복한 국가가 되는 것이 힘들다. 경제력이 좋으면 좋을수록 행복도도 높은 경향성이 있고 이런 경향성은 국민소득 30,000$이 넘어가는 상태까지 지속되지만, 40,000$가 넘어서는 이런 경향성이 사라진다.

그러나 앞서 살펴보았듯, 경제력이 높다고 무조건 행복한 국가가 되는 것은 아니다. 동아시아 경제 부국인 일본, 홍콩, 싱가폴, 한국이 모두 경제력에 비해 행복도가 낮은 것은 결코 우연이 아니다. 개인의 행복은 개인의 가치를 중시하는 문화 안에서, 개개인의 의지로 창의력을 마음껏 발휘하며 스스로의 가치를 쌓아나갈 때 높아지게 된다. 유교 문화권에서 개인의 가치보다 집단의 가치를 중시하고 개인의 욕구를 억누르고 남의 시선을 신경쓰는 삶의 행태를 어릴 때 부터 교육받아온 동아시아 부국의 국민들이 경제적으론 풍요롭지만 상대적으로 불행한 이유가 아닐까?

같은 맥락에서 공산주의의 전체주의적 문화와 삶의 방식이 몸에 벤 동유럽 국가 국민들의 낮은 행복도도 설명될 수 있으리라 생각한다.

결론적으로 국가의 경제력( 국민당 개인소득 기준) 은 국가의 행복도를 가늠할 수 있는 잣대가 될 수 있으며, 경제력과 행복도의 상관관계는 의식주 문제가 해결된 단계 이상에서도 유지될 만큼 한 국가의 행복도와 밀접한 관련성이 있다.

경제력이 높은 국가일수록 상대적으로 국민의 복지 수준이 높고, 사회적 안전망이 잘 발달해 있고, 또한 사회적 약자들의 행복도 수준을 높여줄 수 있는 각종 장치들이 마련되어 있을 가능성이 높다는 점 등을 감안하면 이러한 경제력과 행복도의 높은 상관관계가 이해될 수 있으리라 생각한다.

동시에 국민 개개인이 스스로의 삶에 만족하며 행복하게 살 수 있는 개인의 가치를 중시하고 존중하는 사회, 문화, 정치적 변화가 경제 발전과 더불어 진행되어야 그에 걸맞는 행복한 국가로 발전해 나갈 수 있을 거라 생각한다.

개인적으로 한국을 생각할 땐 항상 무언가 답답한 마음이 들고, 행복하게 살기 힘든 나라라는 느낌을 받는다. 대부분의 사람들이 스스로의 의지와 가치 보다는 남들의 시선, 기대, 평가에 의해 스스로의 삶을 평가하고 수정해 나가고, 계획하며 살아가고 있기 때문이다. 나도 내 주변의 사람들 ( 부모, 친구, 동료 등) 에 의해 그러한 압력을 받을 때가 있고, 그런 압력을 받을 때 마다 내 스스로의 꿈과 의지, 계획들을 온전히 지키기 위해 많은 에너지를 소모하게 된다.

좀 더 행복해 지기 위해선, 자기 자신과의 진지한 대화를 끊임없이 해야하고, 좀 더 고독과 친해져야 하고, 자신 만의 온전한 세계를 꿈꿀 수 있어야 한다.









Sunday, January 4, 2009

CRONOS

Web address : http://mips.gsf.de/genre/proj/cronos/index.html

Protein-protein interaction DB로 널리 알려진 MIPS 에서
gene과 protein 의 major 관리 기관의 ID 들 간의 cross-mapping
정보를 담은 DB를 공개했다.

NCBI의 refseq ID와 UniprotKB, Ensembl 이 3개 major ID 소스로
이용이 되었고, 이 외에도 PIR 등의 DB, 나아가 affymetrix 의 칩 ID와도
cross-mapping web-service를 제공한다.