에릭 렌더가 동물원에 간 이유는? 부제 : 수억 년이 흘러도 소중한 것은 항상 거기 그대로 남지요

오늘도 나카지마 미유키 눈화 가사를 연상케 하는 부제 ㅋ

오늘 디벼 볼 논문은 이 논문.
A high-resolution map of human evolutionary constraint using 29 mammals, Nature 2011

2001년 우리의 빌횽 (게이츠 말고 클린턴)이 좌 벤터,우 콜린스 대동하고 하얀집에서 ‘휴먼 지놈? 우리 손 안에 있소이다’ 드립을 친지도 어언 10년이 넘어간다.

콜린스 “빌횽, 저기 벤터가 혼자 지놈도시락 까먹으려다 걸린애거든요?”

게다가 이제 ‘대략적인’ 개인의 지놈 시퀀스는 약 5백만원 정도의 비용이면 얻어낼 수 있는 시대가 되었고, 무려 1천명의 개인 지놈 시퀀스가 공식적으로 공개되게 되었다. 이제 우리는 휴먼 지놈에 대해서 빠삭하게 알고 있는 것이겠죠? 그런거죠? 그러면 이제 여러가지 유전병의 원인은 물론이고 자신의 건강에 대한 정보를 지놈 시퀀싱만 슥 하면 손바닥 바라보듯 잘 알 수 있는 것이겠죠? 그렇죠?

….긍정적 사고방식 돋네염 고갱님.


NHIGR의 에릭 그린 아저씨도 인정한 아직 멀고 험한 길이다.

즉, 아직까지도 우리의 지놈에 대한 이해수준은 매우 부족한 것이 현실. 이것을 좀 알기 쉽게 비전공자도 알아먹도록 설명하기 위해 어떤 예를 들까 생각해 보았는데…가령 휴먼 지놈의 해석문제를 자신이 개발하지 않은 소프트웨어를 분석하여 프로그램의 구조가 어떻게 되었는지 역공학 (Reverse Engineering)하는 것으로 비유해 봅시다.

무엇을 예로 들까 고민했으나 그냥 대세에 맞추어 디아블로 3 이라고 합시다. 해커 너님이 블리자드 서버에 몰래 들어가는 방법을 강구해서 바이너리 파일과 리소스파일을 몽땅 긁어오는데는 성공했음. 그러나 소스파일이나 도큐먼트는 전혀 없는 상태. 그래서 바이너리 파일의 경우 이것을 디스어셈블리를 해서 어셈블리 레벨에서 어떤 일을 하는 부분인지를 일일히 파악해야 하고 싶다. 그래서 고생끝에 디스어셈블리를 다 해 봤음.

…그런데 실제로 프로그램에 해당하는 코드 부분은 전체 데이터의 1.5% 밖에 안돼! 나머지는 텍스트 에디터로 ‘ㅋㅋㅋㅋㅋㅋㅎㅎㅎㅎㅎㅎㅎㅎ’ 하는 초성체 글자식으로 깨져나오는 정체불명의 파일밖..그렇다고 이들을 삭제해버리면 게임이 실행되지 않음. -.-;; 이거 버릴 수도 없는 중요한 데이터이긴 한 것 같은데, 도데체 뭐에 쓰는 물건이여?

지놈 시퀀싱을 다 해놨다는 상황이 결국 이런 꼬라지였던 것이다. 그래놓고 만병통치 드립을 쳤으니 쯔쯔

생명 현상이라는 영화에서 주연은 누가 뭐래도 단백질. 그런데 지놈상에서 단백질을 암호화하는 부분에 해당하는 엑손 (Exon) 영역은 약 1.5% 밖에 되지 않는다. 블록버스터 영화를 찍는 수천명의 배우, 스탭 중에서 내가 아는 넘은 탐크루즈..글고 몰겠다. -.-;;; 하는 격.

From Regulatory and Epigenetic Landscapes of Mammalian Genomes, Laura Elnitski, NHGRI

그러나 그렇다고 이들 이외의 시퀀스는 중요하지 않은 것이라고 말할 수가 없는 것이, 유전자의 발현을 조절하는 Regulatory Sequence의 경우에는 당연히 Exon 밖에 위치하게 되어 있고 (Promoter, Enhancer 등), 게다가 기존에는 쓸모없는 잉여 DNA 부분이라고 생각했던 인트론이나 유전자 사이의 Intergenic Region에서도 질병이나 형질과 관련되어 있다고 생각되는 변이 (SNP, CNV)가 나타난다.

가령 영화에 대한 비유를 들어 생각해 본다면, 기존의 단백질 중심주의에서는 ‘주연배우’ 인 단백질이 뭐하는지만 제대로 파악하면 영화 그까이꺼 나도 감독해요 수준의 이해였다. 그런데 이거 배우만 떡 데려다 놓으니 이거 얘 완죤 잉여야. -.-;; 혼자서 자기 의상하나 못 챙겨 입어. 즉 배우의 스케줄을 관리하는 매니저, 의상담당 따위를 떠나서 조명, 촬영, 편집, 특수효과 등등등을 담당하는 수많은 스탭의 역할을 배제하고 주연배우! 주연배우만 잡으면 영화는 끝이예요 외쳐왔던 수준이 지놈 프로젝트 이전의 사고방식이라면 좀 과장된 비유일까? 여튼 지금은 주연배우도 주연배우지만 그 외의 ‘스탭’ 에 대한 이해가 있어야 한다는 것으로 생각이 바뀌고 있다는게 현재 지놈 업계의 상황이라고 보면 된다.

그럼 1.5% 밖에 안되는 코딩 리전 이외의 다른 부분은 뭐가 중요하고 뭐가 안 중요한 부분인 거여. 모르게써 그냥 맨붕?

휴먼 지놈 프로젝트가 일차로 완결되면서 새롭게 대두된 이러한 난제를 해결하는데에는 여러가지 방법이 있겠지만, 이 중의 한가지의 방법은사람 이외로 시선을 돌리는 것일 것이다. 그래서 동물원에 갑니다.

즉, 만물의 영장 드립을 쳐도 결국 냉정하게 바라보면 사람도 결국 동물 1종의 하나일뿐. 즉 사람도 엄연히 동물 중의 하나이며, 휴먼 지놈과 마찬가지로 다른 동물들의 지놈에도 그들이 살아가는데 필요한 요소를 가지고 있으며, 이는 사람과의 유전적인 연관성이 얼마나 되느냐에 따라서 지놈 정보가 유사할 것이라는 것은 당연한 이야기. 이러한 것을 감안하여 좀 생각을 해보면,

– 사람과 쥐, 오리너구리에 이르기까지 다양한 생물종에 걸쳐서 보존된 지놈 상의 부분이라면 척추동물의 생명현상에 중요한 역할을 하는 부분일 것이다. 가령 디아블로, 스타, 와우에 걸쳐서 공통적으로 존재하는 루틴이라면 게임에서 가장 핵심적이고 공통적인 역할을 수행하는 엔진에 해당하는 부분일 가능성이 높다.

– 포유류, 혹은 영장류, 아니면 사람에서 특이적인 부분이라면 각각의 서로 다른 생물종의 고유한 특성을 나타내는 부분일 가능성이 많다. 가령 사람과 매우 유전적으로 흡사한 침팬지와 사람간에서 크게 틀린 영역이라면 이것은 ‘사람이 사람다움’ 을 나타내는 형질과 관여된 것일 가능성이 많을 것이다. 가령 오리지널 스타크래프트와 브루드워를 비교해서 두개가 틀린 부분이라면 아마도 추가 유닛과 신규 켐페인에 대한 내용이 아닐까?

주변을 열심히 돌아보고 주변사람과 자신을 비교해 볼 수록 자신에 대해서 더 잘 알 수 있게 되는 원리라고나 할까. 여튼 이런 배경하에 에릭 렌더 (Eric Lander)를 대빵으로 하는 Broad Institute 의 사람들은 기존에 시퀀싱된 7가지의 포유류 지놈 정보에 덧붙여 약 20종의 새로운 척추동물 지놈 시퀀싱을 수행하고, 이들을 총합 분석하여 ‘척추동물에서 공통적으로 보존된 부분은 어디인가’ 를 분석하게 되었다. 이것이 오늘 디벼보고자 하는 논문. 사설 넘 길다

그래서 이제 논문에 제시된 내용을 좀 들여다 보기로 하자. 이 논문에서 발견된 제일 중요한 내용을 1줄로 요약하면,

사람 지놈의 약 4-5% 정도는 척추동물 전체에서 변하지 않고 유지되고 있는 부분으로써 이 부분이 인간의 생명현상을 이해하는데 제일 중요한 부분이다.

라는 것이다. (바쁜 분들은 여기서 그냥 나가셔도 됨. ㅋ)

위 논문에서 사용된 척추동물 지놈 29종 중에서 사람과 마우스는 이미 시퀀싱되고 피니싱까지 완료된 최고퀄리티의 지놈. (파란색 글씨). 사람과 쥐는 지놈계의 투탑 ㅋ 이것보다 좀 격이 떨어지는 지놈은 생거 기준으로 약 5-6X 리던던시로 드래프트 시퀀싱 된 넘들 (초록색 글씨) 개, 소, 말 주로 그런 넘들이다. 개나소나말이나 시퀀싱 다하네 검은 글씨로 표시된 것은 그냥 2X 정도 찔끔 시퀀싱된 지놈계에서는 듣보잡(?)동물들. ‘저기여 2X로 시퀀싱해서 뭐 어쩌자구요. 요즘은 최소 30X-50X까지 시퀀싱하는 NGS 시대 아닌가염?’ 하시는 분도 있겠지만 이 프로젝트는 NGS가 개시되기 전에 훨씬 일찍 시작되었으며, 800-1000bp 이상의 Read Length의 생거 데이터는 요즘 나오는 NGS 의 숏다리 리드 보다는 리던던시가 훨씬 적어도 더 나은 데이터를 뽑을 수 있다는 것을 잊지 말것. 그래도 2X는 쩜 그렇다 하는 생각도 들지만 뭐 ㅋ 자연 논문 이미 내써 어쩌라구 ㅋ


Figure.1 어쨌든 이런 지놈 시퀀스를 가지고 이 논문에 참여한 동물들의 족보를 따져보았다. Figure 1 a패널은 은 이번 연구에 차출된 잡짐승들의 계통도. (보통 이런 계통도 그린다 하면 유전자 하나 가지고 깨작거린 것이지만 이번에는 통크게 지놈 전체를 사용해서 사용) 사람은 당연히 침팬지, 원숭이류들과 같이 묶여있고, 마우스, 랫, 소, 말, 개 등의 네임드 동물뿐만 아니라 다람쥐, 고슴도치 (소닉돋네), 아르마딜로 등과 같은 넘들까지 모두 포함되었다.

