최근 들어 신약 개발 비용은 천문학적으로 높아졌고, 또 높아지고 있다. 보통 신약 하나 개발하는데 1조원 든다 정도로 얘기들을 하는데, Forbes의 Matthew Herper 라는 기자가 이에 관해 심도 있는 조사를 해 본 결과 실제로는 1조가 아니라 약 4조~11조 정도가 소모된다고 한다. (Forbes 기사 )
흔히 알려진 것과 다른 결과가 도출된 이유는 '실패한 신약'에 대한 소모 비용까지 계산에 포함했기 때문이다. 예를들어 2011년 노바티스가 10개의 신약 개발을 추진했고 이 중에 8개가 실패했다면 2개의 신약 성공에 들어간 비용은 10개의 신약 개발 비용과 같다고 놓고 신약 1개 개발 비용을 계산했다는 이야기다.
실질적 신약 1개당 개발 비용
가장 효율적으로 신약 개발을 한 회사는 Amgen 으로 1개당 $ 3.6 billion ( 우리돈 4조 정도) 를 썼고, 그 다음이 Novartis 로 $3.9 billion 이고, 가장 비효율적으로 비용을 소모한 회사는 AstraZeneca 로 개당 $11 billion ( 우리돈 약 11조 이상), 그 다음이 GlaxoSmithKline 으로 $8.1 billion( 우리돈 8조 이상 ) 을 소모했다.
잘 알려져 있는 사실이지만, 신약 개발 비용의 90%는 임상시험에 소모된다. 1,2,3차 임상을 거치면서 소모되는 비용은 엄청난데, 이 과정에서 reject 되면 그 동안에 소모된 모든 노력과 비용은 그냥 거품 처럼 사라져 버린다.
FDA의 신약 허가 기준은 Vioxx 등의 시장 실패 신약 ( 시장에 출시되고 5년이 지난 시점에서 독성이 인정되어 시판이 중지된 신약으로, 단일 약 실패로 인한 피해액이 최고로 알려져 있고, 이로 인해 피해를 본 환자들의 추산 숫자도 수만명 단위 ) 등으로 인해 점점 더 강화되고 있으니, 신약 개발 비용이 쉽사리 줄어들 것 같지 않아 보인다.
과도한 신약 개발 비용을 낮추어줄 가능성은 전혀 없는 것일까?
개인유전정보를 활용한 신약 개발
FDA에서 허가되는 신약의 임상 시험 결과를 본 적이 있는가? 일반인들이 기대하는 수준은 100명이 먹으면 적어도 90명정도는 효과를 보는 수준을 기대할 것이다. 하지만 실제로 시장에 나오는 약의 효과 수준은 이런 기대를 전혀 충족시키지 못하는 경우가 많다. 특히나 Chronic disease에 대한 약들이 대게 이런 결과를 보여주는데, 100명중 플라시보를 복용한 환자들 20명이 효과를 본다면, 신약 허가를 받는 약은 이 보다 조금 높은 25명 30명 수준만 되어도 통과된 사례가 있다.
즉, 신약으로 개발이 되어도 이를 통해 효과를 보는 사람은 그리 많지 않은 수준이라는 것이다. 여기서 중요한 포인트는 '100명 중 30명에서는 왜 효과가 나타나는가' 이다. 이 30명은 나머지 70명과는 다른 특성을 가진 그룹일 가능성이 있다. 유전적으로 특이한 패턴을 공유한 그룹일 수도 있고, 이와 더불어 특정한 생활 습관을 가진 그룹일 수도 있다.
지금까지는 이런 그룹에 대한 특성을 분석하기가 쉽지 않았다. 이들의 개인유전정보를 분석하는 것도 엄청난 비용 때문에 어려웠고, 개인의 전방위적 healthcare information 같은건 아예 축적되어 있지도 않았기 때문이다.
하지만 앞으로는 이런 분석들이 절대 불가능한 일이 아니다. 이미 30X Human whole genome 분석 비용은 소비자 가격 기준으로 미국에서 이미 2000달러( 200만원) 대로 떨어졌다. 이는 실험 분석+기초적 분석 까지 포함된 가격이다. 또 스마트 기기들과 다양한 sensor 들의 발전은 개인의 전방위적 개인의료정보 ( EMR or EHR ) 를 수집하여 분석 가능한 형태로 축적할 수 있게 한다.
임상 초기 단계에 실패할 만한 결과를 얻었다고 해보자. 예컨데 100명 중 10명에서만 효과가 나타났다고 하면, 기존에는 그냥 여기까지 소모된 모든 비용을 날리게 되지만, 앞으로는 개인유전정보/의료정보를 가지고 효과가 나타난 그룹 10명을 분석해 볼 수 있다. 분석을 통해 10명의 그룹에서 특징적인 유전적 혹은 특이적 의료정보를 발견하게 되면, 신약의 타겟 환자 그룹을 더욱 명확하게( 그리고 좀 더 협소한 그룹의 환자들에게) 정의하여 새롭게 임상 시험을 하고 기준을 통과할 가능성이 생겨난다.
개인유전정보/의료정보의 활용은 천정부지로 올라간 신약개발 비용을 낮추고, 효율적으로 신약이 개발될 수 있도록 하는 형태로 앞으로 이용되게 될것이고, 이런 형태로 제약 회사들과 접점이 생겨나게 될 것으로 생각한다. 그렇게 되면 신약 개발은 더이상 거대 글로벌 제약사들만의 전유물이 아니게 될 것이고, 비로소 신약개발의 봄이 오게 되지 않을까... 하는 생각을 해본다.
Mainly on Personal Genome Industry, Preventable Medicine, Mobile healthcare tech, and Bioinformatics.
Wednesday, February 22, 2012
Friday, February 10, 2012
jQuery 에서 동적 이벤트 등록시 이벤트 중복 문제
Javascript 에서 addEventListener 그리고 jQuery에서 .bind , .click 등 으로 다양하게 이벤트를 등록할 수 있다. 하지만, 어떤 DOM에 이벤트가 등록되는지에 따라 이벤트는 원하는 대로 동작하지 않는 경우가 발생할 수 있다. 몇가지 상황을 들어 본다.
1. 동적으로 생성되는 DOM에 대한 이벤트 등록
동적으로 새롭게 생성되는 이벤트에 대한 등록은 상대적으로 안전하다고 본다. 생성되는 이벤트에 대해 이벤트가 1:1로 등록이 되게 코딩을 한다는 가정 하에서. 하지만, DOM이 여러번 생성되고 동적 생성시 동적 삭제가 제대로 동반되지 않을 때 문제가 발생할 수 있다.
위의 코드는 어떻게 동작할까? create 을 누르면 id=button인 버튼이 생성이 되고, 버튼을 누르면 'good' 이란 문구를 띄우는 창이 발생하는 이벤트가 등록된다. create를 두번 누르면 어떻게 될까?
버튼이 하나더 생긴다! 하지만, 새로 만들어진 버튼에는 이벤트가 등록되지 않는다. 동시에 처음에 만들어졌던 버튼을 누르면 alert 창이 두번 뜬다. id=button를 가진 첫번째 엘리먼트에 이벤트가 등록되므로 이후로 만들어지는 버튼에는 이벤트가 등록되지 않는다.
id 가 같은 엘리먼트가 여러개 만들어지는 건 피해야하지만, 그럼에도 불구하고 굳이 이 상황을 해결하고 싶다면, 즉 만들어지는 버튼 각각에 대해 이벤트를 등록하고 싶다면? 아래와 같이 각 엘리먼트 발생시 직접 이벤트를 연결해주면 된다.
2. 존재하는 DOM에 대한 이벤트 등록
보통 문제는 존재하는 DOM에 대한 이벤트 등록이다.
위의 코드는 버튼( id=button인 엘리먼트)을 클릭하면, id=start 인 엘리먼트에 alert 를 띄우는 이벤트를 등록한다. 버튼을 한번 누르고 나면 이후에 start 를 눌렀을 때, 한번 alert 창을 띄운다, 이것이 이 코드를 작성한 사람의 의도일 것이다.
그런데 버튼을 두번 누르면 어떻게 될까?
start 엘리먼트에 이벤트가 두번 등록된다. 그래서 start 를 누르면 두번 alert 창이 뜬다. 한번 더 버튼을 누르면? 당연히 세번 alert 창이 뜬다.
이 문제를 해결하는 가장 간단한 방법은 버튼을 누를 때 마다 아래와 같이 기존에 등록된 'click' 이벤트를 제거하는 것이다.
기본적으로 동적 생성되는 DOM 이 아닌 경우라면 이벤트 등록을 중복하지 않는 것이 후폭풍을 막는 지름길이 아닐까 생각하고, 써야하는 상황이라면 항상 이벤트 중복이 되지 않게 주의를 기울여야 함을 기억해 놓자!!
1. 동적으로 생성되는 DOM에 대한 이벤트 등록
동적으로 새롭게 생성되는 이벤트에 대한 등록은 상대적으로 안전하다고 본다. 생성되는 이벤트에 대해 이벤트가 1:1로 등록이 되게 코딩을 한다는 가정 하에서. 하지만, DOM이 여러번 생성되고 동적 생성시 동적 삭제가 제대로 동반되지 않을 때 문제가 발생할 수 있다.
$('#create').click( function(){ $('<div id=button >Button</div>').appendTo('body'); $('#button').click( function(){ alert('good'); }); });
위의 코드는 어떻게 동작할까? create 을 누르면 id=button인 버튼이 생성이 되고, 버튼을 누르면 'good' 이란 문구를 띄우는 창이 발생하는 이벤트가 등록된다. create를 두번 누르면 어떻게 될까?
버튼이 하나더 생긴다! 하지만, 새로 만들어진 버튼에는 이벤트가 등록되지 않는다. 동시에 처음에 만들어졌던 버튼을 누르면 alert 창이 두번 뜬다. id=button를 가진 첫번째 엘리먼트에 이벤트가 등록되므로 이후로 만들어지는 버튼에는 이벤트가 등록되지 않는다.
id 가 같은 엘리먼트가 여러개 만들어지는 건 피해야하지만, 그럼에도 불구하고 굳이 이 상황을 해결하고 싶다면, 즉 만들어지는 버튼 각각에 대해 이벤트를 등록하고 싶다면? 아래와 같이 각 엘리먼트 발생시 직접 이벤트를 연결해주면 된다.
$('#create').click( function(){ $('<div id=button>Button</div>').appendTo('body').click( function(){ alert('good'); }); });
2. 존재하는 DOM에 대한 이벤트 등록
보통 문제는 존재하는 DOM에 대한 이벤트 등록이다.
$('#button').click( function(){ $('#start').click( function(){ alert('What?'); }); });
위의 코드는 버튼( id=button인 엘리먼트)을 클릭하면, id=start 인 엘리먼트에 alert 를 띄우는 이벤트를 등록한다. 버튼을 한번 누르고 나면 이후에 start 를 눌렀을 때, 한번 alert 창을 띄운다, 이것이 이 코드를 작성한 사람의 의도일 것이다.
그런데 버튼을 두번 누르면 어떻게 될까?
start 엘리먼트에 이벤트가 두번 등록된다. 그래서 start 를 누르면 두번 alert 창이 뜬다. 한번 더 버튼을 누르면? 당연히 세번 alert 창이 뜬다.
이 문제를 해결하는 가장 간단한 방법은 버튼을 누를 때 마다 아래와 같이 기존에 등록된 'click' 이벤트를 제거하는 것이다.
$('#button').click( function(){ $('#start').unbind('click'); $('#start').click( function(){ alert('What?'); }); });
기본적으로 동적 생성되는 DOM 이 아닌 경우라면 이벤트 등록을 중복하지 않는 것이 후폭풍을 막는 지름길이 아닐까 생각하고, 써야하는 상황이라면 항상 이벤트 중복이 되지 않게 주의를 기울여야 함을 기억해 놓자!!
Subscribe to:
Posts (Atom)