본문 바로가기

생명의 철학

『눈먼 시계공』의 장난감 모형, Biomorph의 진화시뮬레이션 (2003.1)

 

『눈먼 시계공』의 장난감 모형

Biomorph의 진화 시뮬레이션

 

 

《Blind Watchmaker》 Ver.1 다운받기


 
《Blind Watchmaker》 Ver.2 다운받기

 

 

1. 다윈의 자연선택

 

환경과 생물체의 몸은 자물쇠와 열쇠의 관계에 있다. 몸은 환경에 맞춰 직조되어 있다. 생명체는 몸을 어떻게 환경에 짜맞출 수 있었을까? 마치 재단사가 몸의 치수를 재고 거기에 맞춰 옷을 맞추듯이 생명체는 자신이 몸담을 환경을 스스로 스크린하고 거기에 맞춰 자신의 몸을 만든 것일까? 라마르크(Lamarck)는 그렇게 생각했다. 그에 의하면 어떤 기관을 계속 사용하게 되면 그 기관 자체가 변하게 된다. 예를 들어 기린의 경우에는 목을 길게 늘이면 목이 점차 길어지게 된다는 것이다. 후 세대는 앞 세대로부터 새로 얻어진 길이를 물려받는다. 그러나 다윈은 여러 다른 특성을 가진 개체 가운데 우연히 환경에 맞는 것이 선택되었을 뿐 생물체가 환경에 자신을 맞춘다는 견해에 반대했다.

라마르크와 다윈의 근본적 차이는 "변이"(variation)의 기원에 있다. 라마르크에서 변이는 동물이 그 기관을 계속 사용한 결과이다. 그러나 다윈에서 변이는 무작위적으로 출현한다. 그 주인공의 의도나 목적과는 아무 상관이 없다. 그냥 다양한 변형들을 쏟아낸다. 그 가운데 어떤 것은 자손을 남김으로서 다음 세대에 전달되고 또 어떤 것은 자손을 남기지 못해 소멸한다. 다윈에 의하면 기린의 목이 길어진 것은 목이 긴 기린만이 살아남아 그 유전자를 후손에게 전달했기 때문이다. 목이 짧은 기린을 멸종시키고 긴 기린을 살아남게 한 것은 긴 기린에 유리하게 된 자연환경이다. 기후가 건조해져 초목이 말라가고 관목의 높은 가지의 잎만이 먹을 수 있는 유일한 먹이라고 생각해보자. 목이 짧은 기린은 먹이를 얻지 못해 굶어죽지만 긴 기린은 관목의 잎을 뜯을 수 있기 때문에 살아남을 수 있다. 기린의 목이 길어진 것은 목을 사용한 결과가 아니고 목이 긴 놈만이 살아남았기 때문이다. 유능한 농부는 각 세대에서 특정한 개체만을 선택해서 교접시킴으로서 특정 형질의 발현을 유도해 간다. 이것을 인위선택이라 부른다. 야생의 세계에서 이 역할을 "자연"이 한다는 점에서 그는 이것을 "자연선택"(natural selection)이라고 불렀다.

자연선택은 특정 형질을 걸러내는 필터이며 이것이 작동하기 위해서는 우선 다양한 변이의 출현이 그 선행조건이 된다.

내 목이 길다고 해도 동료 기린의 목이 더 길다면 나는 상대적으로 불리해진다. 목이 긴 기린들 무리에서 더 긴 목을 가진 기린이 있다면 그 기린은 생존상의 잇점을 누릴 것이다. 그래서 목이 점점 더 길어지는 추세가 생겨난다. 이것은 목의 길이가 몸에 부담이 되는 임계점에 도달할 때 까지 그 경쟁은 계속된다. 이 과정에서 보통의 길이의 목을 가진 집단과는 이제 완전히 구분되는 새로운 종-기린-이 출현한다.

이것이 "누적선택"(cumulative selection)인데 도킨스는 이 누적선택을 시뮬레이션할 수 있는 컴퓨터 프로그램을 만들었다. 이것이 그의 저서 『눈먼 시계공』(Blind Watchmaker)에서 소개하고 있는 《Blind Watchmaker》라는 소프트웨어이다.