b 패널에서는 이들 잡스러운 짐승을 통틀어 보존된 염기서열들은 주로 어디에 많이 나타나는가에 대한 그래프인데, 전체적으로 인간 지놈의 약 5% 정도는 잡짐승에서까지 모두 공통적으로 보존되어 온 영역이라는 것을 알 수 있었다. 즉 최소 5% 정도 부분은 수억 년동의 진화과정 속에서도 변치 않고 간직되어 있는 부분. 이 중 약 17% 정도는 단백질을 암호화하는 코딩 영역에 존재. 코딩 영역이 대체로 지놈 전체의 1.5%에 지나지 않는다는 것을 생각해 볼때 당연히 코딩 영역은 이들 짐승들을 통해서도 보존되어 있을 가능성이 높은 중요한 영역이라는 것은 예상한 그대로. 그러나 이렇게 진화적으로 보존된 영역 중 절반 이상이 인트론 영역, 유전자간의 인터제닉 영역이라는 것은 이 부분은 단백질을 코딩하는 영역만큼이나 중요한 ‘뭔가’ 가 있다는 것을 암시해 준다. 그럼 그 ‘뭔가’란 뭘까?

인트론 영역이나 기존에 ‘유전자 사이의 잉여영역’ 이라고 생각되던 부분 중에서 보존된 영역은 ‘뭔가 중요한 일을 하지 않을까?’라는 생각을 하고 이 부분을 집중적으로 뒤벼보니까 이런 예처럼 전사인자가 붙는 영역들을 발견할 수 있게 되었다.


후후 너의 공격 패턴은 이미 파악되었다 TGTGTTGTTGGTGG

대개 인간 사이에서 발견되는 변이(SNP)의 경우에는 포유동물 전체에서 하나도 변이가 없이 보존된 영역에서는 거의 발견되지 않는다는 점도 중요한 점이다. 더우기 변이가 있는 부분에서의 치환 패턴의 경우에는 다른 생물에서 발견되는 것과 유사한 패턴을 취한다는 것. 즉 인간 SNP에서 T 아니면 G 의 heterozygote가 존재하는 영역이라면 대개 다른 생물에서도 T 혹은 G 로 분포할 가능성이 높다는 점. 즉, ‘바뀌어도 크게 문제가 없을만한 영역’ 이기 때문에 인간 사이에서도 변화가 관찰된다고 생각하면 되려나.

인트론 안에 보존된 영역이 있어서 뒤벼보았더니 90bp 정도의 ORF가 나오드라.

단백질을 암호화하는 코딩 리전에서 사용되는 코돈은 아미노산별로 복수개가 있을 수 있다. 따라서 일반적인 경우에 SNP 등으로 변이가 생겨도 아미노산에 변화가 생기지 않으면 뭐 그거 상관 있겠음? 생각하기 쉬우나 (Synonymous substitution) 사실 많은 질병 및 형질과 연관된 SNP중에서 synonymous substitution인데도 표현형에 영향이 생기는 경우가 있다. ‘왜 그런거임?’ 잘 모른다. -.-;; 그러나 이번 연구로 여러가지 생물종에 걸쳐서 Synonymous substitution이 잘 일어나지 않는 영역 (Synonymous Constraint Element)가 약 10,000개 이상 인간 지놈에 존재한다는 것이 확인되었다. 위는 그 예. 즉 코딩 리전인데도 코딩하는 아미노산이 문제가 아니라 RNA Sequence 자체가 무엇이냐에 따라서 변화가 될수 있다는 것은 ‘단백질이 똑같으면 뭐 상관없는거야’ 식의 단백질 중심주의적 사고방식에 ㄸ침을 날리는 한 예라고 볼 수 있겠다. ㅋ

그리고 noncoding region 중에서 보존된 영역을 디비 파본 결과 약 1천개가 넘는 noncoding RNA 가 발견되었다. 이 데이터와 기존에 ENCODE에서 한 RNA-Seq 데이터 등을 종합분석해 본 결과

이런 식으로 structure를 가진 noncoding RNA가 이런 보존된 영역에서 실제한다는 것이 확인됨.

그리고 이 보존도를 뒤벼보는 것은 SNP 중에서 linkage equilibrium 에 위치하고 있는 여러가지 SNP 중에서 어떤 넘이 실제로 문제를 일으키는 넘인가를 찍는데 보탬이 될 수 있다 카더라 하는 이야기도 하고 있다.

요기서 SNP 한 넘 (rs8073963)이 다른 생물종에서 보존된 인핸서를 바꾸는 역할을 하므로, 다른 넘들보다는 요넘이 좀 더 ‘범인’ 일 가능성이 높지 않을까 하는 드립도 칠 수 있다.

끝으로 이러한 연구를 통해서 ‘사람이 다른 동물과 진짜로 다른 부분’, 즉 침팬지와 사람에서 급격히 다른 부분이 어디인가를 찾아낼 수 있게 되었는데, 물론 이런 변화가 어떻게 사람과 침팬지의 차이를 낳게 되었는지에 대해서는 앞으로도 많은 연구가 필요하다. -.-;;; 라고 쓰고 그냥 아직 몰라요라고 읽는다.


믿거나 말거나 지놈 수준에서 사람과 침팬지의 차이를 찾는 것은 조낸 힘들다. ㅠ.ㅠ

어찌되었건 이러한 29종의 동물간에서의 보존성 연구는 지놈을 해석하는데 있어서 꽤 유용한 자료로 사용될 것이 틀림없다고 생각한다. 이러한 자료는 이 업계에서 가장 널리 사용되는 UCSC 지놈 브라우저와 Broad의 Integrated Genome Viewer 를 통해 뒤벼볼 수 있게 되었는데.

UCSC Genome Browser

Integerated Genome Viewer

여기서 한번 Integerated Genome Viewer로 이 데이터를 직접 살펴보자. Integerated Genome Viewer 링크를 클릭해서 29mammals.jnlp 를 실행하면,

자바 웹스타트 뜨고, 자동적으로 IGV가 로딩되면서 29 mammals 데이터가 같이 로딩된다.

자기 관심 유전자를 한번 뒤벼보자.
나는 걍 요새 다루는 유전자인 ACTN4 를 찍어봐따. 그러면 그 위치로 이동하는디..

각각의 패널에 대한 설명은 요기 를 참조한다.

여기서 SiPhy pi, SiPhy omega가 바로 conservation 스코어로 (자세한 정의는 위의 설명 참조) 위의 숫자가 높을수록 29종의 동물종에서 보존되어 있는 부분이라는 것을 알수 있다. exon 영역 이외에도 보존되어 있는 영역이 꽤나 많져?


여기에 추가하여 dbSNP 데이터를 한번 로딩해서 뒤벼보고자 한다면

아 더이상 뒤벼보는 것은 여러분들이 알아서 하삼. ㅋ

여튼 이런 논문이었슴다. 즉, 사람에 대한 것을 이해하려면 동물원에 가보는 것도 때로는 하나의 방법일 수 있다는 말씀.

Advertisements

Protein Surface Conservation Analysis – 부제 : ‘소중한 것은 세월이 가도 남는 법이죠’

부제가 어째 나카지마 ‘멘붕’ 미유키 눈화 실연노래 가사같네 ㅋㅋㅋ

왜 이런게 필요한가?

자 고갱님, 모진 고생을 겪고 새로운 단백질 구조를 푸셨습니다. 축하드려요.
근데 이제 어쩌라구? 단백질 구조를 부는 것은 결국 구조를 통해서 단백질 기능을 파악하고자 함이다. 구조를 푸는 것 만으로 너님 자연과학세포 당첨요 ㅋ 인생피셨네요 하는 좋은 시간은 다 갔습니다. 그렇다면 어떤 단백질 구조를 규명했다 치고, 이 단백질의 기능을 구조를 통해서 어떻게 파악할 수 있을까?

가령 다른 단백질과 상호작용하여 ‘뭔가’ 를 하는 단백질이라고 치자. 이 단백질이 다른 단백질과 결합한다는 것은 이미 알고 있다. 그러나 결합구조 등이 없는 상황에서 단지 단백질 생긴 모양만 보고 이 단백질의 어떤 부분에 다른 단백질이 결합하여…를 손쉽게 알 수 있으면 좋겠지만 구조만 보고서 그걸 안다는 것은 쉽지 않다.

예를 들어 보자면..

beta-catenin 이라는 단백질은 signaling에서 매우 중요한 역할을 하는 단백질로써, 여러가지 파트너와 결합하여 시그널링에서 매우 중요한 역할을 수행한다. 그러나 이 단백질의 구조만 보고서 다른 단백질이 어떤 부위에 들러붙어서 서로 상호작용을 수행할 지 알 수 있을까? 단순히 구조만 보고서는 좀 깝깝하다.


꽈배기 돋네. but so what?

물론 이 단백질의 경우에는 다른 여러가지 바인딩 파트너와의 결합구조가 추후에 규명되었기 때문에 이러한 걱정을 할 필요가 없다. 그러나 지금 자기 자신이 연구하는 단백질의 구조가 있고, 결합구조를 풀려고 하는데 그건 잘 안되고, 그러면 손가락만 빨고 놀면 되겠죠? -.-;; 뭐 그럴려면 그러시라. 그러나 나 같으면 현재 구조 정보만 가지고 뭔가 실마리를 알아내도록 노력하겠다.

이러한 방법 중의 하나는 단백질 homolog 중에서 어떤 부분이 보존되었는지를 찾는 것이다.
즉, 웬만한 단백질이라면 대개 유사종의 생물, 특정한 단백질의 경우라면 박테리아로부터 사람까지 모두 보존되어 있는 경우도 있다. 이때 단백질의 구조가 변하지 않았고, 그 기능이 변하지 않았다면, 기능적으로 중요한 단백질 부위 / 잔기는 대개 homolog 중에서 보존되어 있을 가능성이 많고, 반면에 단백질의 기능에 별 영향이 없는 부분이라면 상대적으로 변화가 좀 많아도 상관없을 것이다. 사실 어떤 Residue가 중요한가에 대한 2차 정보는 Multiple Sequence Alignment 를 하면 쉽게 알 수 있다.

그런데 Multiple Sequence Alignment는 어디까지나 1차원적인 정보고, 우리는 이미 해당 단백질의 3차 구조를 알고 있다. 즉 단백질이 어떻게 생겨먹었는지를 안다는 이야기다. 그렇다면 단백질의 구조 입장에서 볼때 이들이 어떻게 보존되는지를 비주얼하게 볼 수 있다면, 대략적으로 어떤 부분이 보존되어 있는지를 알 수 있을 것이고, 이렇게 표면에 있는 아미노산 중에서 잘 변하지 않는 부분은 대개 단백질 상호작용 등에서 중요한 역할을 한다. (안 할 수도 있다. 물론. -.-;;) 즉 1차원적인 Multiple Sequence Alignment의 아미노산 보존 정보를 3차원 단백질 구조에 투영하는 것이 오늘 할 일이라고 할 수 있다.

오늘은 두 가지 상반된 방법을 알아보기로 하자. 첫번째는 이미 만들어져 있는 웹 서버 (Consurf)를 이용하여 자동적으로 Multiple Sequence Alignment를 계산하고, 여기에 따라서 Residue 별로 보존된 정도를 숫자화하여 단백질 표면에 그려주는 것. 분석 대상인 단백질이 한두개거나, 프로그래밍 등에 전혀 지식이 없는 초보자라면 이 방법을 사용하면 된다.

