본문 바로가기

Library

Protein Structure 3 단백질(protein)은 아미노산의 종류에 따라 달라지며, 아미노산의 개수와 늘어뜨려진 순서에 따라서도 그 종류가 달라진다. 단백질은 둥근 공 모양이나 긴 섬유 모양, 또는 코일이나 열쇠 꾸러미 모양을 이루면서 활성을 가진다. 단백질의 구조는 1차, 2차, 3차, 4차 구조로 나누어서 설명할 수 있다. 여기서 1차, 2차와 같은 용어는 단순히 평면상에 단백질을 표현할 수 있다거나 하는 의미가 아니다. 최근에는 3차, 4차 구조와 같은 용어보다 단백질의 상호작용이란 말을 더 자주 사용한다. 1차 구조 : 기본적인 결합으로, 안정된 결합 구조를 가지고 있다. 아미노산들이 결합할 때 유전자에 들어 있는 DNA의 정보 지배하에 있기 때문에 각각의 단백질은 자신만이 갖는 고유의 아미노산 배열을 갖게 된다. 2차 .. 더보기
B* Tree 1973년 Knuth는 삽입 시의 재분개 개념에 분할에 대한 새로운 개념을 포함하도록 확장하였다. 그는 이 트리를 B* 트리(tree)라 명명했다. 재분배를 통해 분할을 연기하는 시스템을 생각해보자. 루트(root) 페이지 이외의 페이지를 고려한다면 그 페이지가 분할될 때는 이것이 적어도 꽉 찬 형제(sibling)를 하나 가진다는 것을 알고 있다. 이것은 기존에 한 페이지를 둘로 나누는 방법보다 둘을 셋으로 나누는 방법의 가능성을 제시한다. 두 페이지를 셋으로 분할하는 방법은 분할된 페이지가 반으로 차기보다는 2 / 3 정도로 찬다는 중요한 측면을 가진다. B* 트리는 다음과 같은 성질을 가진다. 1. 각 페이지는 최대 m 개의 자손을 가진다. 2. 루트 노드와 리프(leaf) 노드를 제외한 각 페이지.. 더보기
Protein Structure 2 단백질(protein)의 2차 구조(secondary structure)는 대표적으로 α helix 와 β sheet가 있다. 단백질의 helix 구조는, DNA나 RNA의 helix와 어떻게 다른가? 단백질의 helix는 主사슬 사이의 수소 결합(hydrogen bonds)에 의해 형성된다는 점이 다르다. 수소 결합은 공유 결합(covalent)보다 훨씬 약한 결합이지만, 상당히 힘 있는 결합이다. 단백질에서의 helix 구조는, 서로 꼬여가면서 백본(backbone)에서의 NH, CO 사이에서 수소 결합을 한다. 다음은 α helix이다. 단백질의 대부분의 helix 구조가 α helix이며, 4번째 떨어져 있는 잔기(residue)마다 수소 결합을 이룬다. 여기서의 토션각(torsion angle).. 더보기
Protein Structure 1 단백질(protein)은 부사슬(sidechain)에 어떤 반복되는 유닛이 결합한 백본(backbone)의 중합체(polymers)라 할 수 있다. 즉, 간단히 말해 다음과 같은 구조를 가진다. 여기서 가장 중심이 되는 분자는 N, Cα, C이며, Cα에 붙은 잔기를 부사슬이라 한다. 단백질의 크기는, H가 하나로만 구성되어 있는 Gly에서부터, 커다란 벤젠 고리(benzeng ring)를 형성하는 Phe까지 매우 다양하다. 또, +, -과 같은 전하를 띄며, 다른 극성을 띄는 잔기와 수소 결합(hydrogen bonds)을 형성하기도 한다. 여기서 hydrophobic이란 물과 친화성이 매우 떨어지는 것을 의미하며, hydrophilic은 물과의 친화성이 높다는 것을 의미한다. 또, 단백질의 모양과 단.. 더보기
RNA Structure Prediction Method RNA 2차 구조를 예측하는 방법으로, 현재는 Covariance Model(Comparative Sequence Analysis)과 Free Energy Method가 있다. 이외에도 DotPlot 방법과 Base Pair Max 방법이 있지만, 이들은 현재 사용되지 않는다. Covariance Model은 입력값으로 최소한 2개 이상의 RNA 시퀀스가 필요하며, 이들은 서로 상관되는 염기쌍이 있어야 하며, 이것은 이 시퀀스가 적당히 비슷해야 한다는 뜻이다. 진화적인 관점에서 보존되는 염기가 무엇인지, 그리고 변화된 염기가 무엇인지를 파악하기 위한 것인데, 즉, RNA는 염기의 일부가 변하더라도 동일한 구조를 유지하려는 특징을 이용한 것이다. RNA는 같은 구조를 유지하기 위해 특정 위치의 염기는 함께.. 더보기
RNA Secondary Structure RNA 이차 구조(Secondary Structure)를 예측하는 것은 단백질이나 DNA보다 더 힘들다. 그것은 DNA처럼 일정한 모양을 띄고 있지 않기 때문이다. DNA는 두 가닥 분자이지만, RNA는 한 가닥일 뿐이며, DNA의 두 가닥은 서로 상보적인 결합을 하는데 비해 RNA의 가닥은 자기 자신에 대해서 상보적인 결합을 한다. RNA 가닥의 상보적 결합에서, G-C 결합이 A-U 결합보다 훨씬 안정적인 결합이며, 이것은 RNA 이차 구조 형성에 중요한 사실이다. 틀린 이론을 내놓은 사람이 가모브만은 아니었다. 나 역시 그런 낭패를 겪어야 했다. 이중 나선을 발견하지 얼마 지나지 않아 나는 캘리포니아 공대로 자리를 옮겼다. 그곳에서 나는 RNA 구조를 발견하고 싶었다. 실망스럽게도 알렉산더 리치(A.. 더보기
B-Tree Variant : B+ Tree, B* Tree B-트리(tree)는 제한된 메모리 공간에서 인덱스를 다룰 수 있는 유용한 수단이지만, 다른 전략과 마찬가지로 단점이 존재한다. 대표적으로, 다음과 같은 문제를 들 수 있다. 1. 각각의 노드의 공간 활용성이 낮다 : B-트리의 리프(leaf) 노드들은 일반적으로 최대 차수가 n이라 했을 때 n / 2 정도의 키 값만 저장하고 있다. 대체적으로 각 노드의 공간 활용도는 50%이다. 2. 순차 탐색을 지원하지 않는다 : 쿼리(query)는 프라이머리 키(primary key)로 주어져야 하며, 세컨더리 키(secondary key)로 주어지는 쿼리에 대해서 복수의 레코드를 탐색해야 하는 경우, 각 레코드를 검색할 때마다 루트에서부터 검색을 시작해야 한다. 3. 복수의 레코드 얻기 : 세컨더리 키로 각 레코.. 더보기
Deletion On B-Tree 2 B-트리(tree)에서의 삽입과 삭제는 모두 리프(leaf)에서의 변경이 위로 전파(propagate)된다는 것이 중요하다. 만약, 루트에서 키를 하나만 가지고 있고, 이 키 값에 대한 삭제가 일어난다면 단지 하나만 제거하고, 그것으로 그만이다. B-트리의 구현은 여러가지가 있으며, 여기서의 삭제 연산도 그런 구현 중 하나이다. 구체적으로, 여기서의 삭제 연산은 키의 중복을 허용하는 버전의 경우이며, 노드에서의 차수(order)는 하나의 노드가 가질 수 있는 자손(decendant)의 최대 개수를 의미한다. 이 버전에서 노드 n에서 키 k를 삭제하는 규칙은 다음과 같다. 1. 만약 n이 키의 최소 개수 이상이고, 키가 n에서 가장 크지 않다면, 간단히 n에서 k를 삭제한다. 2. 만약 n이 키의 최소 개.. 더보기
Deletion On B-Tree 1 B-트리에서의 삭제는 삽입과 유사하나 이보다 조금 더 복잡하다. 이는 리프(leaf) 노드만이 아닌, 임의의 노드에서 키가 삭제될 수 있으며, 내부 노드에서의 삭제는 자식 노드들에 대한 재배열을 요구하게 되기 때문이다. 삽입에서의 삭제 시에도 B-트리의 특성에 위반되는 구조를 갖는 트리가 만들어지는 것을 방지할 수 있어야 한다. 삽입 때문에 한 노드가 너무 커지지 않도록 보장하는 것처럼, 삭제로 인해 한 노드가 너무 작아지지 않는 것을 보장할 수 있어야 한다(루트 노드가 최대 2t - 1개를 초과하는 키들을 갖는 것이 허용되지 않더라도 루트 노드는 최소 t - 1개 미만의 키를 갖는 것이 혀용되는 것만 제외하면). 간단한 삽입 알고리즘에서 키가 삽입될 경로 내의 노드가 이미 가득 찬 경우 되돌아 가야 할.. 더보기
각 B-트리 구현에서의 차이점 B-트리(tree)의 노드에서 키의 중복을 허용할 것인지, 허용하지 않을 것인지에 따위와 같은 세부 구현은 조금씩 다르다. 일반적으로, 중복되는 키 값은 오류가 발생할 확률이 높고, 공간도 낭비하는 경향이 있다. 그러나, B-트리에서는 이야기가 조금 다른데, B-트리가 한번에 읽어들이는 페이지에서 어떤 키 값을 찾았다고 해보자. 그러나, 이 키 값이 실제 값을 저장하고 있는 것이 아니라 실제 값을 저장하고 있는 다른 노드로의 포인터만 가지고 있다면, 이 페이지를 버리고 해당 페이지를 다시 읽어들어야 하는 낭비가 뒤따른다. 따라서, B-트리의 일반적인 구현에서는 이런 키의 중복을 허용하기도 한다. 또, 키의 상승(promotion)에 있어서 어떤 값을 상위 단계로 올리는지도 조금씩 다르다. 어떤 값이 노드.. 더보기