《Blind Watchmaker》는 1986년 책이 출판되었을 때 나온 version 1과 그 뒤 2000년 SPA에서 나온 version 2가 있다. 버전1은 도스용(Mac용도 있음)이고 버전2는 윈도우용(Mac용도 있음)이다. 버젼1에서 바이오모프는 9개의 유전자로 되어 있다.(『눈먼 시계공』에서 다루고 있는 것도 9개이다.) 그러나 버전2는 10개를 추가하여 19개의 유전자로 되어 있고 계통도를 비롯한 몇가지 기능들이 추가되어 있다. 이하의 설명은 버전2를 기준으로 했다. 버전1은 프리웨어이다. 그러나 버전2는 상업용으로 가격은 25파운드이다. 위의 사이트에서 데모판을 다운받을 수 있는데 몇가지 기능이 없고 20분이 경과하면 자동으로 프로그램이 종료된다.

 

 

2. 《Blind Watchmaker》 맛보기

 

다음은 《Blind Watchmaker》의 메인화면이다.

《Blind Watchmaker》를 구동시키면 15개의 박스가 뜨고 그 안에 약간씩 다른 바이오모프들이 있을 것이다. 그 가운데의 붉은 선으로 표시된 박스가 있다. 그 박스를 클릭하면 주변의 15개의 박스 속의 바이오모프가 업데이트된다. 이것은 붉은 선 속에 들어 있는 바이오모프의 후손들이다. 그 가운데 아무거나 마음에 드는 것을 클릭해보라. 그것이 중앙박스로 이동하면서 다시 거기서 나온 후손들이 다음 화면을 채운다. 이것의 생물학적 의미는 쉽게 이해할 수 있을 것이다. 15개의 박스의 바이오모프는 중앙의 박스의 바이오모프의 약간씩 변이된 후손들이다. 그 가운데 어느 것을 선택함으로써 여러분은 선택적 육종을 행한 것이다. 이것을 계속 반복함에 따라 새로 만들어지고 있는 바이오모프는 처음과는 상당히 달라져 있을 것이다. 내가 육종해온 과정을 알고 싶으면 메뉴의 Fossils→Fossil History를 클릭해 보라.

이 육종을 컴퓨터가 대신할 수도 있다. 메뉴의 Evolve→Repeat 또는 메뉴 가장 우측의 Repeat 단추를 클릭하라. 멈추고 싶으면 Esc키를 누르든지 Repeat단추를 다시 클릭하라.

특별한 형질을 선택함으로써 품종을 개량시켜가는 것을 육종(breeding)이라 한다. 이것은 어떤 특정 형질을 "적극적으로"(positively) 만들어 내지는 못한다. 다만 여러 형질들이 주어지면 그 가운데 어느것을 "소극적으로"(negatively) 선택할 수 있을 뿐이다. 그런 의미에서 이 품종개량의 방식은 상당히 제한적이다. 반면 유전자조작(gene engineering)은 형질 자체를 직접 바꾸는 것이다. 더 이상 바람직한 변이의 발현을 기다릴 필요가 없다. 직접 그러한 변이를 만들어내면 된다. 전자가 농부들의 전통적인 육종의 방식인데 대해 후자가 유전공학회사들의 유전자 조작방식이다.

이 소프트웨어도 육종의 방식과 함께 바이오모프의 형질의 발현을 기다리지 않고 바이오모프를 여러분들이 직접 디자인할 수 있는 기회를 제공한다. 조작을 원하는 바이오모프를 클릭해서 중앙에 갖다놓고 Evolve→Engineer를 클릭하면 된다. 그러면 조작대상이 되는 바이오모프만 화면에 뜰 것이다. 메뉴의 바로 아래에 보면 -10, -10, -15 ...등 수치가 들어있는 박스가 있을 것이다. 그 박스의 아무곳에나 갖다대고 마우스를 클릭해보라. 오른쪽을 클릭하면 수치가 늘어나고 왼쪽을 클릭하면 수치가 줄어들 것이다. 그 수치에 따라 화면의 바이오모프의 형태가 바뀔 것이다. 이것이 바로 바이오모프의 유전자들이다. 모두 9개인데 그 외 회색으로 된 박스 10개가 보일 것이다. 이것은 버전2에서 부가된 것이다. 회색 박스의 첫번째 것에 마우스를 대고 왼쪽을 클릭해 보라. 한번 누를 때 마다 몸통이 복사되어 붙을 것이다. 전체로 보면 여러 체절로 된 노래기와 같은 벌레와 닮았다. (유전자에 대해서는 조금후 상술)