두번째 방법은 매우 다양한 단백질 한 수백개 정도에 동일한 처리를 해서 분석을 해야 하는 경우인데, 이러한 경우 웹 서버에서 하나씩 일일히 작업을 할 수는 없으므로 이미 만들어져 있는 consurf 웹 서버의 기반이 되는 소프트웨어인 Rate4Site를 직접 실행시켜서 직접 Multiple Sequence Alignment 를 수치적으로 분석하고, 이 결과물과 pdb 파일을 파싱하여 수치에 따라서 다른 색을 칠해주는 pymol 스크립트를 생성하는 스크립트를 작성해 보기로 하는 것을 알아보기로 하자.

일단 그냥 닥치고 서버로 고고
http://consurf.tau.ac.il/


아미노산 or 핵산? 아미노산이지 당근.

오늘 예로 쓸 것은 마우스 b-catenin. PDB id는 3BCT

어떤 chain을 기준으로 할래 결정하고 (여기의 예에서는 체인 하나밖에 없으니까 그냥 A), MSA를 미리 만들어 둔 것이 있으면 MSA를 업로드할 수 있고, 그렇지 않은 경우면 자기가 알아서 PDB 의 아미노산을 추출해서 선택한 DB (위의 예에서는 UNIREF-90 -Uniprot db 중에서 상동성이 90% 이상 되는 것들은 중복이라고 보고 제거하고 모든 서열이 최소 10% 이상은 틀린 것들만 나오도록 redundancy를 줄인 db-를 선택함)에서 BLAST 를 쳐서 지정된 criterion 되는 넘을 선택한 다음 이것을 원하는 MSA 방법으로 MSA를 만든다.

이렇게 만들어진 MSA를 대상으로 rate4sites 라는 알고리즘을 돌려서, 원래 입력으로 넣은 PDB의 아미노산들이 MSA 에서 얼마나 conserve 되어있는지를 숫자화한다. 어차피 이것은 뒤에서 수동으로 돌려볼 때 다시 알아볼 것이다.

그러면 이런 화면이 나오고 어느정도의 시간이 걸린 후에 (서버 상태에 따라서 틀리겠지만 위의 예에서는 10분 정도?) 결과로 고고.

제일 위의 링크를 클릭하면 Jmol 이라는 자바 애플릿을 통하여 ‘그다지 이쁘지는 않지만’ 어쨌든 색칠이 된 단백질 구조를 살펴볼 수 있다.

여기서 보라색은 제일 보존이 잘된 부분, 하늘색으로 갈수록 보존이 안 된 부분. 물론 여기서 대충 보고 감잡는 것이야 상관없지만 아무래도 좀 안 예쁘니 마음에 안 든다. 일단 단백질은 예뻐야 된다능. 예쁜 것은 항상 옳습니다. 단백질 외모지상주의 돋네. 모든 데이터를 일단 다 받은 다음 이것을 PyMol에서 좀 분칠해 보자.

일단 다 받아부려

압축파일을 열러보면 이런 파일들이 나오는데, 이중에서 몇 가지만 살펴보면

MultiColored_msa.html 파일을 보면 conservation에 따라서 다르게 컬러링이 된 MSA가 나온다. 여기서 색깔은 역시 보라색은 conservation, 가장 자주 바뀌는 것일수록 하늘색.

여러가지 pdb가 나오는데 여기서 3bct_ATOMS_selection_With_ConSurf.pdb (“3bct” 부분은 사용한 pdb id에 따라서 틀려짐) 를 한번 텍스트 에디터로 열어보도록 하자. (PyMol이 아니고? 하실 분이 있지만 잠깐 기다려 보삼. 뭔가 확인해 볼 게 있어서 그러는 것임)

얼핏 보기에는 원본의 PDB 파일과 별 차이가 없어 보이나 몇 가지 차이가 있는데

– REMARK 부분의 주석이 다 싸그리 사라졌고
– 물분자나 Selenomethionine 등의 Hetero atom이 다 제거되었다
– 그리고 b-factor 컬럼이 1에서 9까지의 conservation score로 대치되었다.

일반적으로 단백질 결정학으로 결정된 구조에서 b-factor (Temperature Factor)는 해당 위치에 원자가 위치하고 있는 확률에 의해서 결정되는데, 이 factor의 숫자가 높을수록 그 위치에 원자가 정확히 위치할 확률이 낮아진다. 사실 단백질 결정학에서 구조를 표현할 때 사용하는 트릭 중의 하나는 b-factor 가 필요없을때는 해당 컬럼에 임의의 다른 정보를 치환하여 이것을 대신 표시하는 것인데, 여기서는 b-factor 대신 해당 위치의 아미노산이 얼마나 보존되어 있나의 정보를 넣어서 pdb 를 수정한 것이다. 이것을 응용하여 PyMol 에서는 b-factor 컬럼에 들어있는 아미노산의 보존수치를 이용하여 해당 아미노산에 다른 색을 칠하게 되는 것이다.

이제 PyMOL에서 3bct_ATOMS_selection_With_ConSurf.pdb 파일을 열어본다.

그다음에

hide all
show cartoon

이제 b-factor 컬럼에 들어있는 conservation score 를 이용하여 색을 칠해보자.

color-spectrum-b-factors 를 선택하면


이렇게 바뀜 ㅋ 여기서 빨강색으로 갈 수록 conservation이 높은 것, 파란색으로 갈수록 낮은 것.

show surface

표면을 보여주는 것이 좀 더 확실하게 볼 수 있다.

어떤가? 저 트위스트된 꽈배기(…)의 가운데 부분이 뻘겋게 칠해져 있다. 아마 여기가 제일 conservation 된 부분으로 생각된다. 아마 단백질 상호작용에서도 이 부분이 핫스폿이 아닐까? 한번 좀 있다가 살펴보고 지금은..

색깔이 마음에 안든다고? 색깔을 바꿔보자.

spectrum b, cyan_white_magenta

이제 아까 JMOL에서 본 것처럼 보라색이 가장 conservation, 하늘색이 가장 덜 보존된 형식으로 색상을 바꿔보았다. 이외에 다른 색상 형식으로 표현하려면

blue_green
blue_magenta
blue_red
blue_white_green
blue_white_magenta
blue_white_red
blue_white_yellow
blue_yellow
cbmr
cyan_magenta
cyan_red
cyan_white_magenta
cyan_white_red
cyan_white_yellow
cyan_yellow
gcbmry
green_blue
green_magenta
green_red
green_white_blue
green_white_magenta
green_white_red
green_white_yellow
green_yellow
green_yellow_red
magenta_blue
magenta_cyan
magenta_green
magenta_white_blue
magenta_white_cyan
magenta_white_green
magenta_white_yellow
magenta_yellow
rainbow
rainbow2
rainbow2_rev
rainbow_cycle
rainbow_cycle_rev
rainbow_rev red_blue
red_cyan red_green
red_white_blue
red_white_cyan
red_white_green
red_white_yellow
red_yellow
red_yellow_green
rmbc
yellow_blue
yellow_cyan
yellow_cyan_white
yellow_green
yellow_magenta
yellow_red
yellow_white_blue
yellow_white_green
yellow_white_magenta
yellow_white_red
yrmbcg

Spectrum b, 다음에 위의 색상패턴을 써 주면 된다. 가령 yellow_white_magenta를 써주면 제일 conservation이 낮은 데는 노랑에서부터 하양으로 치고올라가 보라가 제일 conservation이 높은 것으로 끝나게 된다.

동영상으로 보면 알기 쉬운데

즉 꽈배기의 안쪽 -.-;; 이 보라색이므로 주로 안쪽이 진화적으로 보존되어 있다는 것을 쉽게 알 수 있다.

그런데 여기서 잠깐. ‘왜 이 짓거리를 하고 있지? 나는 누군가 여기는 또 어딘가‘ 하실 분을 위하여 처음 이야기한 것으로 되돌아간다면,

단백질의 표면에서 진화적으로 보존된 부분은 ‘뭔가 중요한 것’ 을 하는 부분이다.
하는 드립을 다시 생각해 보자. 우리가 예로 사용된 단백질인 b-catenin의 경우에는 시그널링에서 중요한 역할을 하는 단백질로써 다른 단백질과 상호작용한다는 것이 (APC, ICAT, TCF-4…) 널리 알려져 있다. 그렇다면 저기서 보라색으로 색칠된 부분, 즉 이 단백질에서 잘 보존된 부분은 혹시 단백질 상호작용과 연관이 있지 않을까?

그런데 이미 b-catenin의 경우 상당수의 단백질 결합 구조가 이미 실험적으로 나와 있다. 우리가 지금 할 일은 이미 결정된 단백질 결합구조를 불러온 다음, b-catenin 에서 다른 단백질 붙는 부위가 과연 진화적으로 어떻게 보존되어 있는지를 살펴보는 것이다. 간단하죠?

PDB에서 1JPW (b-catenin/TCF-4), 1LUJ (b-catenin/ICAT), 1QZ7 (b-catenin/Axin), 2GL7(APC), 1TH1(Phosphorylated APC), 1M1E (ICAT) 등의 구조를 불러온다

fetch 1JPW
fetch 1LUJ
fetch 1QZ7
....

그 다음 structural align 을 하여 conservation에 의해 색칠한 beta-catenin에 각각의 complex를 정렬한다.

align 1JPW, 3bct_ATOMS_section_With_ConSurf
align 1LUJ, 3bct_ATOMS_section_With_ConSurf
....

그다음 각각을 cartoon으로 다시 그리고, 동영상으로 만든 결과를 보면

어떤가? 각각 노란색, 초록색, 파란색 등으로 되어 있는 b-catenin 과 결합하는 단백질 부위는 여지없이 ‘꽈배기의 안쪽’, 즉 conservation 으로 볼때 보라색으로 가장 보존된 영역을 중심으로 결합되어 있음을 알 수 있다. 특히 대부분의 단백질이 공통적으로 지나가는 ‘interaction hotspot’ 의 경우에는 완죤 보라색이다

위의 예에서는 이미 파트너와 결합구조가 알려진 단백질을 가지고 이런 분석을 했으니 어떻게 보면 ‘답을 미리 아는 상황에서 문제를 푼 셈’ (ㅋㅋ) 이지만, 만약 결합구조가 알려지지 않은 단백질에서 단백질 상호작용을 하는 부위를 예측하려고 할 때도 위와 같은 방법론을 사용하는 것도 꽤 유용한 방법일 것이다. 물론 표면이 보존되었다고 해당 부위가 반드시 단백질 결합의 핫스팟이라는 보장은 없긴 하지만, 적어도 추가 실험을 할때 (가령 mutagenesis를 한다든지) 일단 중요한 후보자리는 될 수 있을 것이기 때문이다.

자, 이제까지 consurf 서버를 이용하여 하나의 단백질에 대한 conservation surface 분석을 하는 것을 알아보았다. 그렇다면 수백개의 단백질을 대상으로 이런 분석을 자기가 하고 싶다고 하자. 이럴때는 어떻게 해야 하나? 석사과정 시켜서 하나씩 일일히 시킨다 말고. ㅋ

일단 단백질 구조를 받고, 해당하는 단백질에 대해서 Multiple Sequence Alignment를 만드는 것 까지는 했다고 치자. 이렇게 만들어진 Multiple Sequence Alignment 에 대해서 각각의 아미노산에 대해서 conservation score를 구하는 데는 다음의 툴을 사용한다.

