Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데이터 과학

뉴윅(Newick) 포맷 본문

생명정보학 & 화학정보학/계통학

뉴윅(Newick) 포맷

티에스윤 2025. 10. 30. 17:26

뉴윅(Newick) 포맷은 계통수(phylogenetic tree)를 텍스트 한 줄로 표현하기 위한 약속입니다.

 

1980년대 중반 여러 연구자와 소프트웨어 개발자들이 서로 다른 프로그램 간의 결과를 호환적으로 교환하기 위해 합의한 사실상의 표준입니다. 명칭은 이 논의가 이루어진 장소인 New Hampshire와 관련되어 Newick이라는 이름이 붙었으며, 현재 대부분의 계통수 프로그램과 플랫폼, 라이브러리가 이 규칙을 기반으로 계통수를 읽고 출력합니다.

 

뉴윅 포맷의 핵심 아이디어는 나무 구조를 괄호로 표현하는 것입니다. 계통수에서 종 또는 표본과 같은 말단(리프 또는 OTU)은 이름으로 표시되며, 여러 리프가 하나의 내부 노드를 공유할 때는 괄호로 묶어 해당 하위 집합이 하나의 분기를 이룬다는 점을 나타냅니다. 가지 길이(branch length)를 표기하고자 하는 경우에는 이름 또는 괄호 구조 뒤에 콜론과 실수를 기록하며, 트리의 종료는 세미콜론으로 지정합니다.

 

예를 들어 (A:0.1,B:0.2,(C:0.3,D:0.4):0.5); 와 같은 표현은 A와 B가 하나의 내부 노드에서 분기하고, C와 D가 또 다른 내부 노드에서 분기한 뒤, 두 내부 노드가 다시 하나로 결합되는 구조를 의미합니다. 콜론 뒤 숫자는 보통 분자진화 거리, 즉 사이트당 예상 치환수를 의미합니다. 다만 이 값이 시간 단위인지 거리 단위인지는 뉴윅 포맷 자체에서는 정의하지 않으며, 트리를 생성할 때 사용한 분석 모델과 해석 맥락에 따라 달라집니다.

 

                                                     뉴윅 형식 표기 방법 (A:0.1,B:0.2,(C:0.3,D:0.4):0.5);

 

 

 

문법적으로 뉴윅 포맷은 “트리 = 서브트리 + 세미콜론”이라는 구조를 갖습니다. 서브트리는 리프(이름만 기록)일 수도 있고, (서브트리1, 서브트리2…) 형태의 내부 노드일 수도 있습니다. 내부 노드에는 선택적으로 라벨을 붙일 수 있으며, 가지 길이는 콜론 다음에 숫자를 적는 방식으로 표현합니다. 괄호는 “이 지점에서 분기가 일어난다”는 의미이고, 콜론은 “이 가지의 길이는 다음과 같다”는 의미이며, 세미콜론은 파서에게 트리 구조가 종료되었음을 알리는 필수 요소입니다.

뉴윅 포맷 자체에는 루트 정보가 포함되어 있지 않습니다. 표기상 최상위 괄호가 루트를 나타내는 것처럼 보일 수 있지만, 실제로는 동일한 비루트 트리가 여러 표현으로 나타날 수 있습니다. 루팅은 분석 과정에서 외군을 선택하거나 중간점 rooting 등을 적용하여 결정되며, 이를 명시적으로 표현해야 할 경우 Nexus 포맷에서 [&R] 또는 [&U]와 같은 주석을 사용합니다.

 

리프 또는 내부 노드의 이름을 작성할 때는 규칙을 따라야 합니다. 이름에 괄호, 콤마, 콜론, 세미콜론, 공백과 같은 문법적으로 사용되는 문자가 포함될 경우 반드시 작은따옴표로 감싸야 하며, 작은따옴표를 포함해야 할 경우에는 두 번 연속 적어 이스케이프합니다.

예를 들어 'Homo sapiens' 또는 'O''Brien_1999'과 같이 표현합니다. 일부 오래된 계통수 소프트웨어는 언더스코어를 공백으로 변환하는 관행을 가지고 있기 때문에, 데이터 교환 시 주의가 필요합니다.

 

가지 길이(branch length)는 가장 일반적으로 진화 거리를 의미하지만, 0으로 표현되거나 생략될 수도 있습니다. 이러한 경우는 염기서열이 동일하거나 충분한 해상도가 없을 때 나타날 수 있으며, 가지 길이가 짧다고 해서 반드시 해당 분기가 최근에 발생했음을 의미하는 것은 아닙니다. 따라서 가지 길이 해석 시에는 데이터의 특성과 분석 모델을 고려하는 것이 필요합니다.

 

뉴윅 포맷은 이진 트리뿐만 아니라 다분기(polytomy)도 표현할 수 있습니다. (A,B,C); 와 같은 표현은 A와 B와 C가 동일한 하나의 분기점에서 갈라진다는 의미입니다. 그러나 프로그램에 따라 다분기를 해상도가 부족한 경우로 해석할 수도 있고, 실제 동시 분기로 해석할 수도 있습니다. 따라서 이러한 표현이 가진 의미를 명확히 하기 위해 분석 보고서나 README 문서에 의도를 작성해 두는 것이 좋습니다.

 

뉴윅은 대괄호를 이용하여 주석을 포함할 수 있습니다. 예를 들어 (A[foo],B);와 같이 작성하면 [foo]는 대부분의 파서에서 무시됩니다. 만약 주석 이상의 정보를 저장해야 할 경우 NHX(New Hampshire eXtended) 형식이나 Nexus 포맷을 사용할 수 있습니다. NHX는 [&&NHX:tag=value]와 같은 구조를 사용하여 노드 또는 가지에 메타데이터를 저장할 수 있습니다. 하지만 이러한 확장 형식은 모든 도구에서 동일하게 지원되지 않으므로 호환성을 확인해야 합니다.

 

많은 프로그램은 내부 노드 라벨에 부트스트랩 지지도 값을 기록합니다.

예를 들어 (C:0.3,D:0.4)90:0.5 와 같이 표현하는 경우 90은 해당 분기가 부트스트랩 반복에서 90퍼센트의 빈도로 재현되었음을 의미합니다. 하지만 소프트웨어에 따라 내부 라벨을 지지도로 해석하지 않거나, 가지 라벨로 지지도를 표시해야 하는 경우도 있습니다. 따라서 트리를 공유할 때에는 내부 라벨이 지지도를 의미하는지, 단순 이름인지 확인하는 과정이 필요합니다.

 

뉴윅 포맷은 동일한 트리를 여러 가지 방식으로 표현할 수 있습니다. 자식 노드의 순서가 달라져도 트리 구조는 동일하기 때문에, (A,B,(C,D)); 와 (B,A,(D,C));는 문자열은 다르지만 위상은 같은 트리입니다.

 

종합하자면 뉴윅 포맷은 중첩 괄호와 가지 길이, 세미콜론이라는 단순한 문법을 사용하여 계통수의 구조와 가지 정보를 표현하는 강력한 텍스트 직렬화 방식입니다. 루팅 정보, 시간축 정보, 메타데이터 등은 뉴윅 자체에 포함되지 않으며, 분석 방식이나 확장 포맷을 통해 보완해야 합니다. 따라서 호환성을 높이고 오류를 방지하기 위해서는 라벨 규칙을 준수하고, 부트스트랩 지지도 여부와 같은 해석 정보를 함께 문서화하는 것이 바람직합니다.