메뉴의 Evolve의 중간에 Repeat와 Hopeful Monster가 있다. Engineer를 선택하면 Hopeful Monster가 활성화된다. Breed에서 변이는 아주 제한적이며 변이의 폭도 좁다. 부모와 자식의 차이 정도이다. 그러나 이 미세한 차이라도 누적적으로 축적되면 긴 시간 후에 큰 차이를 만들 수 있다. 반면 Hopeful Monster는 변이의 제한도 없고 따라서 변이의 폭도 넓다. Hopeful Monster를 선택한 다음 Repeat를 클릭해보라. 전체 유전자 공간을 무작위적으로 돌아다니기 때문에 앞서 세대와는 아무 관계가 없는 바이오모프들이 생성하고 소멸한다. 유전자 값이 계속해서 바뀌면서 명멸하고 있는 것을 볼 수 있다.

 

바이오모프 모음

 

 

3. 유전자

 

바이오모프의 게놈은 19개의 유전자로 되어있다. 이것은 다시 두 그룹으로 나뉘는데 처음 9번째 까지는 바이오모프의 구조를 조절하는 표준유전자(stadard genes)이고 10번째에서 19번째는 특수유전자(special genes)이다. 후자는 버전2에서 추가된 것이다.

아래 표는 유전자와 그 유전자에 대응하는 형태적 특성을 보여주고 있다.

 

 

10번째 유전자는 바이오모프의 체절의 수를 조절한다. 바이오모프가 체절을 갖게되면 각 체절들은 똑같은 크기를 가질수도 있고 점차 커지거나 작아질 수 있다. 이것을 조절하기위해서 또 하나의 제어변수가 필요한데 이것이 체절의 크기의 증감을 조절하는 구배(gradients)이다.

 

6개의 체절을 가진 바이오모프이다. 좌측의 바이오모프는 체절의 크기가 같은 데 대해서 우측의 것은 (꼬리에서 머리로) 체절이 점점 커지고 있다. 전자는 구배가 0이며 후자는 +이다. 체절이 점차 작아진다면 -가 될 것이다. 구배가 - 0 + 어느것인지를 나타내는 것이 메뉴판 바로 아래의 나라비선 막대들이다. 셋째 유전자의 상단을 보면 전자는 똑같은 크기의 막대들이 나라비서 있다. 이것은 구배가 증가도 감소도 하지 않는 0이라는 것을 의미한다. 반면 후자는 막대가 점차 커지고 있다. 이것은 구배가 +라는 것을 의미한다. 10번째의 체절수 조절유전자의 경우 구배조절 박스가 불활성화 되어 있다. 그것은 이 경우 구배등급을 매기는 것이 아무 의미도 없기 때문이다.

표준유전자와는 달리 특수유전자는 이 소프트웨어에서 옵션이다. 이 유전자는 배제하거나 포함시킬 수 있으며 포함시켰을 경우에도 변이를 받게 하거나 받지 않게 할 수 있다. 이것을 조절하는 것이 메뉴의 Genes→ Special Genes의 특수유전자 선택자Special Genes Selector이다.

유전자의 Present 체크박스를 체크함으로써 게놈에서 특정 유전자를 넣거나 뺄 수 있다. 우측에 보면 Can Mute라는 체크박스가 있다. 이것은 Present가 체크되어 있을 경우만 작동한다. 이것을 체크함으로써 지정한 유전자의 변이를 쉽게 만들 수 있다.