rate4site

wget http://www.tau.ac.il/~itaymay/cp/rate4site.3.2.source.zip
unzip rate4site.3.2.source.zip

소스 받고 소스 디렉 이동

make
g++ -O3 -Wno-deprecated   -c -o AddLog.o AddLog.cpp
g++ -O3 -Wno-deprecated   -c -o NNiProp.o NNiProp.cpp
g++ -O3 -Wno-deprecated   -c -o NNiSep.o NNiSep.cpp
g++ -O3 -Wno-deprecated   -c -o Nni.o Nni.cpp
g++ -O3 -Wno-deprecated   -c -o aaJC.o aaJC.cpp
g++ -O3 -Wno-deprecated   -c -o allTrees.o allTrees.cpp
g++ -O3 -Wno-deprecated   -c -o allTreesSeparateModel.o allTreesSeparateModel.cpp
....

컴파일

그러면 rate4site라는 실행파일이 나오는데, 다음과 같이 실행


./rate4site -s catenin.aln
START OF LOG FILE

 =======================================================
 the rate for site project:                             
 Version: 2.01. Last updated 6.11.06                     
 Tal Pupko and his lab:     talp@post.tau.ac.il         
 Nir Ben-Tal and his lab:   bental@ashtoret.tau.ac.il   
 Itay Mayrose:  itayMay@post.tau.ac.il                  
 For program support, please contact Itay Mayrose       
 =======================================================


 ---------------------- THE PARAMETERS ----------------------------
seq file is: catenin.aln
output file is: r4s.res
rate inference method is: empirical Bayesian estimate
using a Gamma prior distribution with: 16 discrete categories
probablistic_model is: JTT
branch lengths optimization is ML using a gamma model

 -----------------------------------------------------------------
get Starting Tree Topology
#MSA diversity matrix
#Average pairwise distance= 0.905339
#lower bound = -0
#upper bound = 3.9941
#end of MSA diversity matrix
((tr_B4DL06_B4DL06_HUMAN_cD:0.000001,(tr_F1QGH7_F1QGH7_DANRE_Un:0.017280,(tr_F1RX81_F1RX81_PIG_Unch:0.032191,(2z6g_chainA_p003:0.000001,(3ouw_chainA_p001:0.000001,((sp_P14923_PLAK_HUMAN_Junc:0.205775,(tr_E3N1M2_E3N1M2_CAERE_CR:0.989430,(sp_Q18825_BAR1_CAEEL_Beta:1.156835,3c2g_chainA_p002:2.837263):0.243982):0.322198):0.073749,(tr_Q75WV7_Q75WV7_BRABE_Be:0.106455,(tr_B5THL1_B5THL1_SACKO_Be:0.103638,(tr_Q75WU5_Q75WU5_PARTP_Ar:0.101574,(tr_F4X7D1_F4X7D1_9HYME_Ar:0.079856,sp_P18824_ARM_DROME_Armad:0.073557):0.066150):0.059965):0.010124):0.028710):0.047350):0.044875):0.015882):0.014945):0.006105):0.000732,(sp_Q0VCX4_CTNB1_BOVIN_Cat:0.000253,tr_O42486_O42486_CHICK_Be:0.004780):0.000718,(tr_Q5R5L8_Q5R5L8_PONAB_Pu:0.000130,tr_Q76LW0_Q76LW0_MERUN_Be:0.002383):0.000546);
After Tree Topology
get Starting Branch Lengths And Alpha
Optimizing branch lengths and alpha...
# bestAlphaAndBBL::bestAlphaAndBBL iteration 0
# old L = -1.79769e+308	# new L = -13703.1
# new Alpha = 2.02229

즉 여기서는 catenin.aln 이라는 clustalw 형식의 MSA 파일이 있다고 가정하고, 이것을 -s 옵션으로 불러온다. 그러면 r4s.res 라는 이름으로 conservation score가 계산되어 나오는데

#Rates were calculated using the expectation of the posterior rate distribution
#Prior distribution is Gamma with 16 discrete categories

#SEQ: the amino acid in the reference sequence in one letter code.
#SCORE: The conservation scores. lower value = higher conservation.
#QQ-INTERVAL: the confidence interval for the rate estimates. The default interval is 25-75 percentiles
#STD: the standard deviation of the posterior rate distribution.
#MSA DATA: The number of aligned sequences having an amino acid (non-gapped) from the overall number of sequences at each position.

#POS SEQ  SCORE    QQ-INTERVAL     STD      MSA DATA
#The alpha parameter 1.58359
1    M    -1.3171  [-1.4789,-1.2984] 0.2163  16/18
2    A    1.5800   [0.4872,3.5176] 1.3364  14/18
3    T    0.9597   [-0.0078,1.8847] 1.2649  13/18
4    Q    1.7341   [0.4872,3.5176] 1.3779  13/18
5    A    1.7749   [0.8141,3.5176] 1.3698  12/18
6    D    0.3089   [-0.5551,0.8141] 1.2156  13/18
7    L    1.1486   [-0.0078,1.8847] 1.4492  13/18
8    M    2.4633   [1.2421,3.5176] 1.2209  13/18
9    E    0.8803   [-0.2078,1.8847] 1.3112  13/18
10   L    0.5953   [-0.2078,1.2421] 1.2068  13/18
11   D    2.8568   [1.8847,3.5176] 1.0415  13/18
12   M    1.3555   [0.4872,1.8847] 1.3022  14/18
13   A    1.2234   [0.2201,1.8847] 1.2408  15/18
14   M    1.3727   [0.4872,1.8847] 1.3369  15/18
15   E    3.2591   [3.5176,3.5176] 0.6750  15/18
16   P    2.9583   [1.8847,3.5176] 0.9594  15/18
17   D    1.0551   [0.2201,1.8847]
...

여기서 세번째 컬럼이 바로 conservation score. 높을수록 conservation 정도가 높음을 의미한다. 이것을 파싱하여 pdb를 읽어들인 후 pdb에 따라서 서로 다른 색을 칠하는 pymol script 를 만들어 보았는데

#!/usr/bin/python
#
#
#!/usr/bin/python
#
#
from Bio.PDB import *
import numpy as np
from math import sqrt
from matplotlib.backends.backend_pdf import PdfPages
import sys,re
from pylab import *


def makeGradient(RGB,nofgradient):
#
# 
#
    
    
    if nofgradient > 0 :
        (R,G,B) = RGB
        WR=255
        WG=255
        WB=255
        dR=float((WR-R))/float(nofgradient-1)
        dG=float((WG-G))/float(nofgradient-1)
        dB=float((WB-B))/float(nofgradient-1)
        print dR, dG,dB
        listofgradient=[]
        for x in range(0,nofgradient):
            listofgradient.append((int(R+dR*(x)), int(G+dG*(x)),int(B+dB*(x))))
     
    return(listofgradient)



def remove_hetero(singlechain):
#
# remove water and heteroatoms from chains
#
    p=[]
    for residue in singlechain:
        if residue.get_full_id()[3][0]==" ":
            p.append(residue)
    return(p)

if __name__=='__main__':

    try:
        pdb_filename=sys.argv[1]
        rate4site_filename=sys.argv[2]
        chain = sys.argv[3]
        pdb=pdb_filename.replace('.pdb','').upper()
        f=open(rate4site_filename)
        filecontent=f.readlines()
        searchstring="#The alpha parameter"
        match = False
        #
        # Regex for the parsing rate4site output
        #
        StartRegex = re.compile("^" + searchstring)
        LineRegex = re.compile("^(\d+)\s+(\w)\s+([\w\.\-]+)")                
        dsequence={}
        data={}
        seq=[]
        dat=[]
        pdf=PdfPages('res.pdf')
        
        #sequence is in list 'seq'
        #conservation data is in the list 'data'

        for line in filecontent:

            if not match :
                match = StartRegex.match(line)
            else :
                linedata = LineRegex.match(line)
                if linedata:
                    dsequence[int(linedata.group(1))]=linedata.group(2)
                    data[int(linedata.group(1))]=float(linedata.group(3))
                    seq.append(linedata.group(2))
                    dat.append(float(linedata.group(3)))
        
     
        data_array = np.zeros(len(data)+1)
        x = np.zeros(len(data)+1)
        seq = np.zeros(len(data)+1)
        for seqnum, value in data.items():
            data_array[seqnum]=value
            x[seqnum]=seqnum

        diff = data_array.max()-data_array.min()
        normalized = (data_array-data_array.min())/diff
        bar(x,normalized)
        pdf.savefig()
        pdf.close()
    
        structure=PDBParser().get_structure(pdb, pdb_filename)
        model = structure[0]
        protein_chain = remove_hetero(model[chain])

        fl=open('cons.pml','w')
        writePDB="/" + pdb + "//" + chain + "/"
        RGB=(255,255,0)
        gradient=makeGradient(RGB,10)
        colorlist=[] 
        
        for row, one in enumerate(gradient):
            (R,G,B) = one
            fl.write("set_color green%d = [%d,%d,%d]\n" % (row,R,G,B))
            colorlist.append("green%d" % (row))                    


        for residue in protein_chain :
            amino = residue.get_full_id()[3][1]
            s=normalized[int(amino)]
            if s > 0 and s =0.1 and s =0.2 and s =0.3 and s =0.4 and s =0.5 and s =0.6 and s =0.7 and s =0.8 and s =0.9 and s <= 1.0:
                rescolor=colorlist[9]
            fl.write("color " + rescolor + "," + writePDB + str(amino) + "\n")

        fl.close()
     except:
        print 'usage pdb.py  '
        sys.exit(1)    

대충 biopython 을 이용하여 pdb 파싱, pdb에서 water 등 헤테로아톰 제거하고, rate4site 출력파일에서 아미노산과 conservation 스코어 파싱해서 읽어낸 다음, cons.pml 이라는 이름으로 pdb 에 대한 색을 칠하는 (이전 방법처럼 b-factor를 이용한 트릭 없이) 스크립트를 생성하는 방식이다. 위의 예는 그냥 참고로 하여 rate4site 의 출력 파일을 파싱하여 원하는 분석을 수행하면 될 것이라고 생각한다. ㅋ


(아 몰라 쓰다가 귀찮아버렸음. 나중에 시간나면 업데이트하져 뭐..)

How to choose a good scientific questions

How to choose a good scientific questions

얼마전에 Mol.Cell에도 소개된 글을 발번역.

좋은 과학적 문제를 찾는 방법

유리 알론
Uri Alon

Dept. Molecular Cell Biology, Weizmann Institute of Science

좋은 과학적 문제를 찾는 것은 좋은 과학자가 되기 위한 필수불가결한 요소다. 그렇다면 좋은 과학적 문제란 무엇이고, 어떻게 선택해야 하나? 이 주제는 과학자 사이에서 그다지 노골적으로 이야기되는 문제는 아니다. 과학자란 사람들은 자기 자신이나 스승을 보면서 자신이 풀어야 할 과학적 문제 정도는 스스로 찾을 수준은 되어야 과학자라고 내세울 수 있기 때문이다. 이렇게 이 문제에 대한 논의는 부족한 관계로 일종의 공백이 생기는데, 가령 좋은 저널에 나올 수 있는 결과가 나올 문제라든지, 아니면 과학자로 취직을 하거나 테뉴어를 받을 수 있을 만한 문제는 어떻게 찾을 수 있을까? 하는 의문이 종종 제기된다.
이 글의 전제는 이 주제에 대한 토론이 우리가 하는 과학과 과학과 인간으로써의 삶의 질을 보다 증진시킬 수 있어야 한다는 것이다. 즉 여기서 말하는 ‘좋은 과학적 문제에 대한 선택’ 을 통해 우리가 재미있어할 수 있는 새로운 지식을 발견하고, 이를 통해 자아실현을 할수 있어야 한다는 말이다.

여기서는 내 자신, 나의 학생, 그리고 여러 동료 과학자에게 보탬이 된 과학적 연구 문제를 선택하는 일종의 기준에 대해서 이야기하고자 한다. 이러한 기준들은 과학자들에게 이런 주제를 가르킬 때 일종의 지침이 될 수 있을 것이라고 생각한다.

시작점 : 문제를 찾는 것은 일종의 양육과정.

연구실을 시작하는 목적은 무엇인가? 요즘 세태에서는 흔하게 나오는 대답은 대충 이런 것이 아닐까? “우리 랩의 목표는 최고수준의 논문을 최대한 많이 내는 겁니다” 그래서 연구비를 쳐묵쳐묵
그렇지만 이 글에서는 연구실의 목적을 좀 다르게 보고자 한다. “연구실이란 학생의 자질을 과학자와 인간으로써 최대화할 수 있는 양육환경으로써의 존재다.”

이러한 연구실의 가치를 어떻게 선택하는지는 매우 중요한데, 이러한 연구실의 핵심 가치라는 것은 명시적으로 이야기하지 않더라도 자연스럽게 연구실의 모든 결정에 영향을 미치기 때문이다. 연구실의 규모, 랩의 이미지, 언제 학생이 휴가를 가는지, 그리고 우리가 여기서 이야기할 주된 내용인 (연구실의 구성원들이 자신이 연구할)’과학적 문제를 어떻게 선택할 것인지’ 등의 문제들이 모두 연구실의 핵심가치에 의해 사실 결정된다는 것이다. 우리가 말하는 “양육환경” 으로써의 연구실에서는 우리의 과학적 문제를 선택하는 가장 중요한 기준은 학생들이 성장하고 스스로 동기부여를 할 수 있는 문제를 선택하는 것을 목표로 한다고 전제하겠다.

문제 선택 과정의 두가지 차원

과학적인 문제를 선택하기 위해서 일단 간단한 그래프를 이용하여 이야기를 풀어나가자. 두개의 축을 가진 그래프로 과학적 연구 문제의 선택 과정을 비유해 보겠다. 첫번째 축은 해당 연구과제의 실현가능성, 즉 문제가 어려운지 쉬운지 소요되는 시간으로 표현되는데, 이 시간은 당연히 연구자 개개인의 자질과 연구실 전체의 역량에 따라서 결정된다. 물론 여기서 겉으로 보기에는 쉬워 보이는 문제가 실제로는 매우 어려울 수 있고, 이론적으로는 어려워 보이는 문제는 현실적으로는 거의 불가능할 수 있다는 것을 잊지 말자.

두번째 축은 ‘흥미로움’이다. 여기서 말하는 ‘흥미로움’이란 즉 해당 프로젝트를 완수하면 얻을 수 있는 과학적 지식의 양 정도로 표현될 수 있다. 우리의 경우 기존에 잘 알려진 분야에 대한 연구보다는 미지의 영역을 개척할 수 있는 연구에 보다 중점을 둔다. 즉 여기서 과학적 문제는 우리가 현재 알고 있는 지식으로부터의 거리에 따라서 문제의 흥미로움이 정해진다. 즉 우리가 과학적으로 증명될 수 있는 지식이 많으면 많을수록 이러한 문제를 ‘흥미로운 문제’ 라고 규정하자.

다음 부분에서 ‘흥미로운 문제’를 결정하는 주관적인 요소에 대해서 이야기할 것이다. 그렇지만 우선 이런 그래프를 통해서 어떻게 문제를 선택하는지에 대해서부터 생각해보자.

여러가지 과학적 문제를 이런 그래프 위에서 살펴보았을때 현재 연구되는 문제 중의 상당수가 그다지 어렵게 수행될 수는 있지만 새로운 지식을 전달하는 면에서는 별로인 문제들인 것을 알 수 있다. 흔히 말하는 ‘따먹기 쉬운 낮은데 열린 과일’ 과 같은 존재다. 반면에 어렵고 별로 흥미롭지도 않은 프로젝트들도 많이 있다. 헬게이트 열렸네 -.-;; 반면에 한마디로 말해서 아주 엄청난 도전 과제인 문제들도 있다. 즉, 매우 어려운 문제지만 해결되면 우리의 과학에 대한 이해를 매우 증진시킬 수 있는 문제. 그렇지만 아마도 우리가 가장 좋아하는 문제라면 간단하게 해결될 수도 있지만 흥미로와서 인류의 지식을 크게 확장시켜 줄 수 있는 문제라고 할 수 있다.

아래 다이어그램은 문제를 선택하는 방법 중의 하나로써 파레토의 최적이론에 따라서 문제를 선택하는 것이다. 만약 문제 A가 문제 B보다 두가지 축 (흥미 및 실현가능성)에서 앞선다면 문제 B는 무시한다. 이러한 기준을 모든 문제에 역용하면 실현가능성과 흥미 둘 중 모두 나은 문제는 존재하지 않는다. 남은 문제들은 파레토 프론트에 존제한다.

이렇게 남아있는 문제 중 어떤 문제를 선택할까는 어떤 축에 가중치를 두느냐에 따라서 결정된다. 예를 들어서 갓 시작하는 대학원생이라면 쉬운 문제가 필요하다. 즉 문제를 성공적으로 해결함으로써 긍정적인 피드백이 빨리 올 수 있으며, 자신감이 증대되기 마련이다. 이런 문제는 우측 하단에 존재한다. 이러한 ‘흥미도는 그다지 높지 않지만 빨리 할 수 있는 쉬운 문제’ 를 완수한 다음에 대학원생으로써 수행하는 두번째 문제는 ‘흥미도’ 가 올라가는 쪽을 따라가는 것이 좋다. 포닥의 경우 오른쪽 위에 있는 프로젝트가 좋다. 즉 포닥의 경우에는 시간이 제한되어 있기 때문에 빨리 끝나면서도 흥미도가 높을 문제를 해결하는 것이 좋다. 말은 쉽지 그게 쉽게 될까나 만약 갓 시작하는 PI라면 최소한 10년 동안은 연구를 수행하면서 학생을 훈련시켜야 하므로 작은 프로젝트로 쪼개질 수 있는 일종의 그랜드 챌린지 성의 문제를 선택하는 것이 좋다. 따라서 과학자로써의 성장 단계에 따라서 최적의 문제는 위의 도표에서 보는 것처럼 이동한다고 생각하면 될 것이다.

문제를 선택할 때는 시간을 들여라

흔히 문제를 선택할때 하는 실수라면 당장 떠오르는 문제를 풀어보려고 바로 뛰어드는 것이다. 두 달 만에 할 수 있을 것 같은 문제도 2년 넘게 걸리는 게 보통이기 때문에, 너무 선택을 빨리하면 절망과 씁쓸, 멘붕을 맛보기 쉽상이다. 좋>은 문제를 선택하는데는 당연히 시간이 필요하고, 문제를 선택하는 과정에서 들이는 한 주 한주는 나중에 한달, 심지어는 몇 년의 시간을 절약해 주기도 한다

우리 연구실에는 새로온 대학원생과 포닥에게 적용되는 황금율이 있다. 석 달이 지나기 전에 프로젝트를 시작하지 마라. 석달 동안 새로운 대학원생이나 포닥은 문헌을 읽고 디스커션하고, 계획을 세우는데 보낸다. 일을 하는 것보다 가만히 있을때 집중이 잘 된다. 당연히 일을 안 하고 있으면 빨리 일을 시작하고 싶은 충동이 생기겠지만 규칙은 규칙. 석달 (가끔은 더 걸리기도 함)이 지난 다음에는 이제 본격적으로 일을 해도 된다는 마침표가 찍힌다. 이제 즉 매우 계획이 잘 된 프로젝트를 시작하게 된다.

당연히 계획 단계에 시간을 투자하는 것은 쉬운 일이 아니다. 물론 “빨리 결과내야 된단 말예요. 우리 시간낭비하지 말고 빨리 일 시작 합시다” 하는 불평이 나올수 있다. 계획에 시간을 들이는 것은 연구비가 부족하거나 그랜트 마감이 가까와졌을때는 특히 어렵다. 그럼에도 불구하고, 랩을 운영하는 어려움을 겪는 우리 모두에게 문제를 선택하는데 시간을 들이는 것은 나중에 결과적으로 큰 차이를 가지고 온다는 것을 명심하기 바란다.

흥미도의 주관성

이제 ‘문제의 흥미도’ 에 대해서 좀 더 깊게 살펴보자. 어떤 문제가 더 흥미있을지 정하는 것은 누가 정하나? 과학의 근본적인 속성 중 하나는과학자가 어떤 문제를 흥미롭게 느끼는 것은 지극히 주관적이고,개인적이라는 것이다. . 그러나 이러한 ‘주관성’은 가끔 판단이 힘들어질 때가 있는데, 대개 이러한 혼동은 두 가지 목소리가 섞일때 주로 생긴다. 즉 우리 주변에서 들려오는 큰 목소리, 즉 학회에서, 학과에서 들려오는 ‘이게 짱 흥미로운 핫토픽이예염‘ 하는 목소리이고, 다른 하나는 우리 가슴 속에서 들려오는 희미한 목소리로써 “이건 나한테 흥미있어 보이는데” 하는 목소리이다. 그러나 연구 과제의 흥미도의 순서를 매길 때 내 자신 내부에서 들려오는 목소리를 고려하는 것이 장기적인 관점에서 자신을 만족시킬 수 있는 길이다.

연구자자신의 목소리는 만약 자신을 잘 챙겨주는 멘터를 만나는 행운을 얻는다면 보다 강화되고,잘 인도되기 마련이다. 즉 과학자는 이러한 자기 자신의 목소리를 서포트해주는 환경이 필요하다. 내가 원하는 것이 과연 뭔지를 모른다면 어찌하나? 그럴 때는 이러한 질문을 자신에게 던져보자. “만약 내가 지구에 남아있는 단 한 사람이라면 과연 어떤 문제에 뛰어들 것인가?” 자신에게 솔직하면 할수록 실과의 타협을 줄이고 자신이 하고 싶은 연구를 할 수 있다는 것을 명심하기 바란다.