정리하면 Special Genes Selector는 3가지 상태를 허용하고 있는 셈이다. 첫째는 Present가 체크되어 있지 않은 경우이다. 체크되어 있는 것을 다시 클릭하면 체크를 취소할 수 있다. 다 취소시켜 보자. 표준유전자외의 특수유전자는 모두 꺼져 있을 것이다. (10 ∼19의 특수유전자의 박스가 모두 사라졌다) 이렇게 되면 버전1과 같아지는 셈이다. 다시 Special Genes Selector로 돌아와서 Present를 체크해 보자. 10 ∼19의 유전자 박스의 숫자가 회색으로 바뀌어 있을 것이다. 이것은 현재 작동하고 있지만 변이의 대상에서 제외되어 있다는 것을 의미한다. 이것이 무엇을 의미하는지를 알아보기 위해 File→Open에서 파일 하나 예컨대 kermit.bio를 불러내어 보자. 유전자 박스를 보면 10번 유전자 이후는 모두 회색으로 되어 있을 것이다. 우측의 Repeat박스를 눌러보자. 1∼9번의 유전자는 계속 값을 변화시키고 있지만 10번 유전자 이후는 아무 변화가 없을 것이다. (이 상태에서 10번 유전자 이후의 유전자 값을 변경시키고자 한다면 Evolve→Engineer에서 할 수 있다. Breed상태에서는 바꿀 수 없다. 확인해 보기 바란다.) 다시 Can Mute를 전부 체크한 다음 어떻게 변해있는지 보자. 10번 이후의 유전자가 모두 검은색으로 바뀌어 있을 것이다. 다시 Repeat를 누르거나 Breeding 해보자. 10번이후의 유전자들을 포함한 모든 유전자들이 값을 변이시키면서 새로운 바이오모프들을 계속 생성해낼 것이다. 유전자의 상태는 게놈표시창에 반영되어 있다. 아래 그림을 보자.

유전자의 수치가 검은색으로 표시되어 있다면 그 유전자는 현재 활성상태이고 변이할 수 있다. 유전자의 수치가 회색으로 표시되어 있으면 유전자는 활성상태이지만 변이시킬 수 없다. 유전자의 박스가 아예 비워져 있다면 유전자는 비활성이고 물론 변이시킬 수도 없다.

 

특수유전자 가운데 14, 15 유전자에 대해서는 설명이 좀 필요하다. 이것은 바이오모프를 출력하는 방식 즉 Drawing Mode를 규정하는 유전자이다. 14번은 윤곽선의 색outline color을 규정한다. 15번은 바이오모프의 몸의 색을 규정한다. 이 Drawing Mode에는 14,15 두 유전자가 모두 활성화되어 있는 경우(Normal Mode), 15번만 활성화되어 있는 경우(Solid Mode), 그리고 둘다 불활성인 경우(Black and White Mode) 등 세 모드가 있다.

Normal Mode로 그리면 외곽선과 몸이 모두 칼라로 채색된다. Solid Mode로 그리면 외곽선은 검은색으로 나타나고 몸은 칼라로 표현된다. Black and White Mode로 하면 위 그림에서 보듯이 외곽선과 몸 모두 까맣게 표현된다. 14, 15번을 꺼서  Black and White Mode로 바꾼 다음 Evolve→Engineer에 둔 다음  Hopeful단추(또는 빨리 보고 싶을 때는 Repeat)를 누르면서 계속 변이를 일으키면서 점멸하는 바이오모프들을 감상해 보라. 내 느낌으로는 칼라 보다 흑백의 바이오모프가 훨씬 더 근사해 보인다.

 

 

4. 바이오모프의 땅, 계통도 그리고 화석

 

가능한 바이오모프의 수는 얼마일까? 위의 유전자 일람표에서 보면 첫 번째의 경우 800, 두 번째의 경우 800, 세 번째의 경우 9...등이다. 이 모두를 곱하면 가능한 모든 바이오모프의 형태를 얻을 수 있다. 그 값은 무려 6.912×10^16개이다.

이 바이오모프를 하나의 좌표속에 표현할 수 있을까? 2차원 좌표상의 한 점을 지정하는데는 x, y 2개의 값이 필요하고 3차원의 경우 x, y, z 3개의 값이 필요하다. 한 특정 바이오모프를 좌표속에 지정하는데는 19개의 값이 필요하다. 그러면에서 바이오모프의 유전자 공간은 19차원이다. 19차원의 좌표를 그리는 방법은 없다.