자기 자신의 목소리 중에서 어떤 것이 좋은 프로젝트가 될지를 알고 싶다면? 특정한 아이디어나 문제가 몇 달 후에, 아니 몇 년 후에도 계속 떠오르면 이런 것들은 대개 좋은 프로젝트의 시발점이 된다. 이렇게 지속적으로 머릿속에 떠오르는 문제들은 최근에 갑자기 떠오른 아이디어보다는 대개 좋은 프로젝트가 되는 가능성이 높다. 아이디어중 좋은 프로젝트인지 알 수 있는 테스트가 또 하나 있는데, 처음 만난 사람에게 자신이 하고 일을 설명해 달라고 했을때 각각의 프로젝트를 설명할때 이들이 어떻게 느껴지는가 하는 것이다.

우리 자신이 가진 지극히 ‘이기적이고 개인적인’ 의견을 통해서 선택된 문제가 결과적으로 좋은 과학을 낳는다는 것은 참으로 놀라운 일이다.자기가 스스로 선택한 문제는 동기부여를 만들고, 연구과정에서의 여러가지 지루한 과정을 보다 보람있게 만든다. 과학에서는 자기 자신이 관심을 가질 수 있는 문제일수록 당신의 청중을 관심가지게 만들 가능성이 많다. 네가 말하는데도 지겨운데 청중이 안자기를 바라면 바보

자기 표현

즉 연구 문제를 선택하는데 가장 중요한 ‘자기 내부의 목소리’ 의 본질을 한번 생각해 보자. 특정한 연구자가 흥미롭게 느끼는 연구 프로젝트는 개인적인 성향의 반영이고, 세계를 받아들이는 방식의 표현이다. 이러한 개인적 성향은 여러가지 개인 특이적인 가치와 연계되어 있다. 좋음, 아름다움, 진리 vs 나쁘고, 추잡하고, 틀린 것에 대한 믿음. 우리의 고유한 성향은 우리가 과학자로써 만들어 내는 연구 결과에 의해 표출된다. 이렇게 서로 다양한 과학자의 개성에 따라서 생성되는 다양한 과학적 스타일 및 문제의 다양성이 바로 창조적인 과학의 기본 요소인 것이다. 줄기줄기나노나노유행이라고 남들 하는것만 백날 해봐라

따라서 좋은 과학적 문제를 선택하기 위해서는 이러한 문제 선택과정이 연구자 자신의 세계관을 잘 반영하여야 한다. 그리고 멘터의 입장에 있는 사람이라면 박사과정 말년차나 포닥에 있는 사람들들이 그들 자신의 목소리를 키울 수 있도록 도와주어야 한다. 멘터는 학생이 과학에서 어떤 것을 좋아하는지, 과학 외에서 어떤 삶을 살고 있는지, 과학자가 되기로 한 계기는 무엇이었는지, 어떤 과학업적을 존경하는지 등등에 대해서 관심이 있어야 한다. 우리 교수들은 학생들이 말하는 것에서 특정한 패턴을 보곤 한다. 마치 바다 속의 돌맹이가 파도에 의해서 표면에서 식별가능하듯이… 학생이 미적 가치에, 아니면 추상적인 개념에 의해서 동기부여가 되는가? 아니면 특정한 이론에 구애받는지 아니면 일반적으로 믿어지고 있는 사실을 흔드는 걸 좋아하는지? 아니면 기술적인 문제를 좋아하는지 아니면 논리적 증명을 좋아하는지? 아니면 기초과학에 대해 흥미가 있는지 아니면 응용과학에 대해서 흥미가 있는지? 즉 이렇게 자신이 지도하는 학생에 대해서 이해하는 것은 멘터는 학생들이 자기표현을 잘 할 수 있는 프로젝트를 선택하는 것을 도와주는데 필수적이다. 앞에서 말한 것처럼 사람이 수행하는 과학 연구가 자기 자신의 의사 표현이라면 이전에는 단순한 ‘일’ 노가다 이었던 것이 활력이 넘치는 일이 될 수 있으며, 자기 스스로 알아서 하게 되며, 일 자체에 개인적인 의미가 담기게 된다. 따라서 과학 연구에 연구자의 ‘자기 표현’이 담기는 것은 대단한 연구를 할 수 있는 시금석인 셈이다.

연구의 과정

그래, 이제 연구 문제를 선택했다 칩시다. 그 다음에는? 우리가 연구를 시작하기 전에 연구가 어떻게 진행되었으면 하고 가지는 기대사항에 대해서 생각해 보자. 대개 연구를 시작하기 전에 연구에 대해서 가지는 일반적인 기대라면 A 지점에서 어떠한 문제를 가지면 정답이 있는 B로 가기 위한 최단 경로를 선택하는 것이다. 그러나 이러한 방식에는 문제가 있는데, 이것은 연구를 수행하는 학생을 목적으로 가는 일종의 도구로 간주하는 것이다. 여기에 더불어 이러한 관념을 가지고 있는 사람에게 있어서 과정에서 벗어나는 모든 것 (실패한 실험, 디프레스된 학생 등등등)은 용납될 수 없는 것이다.문제는 현실세계와 이상세계속에서서 가지는 연구에 대한 경로가 틀리기 때문이고, 이러한 과정에서 벗어나는 모든 것은 스트레스를 유발하기 마련이다. ㅠ.ㅠ

그렇지만 이런 과정 대신 실제 대개의 연구과제가 취하는 과정과 비스무레한 다른 연구 진행 방식을 생각해 보도록 하자. 이전과 마찬가지로 연구의 시작점인 A와 종점인 B가 있다.그러나 연구가 시작되자마자 연구는 B 경로로 가는 듯 하더니 꼬불꼬불 산으로 가기도 하고 제자리로 되돌아가도 한다. 계획된 실험은 안되고, 이전에 생각한 가정은 몽땅 다 틀렸고, 도대체 결과는 해석이 안되고 산으로 가요. ㅠ.ㅠ 나 졸업하는 거 맞아여 흐읅읅 이 시점에서 연구는 소위 ‘안개’ 라고 통칭되는 꿀꿀한 단계에 진입해 버렸다. ㅠ.ㅠ

이렇게 연구자는 안개 속에서 해메다가 지금 현재 손에 들고 있는 결과를 살펴보다가 새로운 문제를 발견한다. 이런 문제를 ‘C’ 라고 하자. 만약 문제 C가 원래 계획한 문제 B보다 보다 흥미롭거나 가능성이 더 높다면 B대신 C로 가도록 하자. 몇번 다시 산으로 가는 과정에 C라는 문제를 해결한다. 여기서 잠깐 숨을 멈추고 문제 해결을 한것에 대한 축배를 들고, 다음 문제에 들어가기 전에 쉬면서 생각을 하도록 하자. (3개월 룰 기억 ㅋ)

이러한’연구과정’ 에서는 연구를 하면서 흔히 겪는 ‘산으로 가는 과정’ 은 연구를 수행하는 과정의 핵심적인 요소가 된다. 여기서 멘터의 역활은 학생이 안개속에서 미지의 장소로 가는 입구를 찾을 수 있도록 도와주는 것이다. 이러한 과정을 거치면 새로운 문제 C가 존재하는지를 보다 폭넓게 찾을 수 있으며, 결과적으로 원래 계획된 문제 B로 가는 것보다 보다 가치있는 문제를 찾을 수 있게 된다. 이러한 관점에서 본다면 문제를 선택하는 것은 여러개의 다른 경로를 가진 정원에 들어가는 것 같다. 이렇게 이리저리 해메고 걷다보면 아름다운 장미가 있는 곳으로 통하는 샛길을 발견할 수도 있을테니까.

즉 1줄로 요약하면 시간을 들여서 (3달 규칙) 문제를 찾아야 되고, 그 문제는 자신의 스킬과 랩의 여건에 맞추어서 가장 해결하기 쉬우면서도, 다른 사람보다 자기 자신에게 가장 흥미로와야 한다는 것이다. 이렇게 고른 과학 연구 프로젝트에 자신의 정성을 다하여 자기 자아를 실현할 수 있도록 만들면 된다. 참 쉽죠?

Dicer의 이름 유래

Image

어떤 분이 이런 검색어로 이 블로그를 찾아들어오셔서…근데 아시다시피 그 내용은 읍다. ㅋ

‘바부자식 내가 원하는 내용도 하나 없고 꾸진 불로그네. 즐쳐드셈’ 하시겠져? 그래서 그걸 또 검색해 봐씀니다. 고갱님 구글 검색대행 돋네. 
위키피댜 http://en.wikipedia.org/wiki/Dicer

쭉쭉 내려가다 보면..
Dicer was given its name by a Emily Bernstein, graduate student in Greg Hannon’s lab at Cold Spring Harbor Laboratory, who first demonstrated the enzyme’s dsRNA “dicing” activity.

라져?

이 논문 링크 가봄. 


Image

이런 논문임. 2001년 자연 논문. CSHL의  Greg Hannon 랩에서 최초로 Dicer의 activity를 발견해따. <

Image

초파리 세포인 S2 Extract 를 가지고 RNA를 동강내는 활성을 조사해 보니까 그런 활성이 진짜 있드라.그래서 이런 활성을 가진 효소를 어떻게 찾아낼까? 고전적인 생화학 마인드를 가진 사람이라면 이 액티비티 따라 삼만리를 하면서 단백질 정제를 시도했겠지만, 이미 그 당시는 초파리 지놈이 다 알려진 지놈 시대. 그리고 Double Strand RNA 를 잘라내는 단백질은 대개 RNase III 패밀리의 것들. 이들은 ‘아마 이 효소도 RNase III 계열일 것이다’ 라는 가설을 세우고, 초파리의 RNase III 패밀리의 유전자들을 모두 S2 세포에서 발현하고 활성조사. 노가다 돋네 모르면 대학원생 시킵니다냐 그렇게 해서 발견된 유전자가 바로 이넘 레알 비하인드 스토리가 아마도 있을수 있겠지만 공식적인 버전의 이야기는 이러함.

Image

그런데 여기서 한가지 재미있는 것이 있는데 같이 miRNA 프로세싱에 참여하는 단백질 중의 하나인 Drosha의 경우에도 이미 얘들은 찍어놨다는 거지…그런데 왜 Drosha의 경우에는 여기서 활성을 못 발견해쓸까? 아마 유전자 하나만 익스프레션 해서 본 것인데 Drosha의 경우에는 Partner인 Pasha가 있어야 Microprocessor complex 로써 기능을 하니까 지금의 스크리닝 메소드로는 발견을 못해쓸듯. 여튼, 이 시점에서 Drosha 역시 중요한 타겟으로 간주되고 있었다는 것은 꽤 재미있는 일. (Drosha 가 miRNA biogenesis 에 관여한다는 것을 ‘발견’ 하셨다고 해서 이름을 날린 분이 있다는 것을 생각하면..ㅎㅎㅎㅎ) 

여튼 이래서 아 RNA를 Dicing 하는 엔자임이군 해서 Dicer 라고 이름 붙인 거임. 시시하져? ㅋ 여튼 그러함.

누군가 허탕치신 고갱님 한번만 다시 오시면 안잡아먹….-.-;; 근데 한글로 검색하니까 못찾은 거예염. 걍 dicer 라고만 치고 제일 첫항목 영문 위키피댜 가니 바로 원하는 내용 있두만. 한글로는 그런거 웬만하면 읍습니다. 이런 잉여스런 블로그가 아니고서는.

텍스트 툴로 pdb 뒤비기.

이 바닥의 대개의 데이터 파일이 다 그렇지만 PDB 파일 역시 텍스트 에디터로 열리는 텍스트 파일. 가끔 뉴비들이 “단백질 구조파일에서 원하는 내용만 잘라내려면 어떤 프로그램 써야해염? 프로그램이 읍써여 ㅠ.ㅠ” 이러는 거 보는데 별거 없다. 텍스트 파일이므로 그냥 에디터로 열어서 편집하면 됨. ㅎㅎ

그러나 몇가지 간단한 작업의 경우에는 에디터를 열 것도 없이 간단한 유닉스 명령어 조합으로 조작하는 것이 더 편하다. 자주 사용하는 몇 가지를 정리해 봄.

1. 특정한 chain만 따로 빼내기

grep ^ATOM pdb_file_name | awk '{if ($5=="chain_name") print} > new_file_name'

즉 예를 보면

grep ^ATOM 1i7x.pdb | awk '{if ($5=="C") print} > chain.pdb'

grep으로 줄 처음에 ATOM으로 시작되는 부분만을 찾아서 출력하고 이중, 5번째 필드의 내용 (chain) 이 “C”인 것만을 골라서 전체 출력. 그걸 chain.pdb에 저장한다.

ATOM   8398  C   SER C 663      86.657  -0.132   8.966  1.00111.08           C 
  $1    $2  $3   $4 $5 $6         $7

특히 awk의 경우에는 이렇게 테이블 형식으로 되어 있는 자료를 뽑는 것에는 갑이므로 이것을 잘 활용해 본다.

grep ^ATOM 1i7x.pdb | awk '{if (($5=="B") || ($5=="C")) print}' > chain.pdb

이번에는 B chain 또는 C chain을 뽑는다.

grep ^ATOM 1i7x.pdb | awk '{if (($5!="B")) print}' > chain.pdb

B Chain 만을 빼고 뽑는다. 즉 B Chain 만을 삭제한 셈.

2. 특정한 chain 을 다른 이름으로 바꾸기.

일단 이전에 PDB 파일 중의 Coordinate (실제 원자위치) 가 들어있는 부분의 형식을 살펴보자. 이렇게 몇번째 컬럼에 무슨 데이터가 들어가있는지가 미리 규약되어 있다는 것을 잘 알수 있다.

COLUMNS        DATA  TYPE    FIELD        DEFINITION
-------------------------------------------------------------------------------------
 1 -  6        Record name   "ATOM  "
 7 - 11        Integer       serial       Atom  serial number.
13 - 16        Atom          name         Atom name.
17             Character     altLoc       Alternate location indicator.
18 - 20        Residue name  resName      Residue name.
22             Character     chainID      Chain identifier.
23 - 26        Integer       resSeq       Residue sequence number.
27             AChar         iCode        Code for insertion of residues.
31 - 38        Real(8.3)     x            Orthogonal coordinates for X in Angstroms.
39 - 46        Real(8.3)     y            Orthogonal coordinates for Y in Angstroms.
47 - 54        Real(8.3)     z            Orthogonal coordinates for Z in Angstroms.
55 - 60        Real(6.2)     occupancy    Occupancy.
61 - 66        Real(6.2)     tempFactor   Temperature  factor.
77 - 78        LString(2)    element      Element symbol, right-justified.
79 - 80        LString(2)    charge       Charge  on the atom.

처음의 예에서는 awk의 필드구분 기능을 이용해서 간단하게 번호를 뽑았지만, 이번에는 실제 컬럼위치를 통해서 체인 번호를 바꿔보도록 하자.

grep ^ATOM 1i7x.pdb | awk '{if (substr($0,22,1)=="C") {print substr($0,0,21) "Z" substr($0,23)} else print $0}' > final.pdb

22번째 라인이 C면 이것을 Z로 바꾸고 나머지는 그대로 출력.

3. 아미노산 일부영역만 뽑아내기

grep ^ATOM 1i7x.pdb | awk '{if (($5=="B") && ($6>=630) && ($6<=650)) print}'> cut.pdb 

$6 컬럼에는 아미노산 번호가 들어 있는데 이를 가지고 영역을 조사하여 B Chain에서 아미노산 잔기 630에서 650까지 출력해내고 이를 cut.pdb에 저장

4. 단백질에서 물빼기

물먹는 하마를 쓰세요. 아님 말리시죠.

많은 결정구조에는 물분자가 모델 내에 들어가 있는데, 가령 Molecular Replacement 등으로 서치를 한다고 할때 물분자의 위치는 대개 틀릴테므로 물분자는 제거해 버리는 게 좋다. 이건 이렇게 하면 간단.

cat 1t44.pdb | awk '{if ($4!="HOH")  print}' > dehydrate.pdb

즉 cat 으로 1t44.pdb 를 출력해서 이것을 awk 에 보내고, $4 행 (분자) 가 HOH 가 아닌 넘만 출력해서 dehydrate.pdb에 저장하쇼 하는 명령이다. 참 쉽져? ㅋ

5. 쓸데없는 잡내용 빼기

pdb에 디포짓 되어 있는 내용중에는 사실 벼라별 쓰잘데 없는 내용이 REMARK 필드에 다 들어있다. 물론 참고로 있으면 좋지만 아 이런거 다 필요읍 할때는 위의 물빼기와 마찬가지로

cat 1t44.pdb | awk '{if ($1!="REMARK")  print}' > remarkless.pdb

즉 첫째 필드 ($1) 의 내용을 검사해서 이것이 REMARK’가 아니면’ 출력을 해줌.

비슷한 예로

cat 1t44.pdb | awk '{if ($1!="ANISOU")  print}' > remarkless.pdb

ANISOU 필드 제거

6. 정보 추출

가령 PDB 파일을 한 200개 받아놨는데 각각의 최대 resolution 이 얼마인지 알고 싶다면? 물론 pdb 파일 열어서

REMARK   1  REF    CELL(CAMBRIDGE,MASS.)         V.  90   871 1997              
REMARK   1  REFN                   ISSN 0092-8674                               
REMARK   1  DOI    10.1016/S0092-8674(00)80352-9                                
REMARK   2                                                                      
REMARK   2 RESOLUTION.    3.00 ANGSTROMS.                                       
REMARK   3                                                                      
REMARK   3 REFINEMENT.                             

여기 보면 RESOLUTION 나오니 이거 일일히 보고적어도 되겠지만, 200개에 대해서 다 하려면 깝깝. 석사 1학기 시키세여 쿨하게

이럴때는 이렇게 하면 된다.

grep "^REMARK   2 RESOLUTION." *.pdb | awk '{print substr($1,0,4) "\t" $4}'

그러면 이런 테이블이 샥 나온다. 물론 해당 PDB가 pdb에 정상적으로 deposit 되어 REMARK가 들어있는 것에 한함. 자기가 구조풀어놓고 PDB에 디포짓하지도 않아놓고 내노라면 곤란. -.-

1i7x	3.00
1jpp	3.10
1s1h	11.70
1t44	2.00
1ux4	3.3
2a3z	2.08
2cg9	3.1
2q97	2.50
2v51	2.35
2v52	1.45
2yle	1.80
2z6h	2.20
3ci5	1.70
3rp0	3.00
3ryl	3.10
3seo	2.31

grep으로 모든 pdb에 대해서 resolution 다 찾고, awk 으로 결과 약간 필터링해주면 이렇게 결과 나온다. 참 쉽져? ㅋ

각각의 pdb가 무슨 구조인지 보고 싶다면?

grep "^TITLE" *.pdb | awk '{if (substr($0,19,1)==" ") {print substr($0,1,4) "\t" substr($0,20)} else {print "\t" substr($0,21)}}'

이렇게 때리면

3iq2	HUMAN SORTING NEXIN 7, PHOX HOMOLOGY (PX) DOMAIN                      
3kgf	THE STRUCTURE OF 3-DEOXY-D-ARABINO-HEPTULOSONATE 7-PHOSPHATE SYNTHASE 
	FROM MYCOBACTERIUM TUBERCULOSIS COMPLEXED WITH PHENYLALANINE AND     
	TRYPTOPHAN                                                           
3klt	CRYSTAL STRUCTURE OF A VIMENTIN FRAGMENT                              
3ky9	AUTOINHIBITED VAV1                                                    
3kyc	HUMAN SUMO E1 COMPLEX WITH A SUMO1-AMP MIMIC                          
3l2j	DIMERIC STRUCTURE OF THE LIGAND-FREE EXTRACELLULAR DOMAIN OF          
	THE HUMAN PARATHYROID HORMONE RECEPTOR (PTH1R)                       
3lge	CRYSTAL STRUCTURE OF RABBIT MUSCLE ALDOLASE-SNX9 LC4 COMPLEX          
3llp	1.8 ANGSTROM HUMAN FASCIN 1 CRYSTAL STRUCTURE                         
3lue	MODEL OF ALPHA-ACTININ CH1 BOUND TO F-ACTIN                           
3lwb	CRYSTAL STRUCTURE OF APO D-ALANINE:D-ALANINE LIGASE (DDL)             
	FROM MYCOBACTERIUM TUBERCULOSIS                                      
3m1f	CROSSLINKED COMPLEX OF ACTIN WITH FIRST W DOMAIN OF VIBRIO            
	PARAHAEMOLYTICUS VOPL                                                
3mfp	ATOMIC MODEL OF F-ACTIN BASED ON A 6.6 ANGSTROM RESOLUTION CRYOEM MAP 
3mjh	CRYSTAL STRUCTURE OF HUMAN RAB5A IN COMPLEX WITH THE C2H2 ZINC FINGER 
	OF EEA1                                                              
3mlf	PUTATIVE TRANSCRIPTIONAL REGULATOR FROM STAPHYLOCOCCUS AUREUS.        
3mn7	STRUCTURES OF ACTIN-BOUND WH2 DOMAINS OF SPIRE AND THE IMPLICATION FOR
	FILAMENT NUCLEATION                                                  
3mpx	CRYSTAL STRUCTURE OF THE DH AND PH-1 DOMAINS OF HUMAN FGD5            
3mwb	THE CRYSTAL STRUCTURE OF PREPHENATE DEHYDRATASE IN COMPLEX WITH L-PHE 
	FROM ARTHROBACTER AURESCENS TO 2.0A                                  

요런 식으로 나온다.

7. pdb에서 sequence 추출

물론 이것도 awk 이나 기타 스크립트로 짤 수 있겠으나 원라인 이상이 될 것 같으므로 그냥 쿨하게(…) phenix 에 있는 phenx.print_sequence를 쓰기로 하자. 어차피 이런 짓거리가 필요한 사람이라면 phenix 정도는 깔려 있을테니.