도킨스는 『눈먼 시계공』에서 이것을 표현하는 한 방법을 소개하고 있다. 3차원을 자르면 2차원 평면이 생긴다. 3차원을 제한적인 형태이나마 이 방식으로 2차원 평면속에 표현할 수 있다. 마찬가지로 19차원 공간을 가로지르는 단면을 만들고 이것을 모니터상에 나타내 보자. 이 방식으로 바이오모프들간의 거리를 나타낼 수 있다. 물론 같은 평면상에 있을 경우에만 가능하다는 제한조건이 붙는다. 같은 평면상에 있지 않다면 아주 가까운 유전적 거리에도 불구하고 나타나지 않는다. 이 제한을 조금이나마 해소하는 방법은 이 공간을 여러 가지 방식으로 잘라보는 것이다. MRI 단층촬영을 생각해 보면 되겠다. 아래는 3차원 공간을 자르고 있는 2차원 평면이다.

이제 바이오모프로 돌아와 19차원의 도형을 횡단하고 있는 2차원 평면을 생각해 보자. 메뉴의 Triangle→Gene Space를 열면 아래와 같은 그림이 뜨는데 이것이 바로 2차원 횡단면이다.

화면안에 삼각형이 그려져 있을 것이다. 한 평면을 결정하는 점의 최소수는 3이다. 그래서 임의의 세 점을 지정하면 《Blind Watchmaker》는 그 세점을 포함하는 2차원 평면을 잘라내어 모니터상에 표시한다. 그것이 아래의 그림이다. 물론 다른 평면을 볼 수도 있다. New Top, New Left, New Right를 새로 지정해 줌으로써 바이오모프의 새로운 단면을 얻을 수 있다. 이것은 위의 3차원 원통의 2차원 횡단면에서 다른 좌표에 따라 다른 삼각형이 만들어진 것과 다를바가 없다.

마우스로 모니터를 쓸고 가면 그 지점의 바이오모프가 나타난다. 그것을 화면에 고정시키고 싶으면 왼쪽을 클릭하면 된다.

이 삼각형은 각 형태간의 유전적 거리를 알아보는데 유용하다. (상세한 설명은 『눈먼 시계공』(민음사)103∼113면 참조)

 

다음 바이오모프의 유전적 표류에 의한 진화를 계통도의 형식으로 볼 수 있다. 세대간의 미세한 변화가 세대가 거듭됨에 따라 누적되어 큰 형태상의 차이를 나타내는 것을 일목요연하게 보여준다. 메뉴의 Family의 Family Tree를 선택하면 그림 하나가 뜬다. 그것이 선조형이다. 거기에 마우스를 대고 드랙하면 그것의 다음 세대가 나온다. 거기서 여러개를 뽑을 수 있으며 -형제자매라 할 수 있는데 약간씩 다른 형태를 보여줄 것이다- 거기에는 원리적 제한이 없다. . 거기서 다시 드랙하면 선조형의 손자뻘이 뽑아져 나온다. 이 과정을 계속함으로써 한 선조형에서 시작해서 여러 자손으로 분파되어나가는 계통도를 만들 수 있다. 원하지 않는 계열을 솎아내려면 바로 그 아래 Destory를 클릭하면 된다. 그 이후의 모든 계열이 제거될 것이다.

물론 선조형은 디폴트로 뜨는 그 바이오모프에 한정되지 않는다. 어떤 것이든 선조로 할 수 있다. 연습삼아 File에 저장되어 있는 여러 바이오모프들을 불러내어 그 계통도를 한번 만들어 보라. 아래는 계통도의 한 예이다.

내가 한번 만들어본 것도 있습니다. 여기를 클릭하세요

 

다음 Fossils→Fossil history를 보자. Breed , Engineer은 현 세대만을 보여준다. 지나간 과거의 형태를 알고 싶으면 Fossils→Fossil history를 선택하면 된다. 과거 선택된 모든 바이오모프를 순서대로 보여줄 것이다.