phenix.print_sequence 1t44.pdb
>1t44.pdb|Chain=G
EHPEFLKAGKEPGLQIWRVEKFDLVPVPTNLYGDFFTGDAYVILKTVQLRNGNLQYDLHYWLGNECSQDESGAAAIFTVQ
LDDYLNGRAVQHREVQGFESATFLGYFKSGLKYKKGGVASGFKHVETQEKNPLPSKETIEQEKQ
>1t44.pdb|Chain=A
TALVCDNGSGLVKAGFAGDDAPRAVFPSIVGRPDSYVGDEAQSKRGILTLKYPIEHGIITNWDDMEKIWHHTFYNELRVA
PEEHPTLLTEAPLNPKANREKMTQIMFETFNVPAMYVAIQAVLSLYASGRTTGIVLDSGDGVTHNVPIYEGYALPHAIMR
LDLAGRDLTDYLMKILTERGYSFVTTAEREIVRDIKEKLCYVALDFENEMATAASSSSLEKSYELPDGQVITIGNERFRC
PETLFQPSFIGMESAGIHETTYNSIMKCDIDIRKDLYANNVMSGGTTMYPGIADRMQKEITALAPSTMKIKIIAPPERKY
SVWIGGSILASLSTFQQMWITKQEYDEAGPSIVHRKCF
>1t44.pdb|Chain=G
??
>1t44.pdb|Chain=A
??

8. Polyalanine Model

가끔은 단백질의 Side Chain을 몽땅 알라닌으로 치환한 모델이 필요할 때가 있다. 가령 시퀀스 상동성이 떨어지는 동일한 폴드를 가진 단백질을 가지고 Molecular Replacement 를 돌릴 때라든가..물론 여기에 쓰는 전용 프로그램이 있지만 이렇게 해도 간단하게 가능하다.

grep "^ATOM" 3fog.pdb | awk '{if (($3=="CA") || ($3=="N") || ($3=="C") || ($3=="O") || ($3=="CB")) { print substr($0,0,17) "ALA" substr($0,21)}}' > ala.pdb

오늘은 이것만. 나중에 생각나면 더 업데이트 하게씀. 없음 말구.

단백질 내에서 흐느적거리는 부분을 찾는 방법들 – 2

이제 실제 단백질을 하나 가지고 기존에 개발된 툴들을 가지고 단백질 내에 있는 흐느적거리는 부분들의 위치를 어떻게 찾아내는지를 알아보기로 하자.

오늘 설명에 쓸 단백질은 바로 이거.

>;;sp|O00401|1-505
MSSVQQQPPPPRRVTNVGSLLLTPQENESLFTFLGKKCVTMSSAVVQLYAADRNCMWSKK
CSGVACLVKDNPQRSYFLRIFDIKDGKLLWEQELYNNFVYNSPRGYFHTFAGDTCQVALN
FANEEEAKKFRKAVTDLLGRRQRKSEKRRDPPNGPNLPMATVDIKNPEITTNRFYGPQVN
NISHTKEKKKGKAKKKRLTKADIGTPSNFQHIGHVGWDPNTGFDLNNLDPELKNLFDMCG
ISEAQLKDRETSKVIYDFIEKTGGVEAVKNELRRQAPPPPPPSRGGPPPPPPPPHNSGPP
PPPARGRGAPPPPPSRAPTAAPPPPPPSRPSVAVPPPPPNRMYPPPPPALPSSAPSGPPP
PPPSVLGVGPVAPPPPPPPPPPPGPPPPPGLPSDGDHQVPTTAGNKAALLDQIREGAQLK
KVEQNSRPVSCSGRDALLDQIRQGIQLKSVADGQESTPPTPAPTSGIVGALMEVMQKRSK
AIHSSDEDEDEDDEEDFEDDDEWED

대략적으로 이런 순서로 디벼보도록 하자.

1. ‘안 흐느적거리는 부분’ 파악

단백질 전체는 아닐지라도 단백질에서 폴딩되어 있는 부분들의 상당수는 이미 구조가 나와 있거나, 상당한 상동성을 가진 다른 단백질의 구조가 나와 있다.
가장 좋은 것은 실험적으로 구조가 규명된 부분들이 어디인지를 파악하는 것이다. 물론 구조가 나와 있지 않은 부분이 다 흐느적거리는 부분이라고는 할 수 없고, 아직 미지의 3차구조를 지니고 있기도 하겠지만, 일단 이것이 첫걸음.

2. 단백질 2차 구조 예측

요즘의 단백질 2차 구조 예측의 정확도는 특정 아미노산 위치 기준으로 약 70-80% 을 상회한다. 즉. 대충 찍어도 거의 맞는다는 이야기.

3. Multiple Sequence Alignment

2차 구조 예측이건, 흐느적 예측이건 간에 일단 닥치고 homolog를 모아서 비교해 보는 것이 최우선이다.

4. Low complexity Region 파악

‘ㅍㅍㅍㅍㅍㅍ’ ‘ㅋㅋㅋㅋㅋㅋㅋ’ 하는 초성체 단순반복부분을 파악해서 형광펜을 친다.

5. HCA (Hydrophobic Cluster Analysis)

앞의 글에서도 잠깐 언급했지만 단백질이 제대로 폴딩되기 위해서는 친수성 잔기와 소수성 잔기가 골고루 분포되어 있기 마련이다. 따라서 3차 구조를 제대로 형성하는 부분에서는 소위 ‘Hydrophobic Cluster’가 존재하는데, 이런 것의 존재여부를 통해서 흐느적거리는 부분을 꽤 정확히 파악할 수 있다.

6. 복수의 ‘흐느적 예측’ 패키지 조사.

여러가지 원리를 이용한 ‘흐느적 예측’ 웹서버들이 시중에 많이 존재한다 그럼 처음부터 그거 하나 링크 던져주면 간단한 거 아니었냐 하겠지만 그러면 재미도 읍고 일단 배우는게 읍습니다. 고갱님. 이런 것들의 내부원리를 약간 들여다보고, 몇개를 동시에 돌려본다. 이바닥의 모든 ‘예측’ 이 다 그렇듯이 서버 하나 슥 돌려서 나온거 이게 맞는거임 ㅋㅋㅋ 하다가 나중에 개피보는 경우 많다. 점이나 궁합은 항상 세 군데는 보러가야져

그래서 오늘은 한가지 방법에 대해서만 알아보기로 하자. 원래는 좀 더 마니 쓰려고 했는데 쓰다가 시간다간다. 논문도 아니고. -.-;; 따라서 일단 퍼블리시부터.

1. 구조 정보를 이용하여 ‘안 흐느적거리는 부분’ 파악

어떻게 하면 자신의 관심 단백질에 있는 영역 중 어떤 부분이 구조가 규명되었는지, 아니면 아미노산 서열 상동성을 가지는 비슷한 단백질의 구조가 결정되었는지를 알 수 있을까? 가장 간단한 방법은 역시 BLAST 등과 같은 서열 유사성 검색 프로그램을 사용하여, pdb 에 디포짓된 이미 실험적으로 결정된 단백질을 db로 하여 검색해 보는 것이다.

그러나 단백질 구조의 경우 일반 BLAST(PSI-BLAST가 아닌)와 같은 서열 – 서열 데이터베이스 검색에 의해 감지되기 힘들 정도로 상동성이 낮은 경우에도 거의 동일한 구조를 가지는 경우가 허다하게 있으며, 따라서 BLAST보다는 Profile 을 이용한 방법으로 검색하는 것이 좀 더 낮은 서열 상동성을 가진 구조를 검색해보는데 유리하다.

이러한 Profile Based 검색으로 최근 가장 각광받고 있는 것이 HHpred 라는 것인데, 이를 이용하여 미지의 단백질 내부에서 구조가 규명된 homolog가 있는지를 검색하는 방법을 알아보자.

걍 시퀀스 붙여넣구 고고. 검색대상은 가장 최신의 PDB DB

조낸 열심히 HMM 프로파일 뒤지고 이씀 카는데 일단 기다려봄.

좀 기다려면..

올ㅋ 결과느님 출현 결과느님 링크는 여기

각각의 PDB ID (1mke…뭐 이런식으로 되어 있는 부분. 뒷부분은 해당 PDB 구조에서 단백질 체인 번호) 가 시퀀스에서 해당 구조와 상동성이 있는 부분에 따라서 별도로 마크되어 있음. 적색으로 갈수록 신빙성이 높은 것, 청색으로 갈수록 신뢰성이 떨어지는 것.


BLAST를 돌렸을때처럼 E-value 가 적은 순서에 따라서 alignment의 신빙성이 높다고 보면 됨.

뭐 이건 해당 시퀀스에 대한 구조이므로 100% alignment가 일치하는 것은 당연한 것이고, 해당 부분의 2차구조 (H:Helix, E:Sheet, C:Random Coil) 의 예측과 실제 구조에서 뽑은 2차구조 (dssp라고 나와 있는 부분) 도 비교해 볼 수 있다.

“그렇다면 이렇게 구조가 검색되는 부분은 안 흐느적거리는 부분이겠네요?”라고 물어보실 분도 있겠지만, 꼭 그런 것은 아니라는. PDB에는 결정구조뿐만 아니라 NMR 구조도 올라와 있으며 흐느적 부분에 대한 정보는 대개 나오지 않는 결정구조에 비해서 NMR의 경우에는 특정 부분이 열라 흐느적하다라는 정보까지 들어 있는 관계로, NMR 구조가 매핑되어 있는 경우에 정확한 ‘안 흐느적’ 경계를 살펴보기 위해서는 해당 구조를 한번 들여다 보는 게 좋다.

PyMOL을 이용하여 제일 첫빠따로 나오는 구조인 1MKE를 열어보면

PDB가 로딩될때 메시지창을 잘 보면
총 21개의 모델로 이루어진 앙상블임을 알수 있고

밑의 버튼에서 플레이를 지긋이 눌러주시면..

흐느적 돋네. -.-;;; NMR은 궁극적인 흐느적 찾기 실험수단임을 잘알수 있다.

즉, 오늘은 사실 예측도 아니고, 기존에 실험적인 방법으로 흐느적거리는지, 안 흐느적거리는지 파악된 부분에 대한 정보를 이용하여 ‘안 흐느적 거리는 부분’ 부터 파악하는 것이라고 볼 수 있다. 그렇다면 ‘진짜로 흐느적거리는’ 부분은 어떻게 ‘실험 없이’ 찾을 수 있겠나? 그건 다음에…레알. ㅋ

Current Topics in Genomic Analysis 2012

NIH에서 13주에 걸쳐 진행되는 강좌인듯. 이것만 다 공부하면 적어도 현재 지노믹스 관련 내용에 대해 무식하다는 이야기는 안 들을듯.그러나 이것만 다 들을려도 토나올듯. ㅠ.ㅠ

강의자료도 다 여기 있긔

The Genomic Landscape circa 2012,Eric Green, NHGRI

Biological Sequence Analysis I, Andy Baxevanis, NHGRI

Genome Browsers,Tyra Wolfsberg, NHGRI

Biological Sequence Analysis II,Andy Baxevanis, NHGRI

Regulatory and Epigenetic Landscapes of Mammalian Genomes,Laura Elnitski, NHGRI

Next-Generation Sequencing Technologies – Elaine Mardis (2012)

Introduction to Population Genetics,Lynn Jorde, University of Utah

Genome-Wide Association Studies,Karen Mohlke, University of North Carolina

Pharmacogenomics,Howard McLeod, University of North Carolina

Large-Scale Expression Analysis,Paul Meltzer, NCI

Genomic Medicine,Bruce Korf, University of Alabama at Birmingham

Applications of Genomics to Improve Public Health – Colleen McBride (2012)