KR102447192B1 - 염기 서열 처리 시스템 및 방법 - Google Patents

염기 서열 처리 시스템 및 방법 Download PDF

Info

Publication number
KR102447192B1
KR102447192B1 KR1020190129507A KR20190129507A KR102447192B1 KR 102447192 B1 KR102447192 B1 KR 102447192B1 KR 1020190129507 A KR1020190129507 A KR 1020190129507A KR 20190129507 A KR20190129507 A KR 20190129507A KR 102447192 B1 KR102447192 B1 KR 102447192B1
Authority
KR
South Korea
Prior art keywords
read
nucleotide sequence
duplicate
reads
partition
Prior art date
Application number
KR1020190129507A
Other languages
English (en)
Other versions
KR20210046136A (ko
Inventor
변은규
곽재혁
송석일
이현병
Original Assignee
한국과학기술정보연구원
한국교통대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술정보연구원, 한국교통대학교산학협력단 filed Critical 한국과학기술정보연구원
Priority to KR1020190129507A priority Critical patent/KR102447192B1/ko
Publication of KR20210046136A publication Critical patent/KR20210046136A/ko
Application granted granted Critical
Publication of KR102447192B1 publication Critical patent/KR102447192B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • G16B30/10Sequence alignment; Homology search
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B35/00ICT specially adapted for in silico combinatorial libraries of nucleic acids, proteins or peptides
    • G16B35/20Screening of libraries
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B40/00ICT specially adapted for biostatistics; ICT specially adapted for bioinformatics-related machine learning or data mining, e.g. knowledge discovery or pattern finding

Landscapes

  • Life Sciences & Earth Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Biochemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Artificial Intelligence (AREA)
  • Bioethics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Analytical Chemistry (AREA)
  • Databases & Information Systems (AREA)
  • Epidemiology (AREA)
  • Evolutionary Computation (AREA)
  • Public Health (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Electrotherapy Devices (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)

Abstract

방대한 양의 염기 서열 리드 데이터를 효율적으로 분산 병렬 처리하는 시스템 및 방법이 제공된다. 본 발명의 일 실시예에 따른 염기 서열 리드의 병렬 처리 방법은, 복수의 컴퓨팅 노드 중 하나가, 염기 서열 리드(read)들로 구성된 염기 서열 데이터의 일부 파티션을, 상기 복수의 컴퓨팅 노드 중 둘 이상의 작업 노드에 할당하는 단계, 상기 각각의 작업 노드가, 상기 할당된 파티션에 포함된 각각의 염기 서열 리드를 참조 서열의 대응 위치에 매핑하고, 상기 참조 서열의 대응 위치를 이용하여 상기 염기 서열 리드의 중복 식별키를 생성하는 단계, 및 상기 각각의 작업 노드가, 동일한 상기 중복 식별키를 가지는 염기 서열 리드들의 식별자 리스트인 중복 리드 리스트를 이용하여, 상기 할당된 파티션 내의 중복 리드를 제거하고, 상기 할당된 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 할당된 파티션 내의 상기 염기 서열 리드들을 정렬하는 단계를 포함할 수 있다.

Description

염기 서열 처리 시스템 및 방법{SEQUENCE PROCESSING SYSTEM AND METHOD THEREOF}
본 발명은 염기 서열을 처리하는 시스템 및 그 방법에 관한 것이다. 보다 구체적으로는, 방대한 양의 염기 서열 리드 데이터를 효율적으로 분산 병렬 처리하는 시스템 및 방법에 관한 것이다.
NGS(Next Generation Sequencing)는 차세대 염기 서열 분석 방법이다. NGS는 종전 기술인 Sanger 분석 방법 대비 저렴한 비용과 빠른 데이터 처리를 가능하여, 유전체 연구의 핵심 기술로 자리 잡았다.
NGS는 분석 대상의 유전체를 무수히 많은 단편들로 잘라내고 이를 PCR(Polymerase chain reaction) 과정에 의해 증폭한 뒤, 각 단편들의 염기 서열 정보를 읽어낸다. 그리고 유전체 단편들의 염기 서열 정보를 담은 방대한 양의 리드(read) 데이터들을 참조 게놈의 염기 서열(또는 참조 서열이라고도 한다)에 사상(mapping) 또는 배치(alignment)한다. 유전체 단편들을 PCR에 의해 증폭하는 과정에서, 필연적으로 중복되는 염기 서열 정보를 가지는 리드 데이터가 다수 생성되며, 이는 여러 개의 리드 데이터가 참조 서열의 동일한 부분에 매핑된다는 것을 의미한다. 따라서 리드 데이터들을 참조 서열에 매핑한 이후에는, 참조 서열의 동일한 부분에 매핑된 중복 리드 데이터들을 제거하는 과정을 거치게 된다. 그리고 참조 서열의 순서로 각 리드들을 정렬함으로써, 비로소 분석 대상 유전체의 유전자 정보 분석을 위한 데이터가 완성된다. 이러한 유전자 정보 데이터를 기초로, 돌연변이 검출, 질병 검출, 친자 확인, 원산지 판별 등의 후속 단계가 진행될 수 있게 된다.
NGS에서는 보통 100개 정도 길이의 염기 서열을 포함하는 짧은 서열 조각인 리드를 생성하여 염기 서열을 해독하며, 백만에서 십억 단위의 리드를 병렬로 처리한다. 이러한 NGS 과정에서 처리되는 데이터는 수 테라 바이트(terabyte) 수준의 방대한 양이다. 이처럼 차세대 기술로 일컬어지는 NGS에서도 여전히 방대한 양의 데이터 처리가 요구되며 이를 위해 상당한 프로세싱 타임이 필요하다.
이로 인해, 현재 가장 고도화된 NGS 분석 시스템을 사용하더라도 한 명의 유전자 정보를 분석하는 데에 하루 이상의 시간이 소요되고 있는 실정이며, 비용 또한 많이 든다. 따라서 응급한 환자의 유전자 정보를 신속하게 분석하여 증상의 원인을 파악하는데 적용하기에는 한계가 있고, 보다 많은 사람들이 본인의 유전자 정보를 분석하여 질병을 예측하고 대비하는 유전자 정보 분석의 대중화 시대는 아직 본격적으로 도래하지 못하고 있다.
한국공개특허 제10-2014-0081385호 (2014.07.01. 공개)
본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 기술적 과제는, 염기 서열 리드 데이터를 여러 대의 컴퓨팅 장치에 나누어 동시에 처리하는 효율적인 분산 병렬 처리 방법을 제공하는 것이다.
본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 다른 기술적 과제는, 염기 서열 리드 데이터를 여러 대의 컴퓨팅 장치에 분산하여 병렬로 처리하면서도, 전체 데이터에서 중복된 리드 데이터들을 효과적으로 제거하는 방법을 제공하는 것이다.
본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 또 다른 기술적 과제는, 염기 서열 리드 데이터를 여러 대의 컴퓨팅 장치에 분산하여 병렬로 처리함에 있어서, 컴퓨팅 자원의 활용의 효율을 극대화하고 처리 시간을 단축하는 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 염기 서열 리드의 병렬 처리 방법은, 복수의 컴퓨팅 노드 중 하나가, 염기 서열 리드(read)들로 구성된 염기 서열 데이터의 일부 파티션을, 상기 복수의 컴퓨팅 노드 중 둘 이상의 작업 노드에 할당하는 단계, 상기 각각의 작업 노드가, 상기 할당된 파티션에 포함된 각각의 염기 서열 리드를 참조 서열의 대응 위치에 매핑하고, 상기 참조 서열의 대응 위치를 이용하여 상기 염기 서열 리드의 중복 식별키를 생성하는 단계, 및 상기 각각의 작업 노드가, 동일한 상기 중복 식별키를 가지는 염기 서열 리드들의 식별자 리스트인 중복 리드 리스트를 이용하여, 상기 할당된 파티션 내의 중복 리드를 제거하고, 상기 할당된 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 할당된 파티션 내의 상기 염기 서열 리드들을 정렬하는 단계를 포함한다.
본 발명의 몇몇 실시예에 따른 염기 서열 리드의 병렬 처리 방법은, 상기 정렬하는 단계 이후에, 상기 복수의 컴퓨팅 노드 중 하나가, 상기 각각의 작업 노드에 의하여 정렬된 각각의 파티션을 병합하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 중복 식별키를 생성하는 단계는, 상기 할당된 파티션에 포함된 상기 리드들 각각에 대하여, 상기 중복 식별키 및 리드의 식별자를 저장하는 단계를 포함하고, 상기 각각의 작업 노드가 각각의 파티션에 대해 저장한 상기 중복 식별키 및 상기 리드의 식별자를 기초로, 상기 복수의 컴퓨팅 노드 중 하나가 상기 중복 리드 리스트를 생성하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 중복 식별키를 생성하는 단계는, 복수의 참조 서열 중 상기 각각의 염기 서열 리드가 매핑되는 참조 서열을 식별하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 중복 식별키를 생성하는 단계는, 상기 매핑 결과에 기초하여 상기 복수의 참조 서열 각각에 대하여 매핑된 리드 수를 산출하는 단계를 더 포함하고, 상기 복수의 컴퓨팅 노드 중 하나가, 상기 참조 서열 당 매핑된 리드 수에 기초하여 상기 복수의 파티션에 포함된 상기 염기 서열 리드들을 복수의 파티션으로 재분할하는 단계를 더 포함할 수 있다. 일 실시예에서, 상기 재분할하는 단계는, 상이한 참조 서열에 매핑된 상기 염기 서열 리드들이 상이한 파티션에 포함되도록 분할하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 정렬하는 단계 이후에, 상기 복수의 파티션을 상기 참조 서열의 수만큼의 파티션으로 병합하는 단계를 더 포함하되, 상기 병합하는 단계는, 동일한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 동일한 파티션에 포함되도록 병합하고, 상기 각각의 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 각각의 파티션 내의 상기 염기 서열 리드들을 정렬하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 다른 실시예에 따른 시스템은, 복수의 컴퓨팅 노드를 포함하며, 상기 복수의 컴퓨팅 노드 중 적어도 하나의 노드는, 동일한 중복 식별키를 가지는 염기 서열 리드들의 식별자 리스트인 중복 리드 리스트를 생성하는 중복 리드 리스트 생성부를 포함하고, 상기 복수의 컴퓨팅 노드 중 둘 이상의 작업 노드는, 할당된 파티션에 포함된 각각의 염기 서열 리드를 참조 서열의 대응 위치에 매핑하고, 상기 참조 서열의 대응 위치를 이용하여 상기 염기 서열 리드의 상기 중복 식별키를 생성하는 리드 매핑부, 상기 중복 리드 리스트에 기초하여, 상기 할당된 파티션 내의 중복 리드를 제거하는 중복 리드 제거부, 및 상기 할당된 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로, 상기 할당된 파티션 내의 상기 염기 서열 리드들을 정렬하는 리드 정렬부를 포함한다.
일 실시예에서, 상기 리드 매핑부는, 상기 할당된 파티션에 포함된 상기 리드들 각각에 대하여, 상기 중복 식별키 및 리드 식별자를 저장하고, 상기 중복 리드 리스트 생성부는, 상기 각각의 작업 노드가 각각의 파티션에 대해 저장한 상기 중복 식별키 및 상기 리드의 식별자를 기초로 상기 중복 리드 리스트를 생성할 수 있다.
일 실시예에서, 상기 리드 매핑부는, 복수의 참조 서열 중 상기 각각의 염기 서열 리드가 매핑되는 상기 참조 서열을 식별할 수 있다. 몇몇 실시예에서, 상기 리드 매핑부는, 상기 매핑 결과에 기초하여 상기 복수의 참조 서열 각각에 매핑된 리드 수를 산출하고, 상기 복수의 컴퓨팅 노드 중 적어도 하나의 노드는, 상기 참조 서열 당 매핑된 리드 수에 기초하여 상기 복수의 파티션에 포함된 상기 염기 서열 리드들을 복수의 파티션으로 재분할하는 파니셔닝부를 더 포함할 수 있다. 또한 상기 파티셔닝부는, 상이한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 상이한 파티션에 포함되도록 분할할 수 있다.
일 실시예에서, 상기 복수의 컴퓨팅 노드 중 적어도 하나의 노드는 상기 복수의 파티션을 상기 참조 서열의 수만큼의 파티션으로 병합하는 리드 병합 정렬부를 더 포함하되, 상기 리드 병합 정렬부는, 동일한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 동일한 파티션에 포함되도록 병합하고, 상기 각각의 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 각각의 파티션 내의 상기 염기 서열 리드들을 정렬할 수 있다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 염기 서열 처리 시스템을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 염기 서열 처리 시스템의 마스터 노드와 작업 노드의 블록 구성도이다.
도 3은 본 발명의 다른 실시예에 따른 염기 서열 처리 방법의 순서도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 염기 서열 처리 방법의 순서도이다.
도 5는 도 3및 도 4를 참조하여 설명한 염기 서열 처리 방법의 각 과정에서 생성 및 가공되는 염기 서열 데이터 및 부가 데이터를 설명하는 도면이다.
도 6은 본 발명의 다양한 실시예에 따른 시스템을 구현할 수 있는 예시적인 컴퓨팅 장치의 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
본 발명의 실시예들을 상세히 설명하기 앞서, 먼저 본 발명에서 사용되는 몇몇 용어들에 대하여 설명하면 다음과 같다.
"리드(read)"는 유전체를 잘게 쪼갠 단편들을 유전자 시퀀싱 장치(genome sequencer)로 해독하여 출력한 데이터로서, 짧은 길이의 염기 서열 데이터 조각이다. DNA 염기 서열의 경우 일반적으로 A, C, G, T의 네 가지 알파벳 문자(이를 '베이스'라고도 한다)로 표현되며, NGS 분석에 사용되는 리드의 길이는 일반적으로 100bp(base pair) 정도이다.
"참조 서열(reference sequence)"은 분석 대상 유전체로부터 획득된 리드들을 처리하여 전체 염기 서열을 생성하는 데 기준(참조)이 되는 염기 서열을 의미한다. 즉, 유전자 시퀀싱 장치에서 출력되는 리드들을 참조 서열을 기준으로 매핑(mapping) 또는 배치(alignment)함으로써, 분석 대상 유전체의 유전자 정보 분석을 위한 전체 염기 서열이 완성된다. 그러한 점에서 참조 서열은 유전자 지도(genome map)로 이해될 수도 있다. 유전 정보 분석의 대상과 범위에 따라서는, 하나의 참조 서열이 주어질 수도 있고, 둘 이상의 참조 서열이 주어질 수도 있다. 예를 들어 인간의 유전 정보는 염색체 단위(22쌍의 상염색체 및 1쌍의 성염색체)로 구분되어 주어질 수 있으며, 더 잘게 쪼개어 주어질 수도 있다.
"FASTQ" 파일 형식이란, 유전체 단편들을 유전자 시퀀싱 장치가 해독한 결과를 출력한 리드 데이터가 저장되는 파일 형식이다. 즉, FASTQ 파일은 리드들이 참조 서열에 매핑되기 전 단계의 원시 데이터가 저장되는 형식이다.
"SAM(Sequence Alingment Map)" 파일 형식이란, FASTQ 파일 형식 등으로 주어진 리드 데이터들을 참조 서열을 기준으로 정렬한 결과를 저장하기 위해 널리 사용되는 파일 형식이다. SAM 파일에서, 하나의 리드에 대한 데이터는 하나의 라인에 저장되며, 하나의 라인에는 적어도 11개 필드의 정보가 TAB으로 구분되어 저장된다. SAM 파일에 포함되는 11개의 필드는 다음의 표 1과 같다.
Figure 112019106259186-pat00001
여기서, "QNAME" 필드는 각 리드의 고유 식별자를 나타내고, "RNAME" 필드는 해당 리드가 매핑된 참조 서열의 식별자를 나타내며, "POS" 필드는 해당 리드가 매핑된 참조 서열 내에서의 위치를 나타내고, "SEQ" 필드에는 해당 리드의 염기 서열 데이터가 기록된다. 또한, "FLAG" 필드는 해당 리드가 참조 서열에 유일하게 매핑되었는지 여부, 참조 서열에 정확하게 매핑되었는지 여부 등의 정보를 포함하는 필드이며, "MAPQ" 필드는 매핑의 정확도를 나타내는 필드이고, "CIGAR" 필드는 매핑된 리드에 대한 정보를 부호화한 문자열로서, 매핑된 염기의 개수, 삽입, 삭제 등에 관한 정보를 포함한다.
"BAM(Binary Alignment Map)" 파일 형식이란, SAM 형식의 데이터로부터 빠른 시간 내에 정보를 추출하고, 데이터 저장 공간을 줄이기 위하여 바이너리로 압축한 파일 형식이다. 분석 대상 유전체의 전체 염기 서열이 완성되고 나면, BAM 파일로 변환되어, 후속 유전자 변이 분석 과정 등에 사용될 수 있다.
이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1a는 본 발명의 일 실시예에 따른 염기 서열 처리 시스템(100a)의 구성과, 염기 서열 처리 시스템(100a)이 유전자 분석 파이프라인에 활용되는 일례를 보이기 위한 도면이다. 염기 서열 처리 시스템(100a)은 마스터 노드(120), 하나 이상의 작업 노드(140a, 140b, 140c) 및 스토리지(160)를 포함하여 구성될 수 있다.
염기 서열 처리 시스템(100a)은 유전자 시퀀싱 장치(10)로부터 염기 서열 리드 데이터(read data)를 입력으로 받아서, 참조 서열에 매핑하는 과정 등의 처리를 수행한 후, 변이 검출 장치(20) 등 후속 유전자 분석 과정에 제공될 데이터를 출력한다.
유전자 시퀀싱 장치(10)는 유전체 샘플로부터 텍스트 형태의 염기 서열 리드 데이터를 생성하는 장치이다. 유전자 시퀀싱 장치(10)는, 수 많은 단편들로 잘라진 유전체 샘플을 PCR 과정으로 증폭하고, 증폭된 단편들로부터 염기 서열 정보를 해독하여 기록한다. 염기 서열은 A, C, G, T 등의 알파벳 문자로 표현된 텍스트 형태의 정보로 표현되어 염기 서열 리드 데이터로서 기록될 수 있다. 유전자 시퀀싱 장치(10)는 해독된 염기 서열의 정확도를 나타내는 리드 퀄리티 데이터를 추가로 생성할 수 있다. 리드 퀄리티 데이터는 후술할 리드 매핑 과정 등에서 이용될 수 있다. 유전자 시퀀싱 장치(10)가 생성한 리드 데이터와 리드 퀄리티 데이터는 전술한 FASTQ 파일 형식 등으로 저장되어, 염기 서열 처리 시스템(100a)에 제공될 수 있다.
몇몇 실시예에서 염기 서열 처리 시스템(100a)에 의해 처리된 염기 서열 데이터는 바이너리 형태의 BAM 파일 등으로 변환되어, 변이 검출 장치(20)에 제공될 수 있다.
이하에서는 본 실시예에 따른 염기 서열 처리 시스템(100a)의 구성에 대해 도 1a를 참조하여 보다 자세히 설명하기로 한다.
염기 서열 처리 시스템(100a)은 마스터 노드(120)와 작업 노드(140a 내지 140c)를 포함하는 복수의 컴퓨팅 노드에 의해 염기 서열 리드 데이터를 분산 병렬 처리한다.
마스터 노드(120)는, 염기 서열 처리 시스템(100a)이 리드 데이터들을 참조 서열에 매핑하는 등의 과정을 여러 컴퓨팅 노드에 분산하여 병렬로 처리함에 있어서, 각 노드에 작업을 분배하고 전체 작업의 흐름을 제어하는 역할을 한다. 예컨대 마스터 노드(120)는, 처리 대상의 리드 데이터들을 일정한 수의 파티션으로 분할하여 각 노드에 할당하고, 각 노드가 산출한 중간 결과물 또는 최종 결과물을 취합하거나 병합할 수 있다. 또한 마스터 노드(120)는 각 노드가 산출한 중간 결과물로부터 중복 리드 리스트 등의 참조 데이터를 생성하여 후속 처리 과정에서 다른 노드들이 활용하도록 제공할 수 있다. 마스터 노드(120)의 세부 구성과 상세 동작에 대해서는 도 2 내지 5를 참조하여 후술하기로 한다.
도 1a에는 작업 노드들(140a 내지 140c)과 구별된 별도의 마스터 노드(120)가 구비된 염기 서열 처리 시스템(100a)의 실시예가 도시되었다. 그러나 본 발명에서 작업 노드와 구별되는 마스터 노드가 반드시 구비되어야 하는 것은 아니다. 도 1b에 도시된 바와 같이 작업 노드들(140a 내지 140d)만으로 염기 서열 처리 시스템(100b)을 구성하는 것도 가능하며, 이 경우 염기 서열 처리 시스템(100b)의 처리 과정 중의 일부 시점들에 작업 노드들(140a 내지 140d) 중 어느 하나가 상술한 마스터 노드의 역할을 담당하게 된다.
작업 노드(140a 내지 140c)는 마스터 노드(120)로부터 할당 받은 처리 대상 리드 데이터들을 참조 서열에 매핑하고, 리드 데이터로부터 중복된 리드를 판별하여 제거하며, 리드 데이터를 참조 서열 내에서의 위치를 기준으로 정렬(sorting)하는 등의 처리 등을 수행한다. 작업 노드(140a 내지 140c)의 세부 구성과 상세 동작에 대해서는 도 2 내지 5를 참조하여 후술하기로 한다.
도 1a에는 3개의 작업 노드(140a, 140b, 140c)가 예시적으로 도시되었으나, 이에 한정되는 것은 아니다. 염기 서열 처리 시스템(100a)이 활용 가능한 컴퓨팅 자원의 상황과 시스템(100a)의 구현에 따라 작업 노드의 수는 얼마든지 달라질 수 있다. 본 실시예의 염기 서열 처리 시스템(100a)에서는 더 많은 작업 노드를 구비할수록 단위 시간 당 염기 서열 리드 데이터의 처리량이 증가하므로, 처리 속도를 높이기 위하여 더 많은 작업 노드를 구비할 수 있다. 또한 작업 노드의 수는 고정된 것이 아니라, 염기 서열 처리 과정에서 유동적으로 변경될 수 있다.
다시 도 1a를 참조하여 스토리지(160)에 대하여 설명한다. 염기 서열 처리 시스템(100a)은 대량의 리드 데이터를 입력 받고, 여러 단계의 과정을 통해 리드 데이터를 처리하며, 처리된 대량의 리드 데이터를 출력하는데, 각 과정의 리드 데이터들은 스토리지(160)에 저장된다. 스토리지(160)는 마스터 노드(120) 및 작업 노드들(140a 내지 140c)과 연결된다. 마스터 노드(120) 및 작업 노드들(140a 내지 140c) 각각은 처리 대상 데이터를 읽어 오거나 처리 결과를 저장하기 위하여 스토리지(160)에 접근할 수 있다. 스토리지(160)는, 염기 서열 처리 시스템(100a) 내에서 호스트 버스 어댑터(HBA) 등을 통해 다른 장치들과 직접 연결되거나, 또는 네트워크를 통해 다른 장치들과 연결될 수 있다.
스토리지(160)는 랜덤 액세스 메모리(RAM), 플래쉬 메모리(Flash Memory), 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등, 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 기록 가능한 장치를 포함할 수 있다. 염기 서열 처리 시스템(100a)이 처리하는 리드 데이터는 통상 수 기가 바이트에서 수 테라 바이트에 이르는 방대한 분량의 정보이므로, 용량 당 단가를 고려하여 선택될 수 있다.
염기 서열 처리 시스템(100a)을 구성하는 마스터 노드(120), 작업 노드들(140a 내지 140c), 및 스토리지(160)가 물리적으로 같은 위치나 공간에 구비되거나, 하나의 물리적인 장치 내에 구성되어야 하는 것은 아니다. 염기 서열 처리 시스템(100a 및 100b)은 클라우드 컴퓨팅 서비스 등 컴퓨팅 자원을 사용하기 위해 이용 가능한 다양한 방법들을 활용하여 마스터 노드(120), 작업 노드들(140a 내지 140c), 및 스토리지(160)을 이용할 수 있다.
지금까지는 도 1a 및 도 1b를 참조하여, 본 발명의 일 실시예에 따른 염기 서열 처리 시스템(100a, 100b)의 개략적인 구성과, 전체 유전자 분석 파이프라인에 활용되는 일례를 설명하였다. 이하에서는 도 2를 참조하여, 본 발명의 일 실시예에 따른 염기 서열 처리 시스템(100a, 100b)의 마스터 노드(120) 및 작업 노드들(140a 내지 140d)의 기능적 · 논리적 구성에 대하여 설명하기로 한다.
도 2에 도시된 바와 같이, 일 실시예에서 마스터 노드(120)는 파티셔닝부(122), 중복 리드 리스트 생성부(124), 병합 정렬부(126)를 포함하고, 작업 노드(140)는 리드 매핑부(142), 중복 식별키 생성부(144), 리드 카운트 산출부(146), 및 리드 정렬부(148)를 포함한다. 이하에서는, 마스터 노드(120) 및 작업 노드(140)의 각 구성요소들 사이의 상호 작용에 관한 이해의 편의를 위하여, 파티셔닝부(122), 리드 매핑부(142), 중복 식별키 생성부(144), 리드 카운트 산출부(146), 중복 리드 리스트 생성부(124), 중복 리드 제거부(147), 리드 정렬부(148), 및 병합 정렬부(126)의 순으로 설명하기로 한다.
마스터 노드(120)의 파티셔닝부(122)는, 염기 서열 처리 시스템(100a, 100b)의 여러 처리 과정에서 입출력되는 리드 데이터 세트를 복수의 작업 노드들(140a 내지 140d)이 분산하여 처리할 수 있도록, 적절한 수의 서브 데이터 세트로 분할한다. 이하에서는, 이 과정을 '분할' 또는 '파티셔닝'이라고 지칭하며, 분할된 각각의 서브 데이터 세트를 '파티션'이라고 지칭한다.
파티셔닝부(122)가 데이터 세트를 분할하는 방법은 다양할 수 있다. 예컨대, 파티셔닝부(122)는 각각의 파티션에 동일한 수의 데이터가 포함되도록 분할할 수 있고, 각 파티션을 처리할 작업 노드의 성능이나 가용율을 고려하여 각 파티션에 서로 다른 개수의 데이터가 포함되도록 분할할 수도 있다. 또한, 파티셔닝부(122)는 데이터가 기록된 순서대로 순차적으로 읽어서 분할할 수도 있고, 특정 속성이 동일한 유형의 데이터들이 동일한 파티션에 포함되도록 분할할 수도 있다.
파티셔닝부(122)는, 도 3 내지 도 5를 참조하여 후술할 염기 서열 데이터의 처리 과정에서, 유전자 시퀀싱 장치(10)로부터 제공받은 원시 리드 데이터들(FASTQ 파일들)을 각 작업 노드들이 분산하여 처리할 수 있도록 작업 노드 수만큼의 파티션으로 분할할 수 있고, 각 작업 노드들이 할당 받은 파티션의 리드 데이터들을 참조 서열에 각각 매핑한 결과물들(SAM 파일들)을 후속 정렬 과정 이전에 다시 분할할 수 있다. 이에 관해서는 후술하기로 한다.
작업 노드(140)의 리드 매핑부(142)는, 할당 받은 파티션에 포함된 리드 데이터들을 참조 서열에 사상(mapping) 또는 정렬(alignment)한다. 이하의 설명에서는 이 과정을 '매핑'이라고 지칭하기로 한다. 매핑이란, 각 리드 데이터에 포함된 염기 서열을 참조 서열과 비교하여, 각 리드의 염기 서열과 일치하는 참조 서열의 위치를 식별하는 과정이다. 리드 매핑에는, BWT(Burrows-Wheeler Transformation)에 기반한 알고리즘 또는 해싱(hashing)에 기반한 알고리즘 등 기존에 알려진 다양한 알고리즘에 기반한 BigBWA, SparkBWA, KBigBWA, MAQ, SOAP, Bowtie, 및 Stampy 등의 다양한 소프트웨어 제품이 사용될 수 있으나, 본 발명이 그러한 실시예로 한정되는 것은 아님에 유의한다.
본 실시예에서 리드 매핑부(142)의 매핑 결과는 전술한 SAM 파일 형식으로 제공될 수 있다. 앞서 설명한 바와 같이, SAM 파일에는 복수의 리드에 대한 데이터가 기록될 수 있으며, 각 리드의 고유 식별자를 나타내는 "QNAME" 필드, 해당 리드가 매핑된 참조 서열의 식별자를 나타내는 "RNAME" 필드, 해당 리드가 매핑된 참조 서열 내에서의 위치를 나타내는 "POS" 필드, 해당 리드의 염기 서열 데이터인 "SEQ" 필드 등이 포함된다. 본 실시예에서 각각의 작업 노드에 할당된 파티션에 포함된 리드들의 매핑의 결과는 각각 하나의 SAM 파일로 생성되어 스토리지(160)에 저장될 수 있다.
작업 노드(140)의 중복 식별키 생성부(144)는, 동일한 참조 서열의 동일한 위치에 중복하여 매핑되는 리드들을 식별하기 위한 식별키를 생성하는 구성이다. 본 실시예에 따른 염기 서열 처리 시스템(100a, 100b)에 주어지는 리드 데이터는 유전체 단편들의 증폭 과정에서 생성된 중복된 리드 데이터를 포함하므로, 중복 리드들을 제거하기 위한 수단이 필요하다. 본 실시예에서는, 작업 노드(140)의 중복 식별키 생성부는, 작업 노드(140)가 할당 받은 파티션에 포함된 리드 데이터들을 리드 매핑부(142)가 참조 서열의 특정 위치에 매핑한 결과에 기초하여, 중복 여부를 판단하기 위한 고유한 중복 식별키 값을 생성한다. 중복 식별키는, 동일한 참조 서열의 동일한 위치에 매핑된 리드들은 동일한 중복 식별키 값을 가지도록 하고, 상이한 참조 서열 또는 상이한 위치에 매핑된 리드들은 상이한 중복 식별키 값을 가지도록 하는 다양한 방법에 의해서 생성될 수 있다. 몇몇 실시예에서, 리드의 중복 식별키 값은, 리드가 매핑된 참조 서열 및 참조 서열 내의 위치에 의해 결정되는 값들을 해쉬 함수로 처리하여 생성될 수 있다. 다른 몇몇 실시예에서 리드의 중복 식별키 값은 다음의 수식 1과 같은 산출 방법에 의해 생성될 수 있다. QNAME이 동일한 첫번째 리드와 두번째 리드 각각의 POS 필드 값(POS)에 CIGAR 스트링을 적용하여 조정한 후, SAM 파일의 헤더를 참조하여 상기 리드가 매핑된 참조 서열(RNAME)에 대한 누적된 크로모좀 길이를 각각 더한 두 개의 값(FIRST_POS, SECOND_POS)을 산출하고, 산출된 값의 하위 32bit(LOWER_32(FIRST_POS))와 상위 32bit(UPPER_32(SECOND_POS))로 결합한 후 해쉬 함수로 처리(HASH(FINAL_POS_64))하여 중복 식별키 값을 생성할 수 있다.
[수식 1]
Figure 112019106259186-pat00002
작업 노드(140)가 할당 받은 파티션에 포함된 각 리드들의 상기 중복 식별키는 해당 리드의 리드 식별자(QNAME)와 함께 리스트로 구성되어 별도의 파일로 저장되거나 메모리에 기록될 수 있다. 상기 리스트는 각 리드의 중복 식별키와 리드 식별자에 관한 정보만을 포함되면 충분하므로, 리드 매핑부(122)가 생성하는 SAM 파일에 비하면 매우 작은 용량의 데이터이다. 상기 데이터는 스토리지(160)에 파일로 저장되거나, 또는 스토리지(160)를 거치지 않고 직접 마스터 노드(120)에 제공될 수 있다.
작업 노드(140)의 리드 카운트 산출부(146)는, 할당 받은 파티션에 포함된 리드 데이터들이 리드 매핑부(142)에 의해 참조 서열에 매핑된 결과를 기초로, 각 참조 서열에 매핑된 리드의 수를 산출하여 기록한다. 예를 들어, Chr1부터 Chr3까지 총 3개의 참조 서열이 주어졌고 할당 받은 파티션에 포함된 리드들 중에 Chr1에 매핑된 리드의 수가 456개, Chr2에 매핑된 리드의 수가 123개, Chr3에 매핑된 리드의 수가 789개인 경우, 리드 카운트 산출부(146)에 의해 산출되는 데이터는 아래 표 2와 같다.
Chr1 456
Chr2 123
Chr3 789
지금까지 설명한 리드 매핑부(142), 중복 식별키 생성부(144), 및 리드 카운트 산출부(146)의 동작들은, 순차적으로 수행될 수도 있지만, 동시에 수행될 수도 있다. 예를 들어, 작업 노드(140)에 할당된 파티션에 포함된 모든 리드들에 대한 리드 매핑 과정이 종료된 후에, 중복 식별키 생성 및 리드 카운트 산출 과정이 수행될 수 있다. 한편, 작업 노드(140)에 할당된 파티션에 포함된 리드들을 하나씩 순차적으로 읽어 내어, 참조 서열 매핑, 중복 식별키 생성, 참조 서열 당 매핑된 리드 카운트 업데이트를 진행하고, 파티션 내의 다음 리드를 판독하여 같은 과정을 반복할 수도 있다.
마스터 노드(120)의 중복 리드 리스트 생성부(124)는, 복수의 작업 노드(140)들이 각자 할당 받은 파티션에 포함된 리드들에 대해 생성한 중복 식별키 리스트들로부터 중복 리드들의 식별자 리스트를 생성한다. 중복 리드 리스트 생성부(124)는, 각 파티션 별로 생성된 중복 식별키 리스트들을 하나로 병합한 후, 모든 리드들에 대한 중복 식별키들을 서로 비교하여 중복된 리드들을 판별할 수 있다. 마스터 노드(120)의 중복 리드 리스트 생성부(124)는 중복 리드 리스트를 생성할 수 있다. 몇몇 실시예에서 중복 리드 리스트는 중복된 리드들의 식별자(QNAME)만을 나열한 리스트이다. 다른 몇몇 실시예에서 중복 리드 리스트는 중복된 리드들의 식별자(QNAME) 및 기타 관련 정보를 더 포함할 수도 있다. 중복 리드 리스트 생성부(124)는 상기 생성된 중복 리드 리스트를 스토리지(160)에 파일로 저장하거나, 또는 스토리지(160)를 거치지 않고 직접 작업 노드들(140)에게 제공할 수 있다.
다음은, 작업 노드(140)의 중복 리드 제거부(147)에 대해서 설명한다. 중복 리드 제거부(147)는, 상기 중복 리드 리스트를 기초로 하여, 할당된 파티션 내의 중복 리드들을 제거한다. 보다 구체적으로, 중복 리드 제거부(147)는 리드 매핑부(142) 등에 의해 참조 서열로의 매핑이 완료된 리드들에 관한 정보들을 적절한 수의 파티션으로 분할한 데이터(예컨대 SAM 파일)를 입력으로 받는다. 작업 노드(140)의 중복 리드 제거부(147)는 작업 노드(140)에 할당된 파티션(SAM 파일)에 포함된 각 리드들의 식별자가 상기 중복 리드 리스트에 포함되었는지를 판별하여, 중복 리드를 제거한다. 중복이 제거된 데이터는 작업 노드(140)의 리드 정렬부(148)로 제공된다.
작업 노드(140)의 리드 정렬부(148)는, 작업 노드(140)에 할당된 파티션(SAM 파일)에 포함된 각 리드들을 참조 서열 내의 위치를 기준으로 정렬(sorting)한다. 이때, 작업 노드(140)에 할당된 파티션(SAM 파일)에 포함된 리드들이 매핑된 참조 서열은 각기 다를 수 있다. 예컨대 하나의 작업 노드(140)에 할당된 파티션 내에는 Chr1에 매핑된 리드들과 Chr2에 매핑된 리드들이 뒤섞여 있을 수도 있다. 리드 정렬부(148)는 파티션 내의 리드들이 매핑된 참조 서열의 식별자(RNAME) 및 참조 서열 내에서의 위치(POS) 모두를 기준으로 리드들을 정렬할 수도 있지만, 참조 서열 내에서의 위치(POS)만을 기준으로 리드들을 정렬할 수도 있다. 본 실시예에서 리드 정렬부(148)는 정렬된 리드 데이터들을 SAM 파일 형식으로 스토리지(160)에 저장하거나, 스토리지(160)를 거치지 않고 직접 마스터 노드(120)에 제공할 수 있다.
다음으로, 마스터 노드(120)의 병합 정렬부(126)에 대해서 설명한다. 병합 정렬부는, 복수의 작업 노드(140)들이 생성한, 정렬된 리드들로 구성된 데이터(예컨대 SAM 파일)를 입력으로 받아서, 참조 서열 당 하나의 파티션을 구성하도록 병합(merge)한다. 상기 병합의 결과, 동일한 참조 서열에 매핑된 리드들은 동일한 파티션에 포함된다. 또한 병합 전의 리드들은 참조 서열 내에서의 위치(POS)를 기준으로 이미 정렬되어 있으므로, 상기 병합의 결과 참조 서열 당 하나의 파티션에 포함되는 리드들은 해당 참조 서열 내에서의 위치(POS)를 기준으로 정렬되어 있게 된다.
추가적으로 마스터 노드(120)의 병합 정렬부(126)는, 참조 서열 당 하나의 파티션으로 병합된 리드 데이터들을 참조 서열 당 하나의 BAM 파일 형식의 데이터로 저장 및 출력할 수 있다. 참조 서열 단위로 생성된 BAM 파일 형식의 데이터들은 변이 검출 장치 등에 제공되어 유전자 분석의 후속 과정에 활용될 수 있다.
지금까지 본 실시예에 따른 염기 서열 처리 시스템(100a)을 구성하는 마스터 노드(120) 및 작업 노드(140)의 세부 구성에 대하여 설명하였다. 그런데 도 1a 및 도 1b를 참조하여 앞서 설명한 바와 같이, 본 발명에서 작업 노드와 구별되는 마스터 노드가 반드시 구비되어야 하는 것은 아니며, 복수의 작업 노드(140) 중 적어도 하나가 마스터 노드(120)의 역할을 담당할 수도 있다. 이 경우 그러한 작업 노드(140)는 도 2에 도시된 마스터 노드(120)의 구성요소들을 모두 포함할 수 있다는 점을 이해할 수 있을 것이다.
이하에서는 도 3 및 도 5를 참조하여 본 발명의 다른 실시예에 따른 염기 서열 처리 방법을 설명한다. 본 실시예에 따른 염기 서열 처리 방법은 컴퓨팅 장치에서 수행될 수 있다. 예를 들어, 상기 컴퓨팅 장치는 도 1a, 도 1b, 및 도 2를 참조하여 설명한 염기 서열 처리 시스템(100a, 100b)의 마스터 노드(120) 및 작업 노드들(140a 내지 140c)일 수 있다. 본 실시예에 따른 염기 서열 처리 방법을 해석함에 있어서, 도 1a, 도 1b, 및 도 2를 참조하여 설명한 실시예들이 반영될 수 있을 것이다. 이하, 본 실시예에 따른 염기 서열 처리 방법에 포함된 각각의 동작에 대한 주체가 생략된 경우, 그 주체는 컴퓨팅 장치인 것으로 해석될 수 있을 것이다.
먼저 단계 S300에서, 마스터 노드(120)가 리드 데이터를 파티셔닝(분할) 한다. 단계 S300에서 마스터 노드(120)는 유전자 시퀀싱 장치(10) 등으로부터 제공받은 원시 리드 데이터들(FASTQ 파일들)을 작업 노드의 수만큼의 파티션으로 분할한다. 몇몇 실시예에서는, 마스터 노드(120) 대신에 복수의 작업 노드(140)들 중 어느 하나가 단계 S300을 수행할 수도 있다는 점에 유의한다. 도 5의 참조번호 500은 단계 S300에서 원시 리드 데이터들(FASTQ 파일들)이 작업 노드의 수(N)만큼의 파티션으로 분할된 결과를 예시적으로 보여준다.
단계 S310에서는, 복수의 작업 노드(140)들이 각각 할당 받은 파티션 내의 리드 데이터들을 참조 서열에 매핑한다. 상기 매핑 과정은 전술한 바와 같이 BigBWA, SparkBWA, KBigBWA 등 다양한 종래 소프트웨어 제품을 활용하여 수행될 수 있으며, 복수의 작업 노드(140)들에 의해 동시에 병렬적으로 수행될 수 있다. 상기 리드 데이터들의 매핑 결과는 SAM 파일 형식으로 생성되어 기록될 수 있다. 도 5의 참조번호 510은 단계 S310에서 예컨대 N개의 작업 노드들 각각이 할당 받은 리드 데이터를 참조 서열에 매핑한 결과를 N개의 SAM 파일로 기록한 예를 보여준다.
단계 S320에서는, 상기 매핑 결과에 기초하여, 복수의 작업 노드(140)들이 각각 할당 받은 파티션 내의 리드 데이터들에 대한 중복 식별키를 생성한다. 중복 식별키는 동일한 참조 서열의 동일한 위치에 매핑된 리드들은 동일한 중복 식별키 값을 가지고, 상이한 참조 서열 또는 상이한 위치에 매핑된 리드들은 상이한 중복 식별키 값을 가지도록 하는 다양한 알고리즘에 의해 생성될 수 있다. 몇몇 실시예에서 중복 식별키는 리드가 매핑된 참조 서열 및 참조 서열 내의 위치에 의해 결정되는 값들을 해쉬 함수로 처리하는 방법으로 생성될 수 있다. 각각의 리드의 식별자(QNAME)와 중복 식별키의 쌍으로 구성된 리스트는 파일에 저장되거나 메모리에 기록될 수 있다. 상기 리스트는 각 리드의 중복 식별키와 리드 식별자에 관한 정보만을 포함되면 충분하므로, 각 리드들의 염기 서열 데이터를 포함하는 SAM 파일에 비하면 매우 작은 용량의 데이터이다. 단계 S320의 중복 식별키 생성 과정 역시 복수의 작업 노드(140)들에 의해 동시에 병렬적으로 수행될 수 있다. 도 5의 참조번호 520은, 단계 S320에서 N개의 작업 노드들 각각이 할당 받은 리드 데이터에 대해 중복 식별키를 생성한 결과를 N개의 파일로 기록한 모습을 예시적으로 보여준다.
비록 도 3의 흐름도에는 단계 S310이 수행된 이후에 단계 S320이 수행되는 것으로 도시되었으나, 단계 S310 및 S320은 실질적으로 동시에 수행될 수 있다. 예를 들어, 각각의 작업 노드(140)들은, 할당된 파티션에 포함된 리드들을 하나씩 순차적으로 읽어 내어, 리드 매핑(S310)과 중복 식별키 생성(S320) 동작을 수행하고, 할당된 파티션 내의 다음 리드를 판독하여 상기 동작들을 반복할 수 있다.
단계 S330에서는, 마스터 노드(120)가 중복 리드 리스트를 생성한다. 마스터 노드(120)는 단계 S320에서 복수의 작업 노드(140)들이 각자 할당 받은 파티션에 포함된 리드들에 대하여 생성한 중복 식별키의 리스트들을 기초로, 중복 리드들의 식별자 리스트를 생성한다. 구체적으로, 단계 S330에서 마스터 노드는, 복수의 작업 노드(140)들에 의해 각 파티션 별로 생성된 중복 식별키 리스트들(예컨대 도 5의 참조번호 520)을 하나로 병합한 후, 모든 리드들에 대한 중복 식별키들을 서로 비교하여 중복된 리드들을 판별할 수 있다. 몇몇 실시예에서는, 마스터 노드(120) 대신에 복수의 작업 노드(140)들 중 어느 하나가 단계 S330을 수행할 수도 있다는 점에 유의한다.
전술한 바와 같이, 중복 식별키 리스트들은 각 리드의 중복 식별키와 리드 식별자에 관한 정보만을 포함하는 작은 용량의 데이터이므로, 마스터 노드(120)는 모든 리드들에 대한 중복 식별키들을 한꺼번에 메모리에 로드하여 중복된 리드들을 식별할 수 있게 된다. 이와 같이 본 실시예에서는, 각 작업 노드(140)가 분산 병렬로 생성한 중복 식별키들을 기초로 중복 리드를 식별함으로써, 각 리드들의 염기 서열 데이터를 포함하는 SAM 파일들을 비교하여 중복된 리드를 식별하는 것에 비해 훨씬 더 빠른 시간내에 상대적으로 적은 컴퓨팅 자원만으로도 중복 리드 식별을 수행할 수 있게 된다.
단계 S340에서, 복수의 작업 노드(140)들은 상기 중복 리드 리스트를 기초로 하여, 할당된 파티션 내의 중복 리드들을 제거한다. 보다 구체적으로, 단계 S340에서 각각의 작업 노드(140)들은, 상기 중복 리드 리스트에 포함된 리드 식별자들을 기초로, 단계 S310에서 파티션 별로 생성한 N개의 SAM 파일에 기록된 리드 데이터들로부터 중복된 리드들을 제거한다. 이때, 중복된 리드들을 제거하는 동작은, SAM 파일로부터 중복 리드들의 레코드들을 삭제하는 동작일 수 있으나, 반드시 이에 한정되는 것은 아니다. 예컨대, 중복 리드들의 레코드에 중복 리드임을 마킹하여 중복 리드임을 표시하는 동작도 본 실시예의 중복 리드 제거 동작에 포함된다. 중복 리드를 제거하는 동작은, 복수의 작업 노드(140)들이 각각 할당 받은 파티션에 대하여 동시에 병렬적으로 수행될 수 있다.
단계 S350에서는, 복수의 작업 노드(140)들은 할당된 파티션(SAM 파일)에 포함된 각 리드들을 참조 서열 내의 위치를 기준으로 정렬(sorting)한다. 몇몇 실시예에서, 할당된 파티션에 포함된 각 리드들은, 각자가 매핑된 참조 서열 내에서의 위치(POS)를 기준으로 정렬된다. 다른 몇몇 실시예에서, 할당된 파티션에 포함된 각 리드들은, 각자가 매핑된 참조 서열의 식별자(RNAME) 및 참조 서열 내에서의 위치(POS) 모두를 기준으로 정렬된다. 단계 S350에서, 리드들을 정렬하는 동작은, 복수의 작업 노드(140)들이 각각 할당 받은 파티션에 대하여 동시에 병렬적으로 수행될 수 있다.
단계 S350에서 정렬된 각각의 파티션들은 마스터 노드(120)에 의해 참조 서열 당 하나의 파티션을 구성하도록 다시 분할되어, 바이너리 형식의 BAM 파일로 저장되고 후속하는 유전자 분석 과정에 제공될 수 있다.
본 실시예에서는, 리드 매핑 단계(S310), 중복 리드 제거 단계(S340), 및 리드 정렬 단계(S350)가 복수의 작업 노드(140)들에 분산되어 병렬적으로 처리되므로, 하나의 컴퓨팅 노드를 사용하는 종래의 시스템보다 훨씬 빠른 시간 내에 대량의 염기 서열 리드 데이터를 처리할 수 있다. 나아가, 작업 노드(140)의 수를 늘릴수록 더 많은 데이터를 더 빠른 시간 내에 처리할 수 있게 되므로, 본 실시예에 따른 염기 서열 처리 시스템은 확장성(scalability)을 가지게 된다.
또한, 본 실시예에서는, 각각의 파티션에 대해 생성된 중복 식별키들을 마스터 노드가 취합하여 중복 리드를 식별하므로, 동일한 파티션에 포함된 리드들 사이의 중복 여부뿐만 아니라 각기 다른 파티션에 포함된 리드들 사이의 중복 여부를 판별할 수 있다. 따라서 대량의 염기 서열 리드 데이터를 복수의 작업 모드(140)에 분산하여 병렬적으로 처리하면서도, 전체 데이터 세트에 존재하는 중복 리드들을 제거할 수 있다.
또한, 염기 서열 데이터를 포함하는 대용량의 SAM 파일들을 비교하여 중복 리드를 식별하는 종래의 방식과 달리, 중복 식별키 및 리드 식별자만을 포함하는 작은 용량의 데이터를 처리하여 중복 리드를 판별하므로, 훨씬 더 빠른 시간내에 상대적으로 적은 컴퓨팅 자원만으로도 중복 리드들을 제거할 수 있다.
이하에서는 본 발명의 몇몇 실시예에 따른 염기 서열 처리 방법에 대하여 도 4 및 도 5를 참조하여 설명한다. 이하에서 설명할 몇몇 실시예는, 앞서 도 3을 참조하여 설명한 실시예와 유사하지만, 복수의 작업 노드가 중복 리드 제거 및 리드 정렬을 수행하기 이전에, 전체 리드들을 새로운 기준으로 다시 파티셔닝하여 작업 노드들에게 할당하는 구성을 추가로 포함한다.
먼저 단계 S400에서, 마스터 노드(120)가 리드 데이터를 1차 파티셔닝 한다. 단계 S400에서 마스터 노드(120)는 원시 리드 데이터들(FASTQ 파일들)을 작업 노드의 수만큼의 파티션으로 분할한다. 몇몇 실시예에서, 마스터 노드(120)는 복수의 작업 노드(140) 각각에 할당될 각각의 파티션에 동일한 수의 리드 데이터가 포함되도록 원시 리드 데이터를 분할할 수 있다. 다른 몇몇 실시예에서, 마스터 노드(120)는 복수의 작업 노드(140)들 각각의 성능이나 가용율을 고려하여 각 파티션에 서로 다른 개수의 리드 데이터가 포함되도록 원시 리드 데이터를 분할할 수도 있다. 한편, 또 몇몇 실시예에서는, 마스터 노드(120) 대신에 복수의 작업 노드(140)들 중 어느 하나가 단계 S400을 수행할 수도 있다는 점에 유의한다. 도 5의 참조번호 500은 단계 S400에서 원시 리드 데이터들(FASTQ 파일들)이 작업 노드의 수(N)만큼의 파티션으로 분할된 결과를 예시적으로 보여준다.
이하에서 설명될 단계 S410 내지 S430에서는, 상기 N개의 파티션이 N개의 작업 노드(140)들에 할당되어 각 동작들이 수행된다. 단계 S410 내지 S420과 관련한 설명에서 '복수의 작업 노드'란 상기 N개의 작업 노드를 의미한다.
단계 S410에서는, 복수의 작업 노드(140)들이 각각 할당 받은 파티션 내의 리드 데이터들을 참조 서열에 매핑한다. 단계 S410은 복수의 작업 노드(140)들에 의해 동시에 병렬적으로 수행될 수 있다. 상기 리드 데이터들의 매핑 결과는 SAM 파일 형식으로 생성되어 기록될 수 있다. 도 5의 참조번호 510은 단계 S410에서 예컨대 N개의 작업 노드들 각각이 할당 받은 리드 데이터를 참조 서열에 매핑한 결과를 N개의 SAM 파일로 기록한 예를 보여준다.
단계 S420에서는, 상기 매핑 결과에 기초하여, 복수의 작업 노드(140)들이 각각 할당 받은 파티션 내의 리드 데이터들에 대한 중복 식별키를 생성하고, 각각의 리드의 식별자(QNAME)와 중복 식별키의 쌍으로 구성된 리스트가 파일에 저장되거나 메모리에 기록될 수 있다. 단계 S420의 중복 식별키 생성 과정 역시 복수의 작업 노드(140)들에 의해 동시에 병렬적으로 수행될 수 있다. 도 5의 참조번호 520은, 단계 S420에서 N개의 작업 노드들 각각이 할당 받은 리드 데이터에 대해 중복 식별키를 생성한 결과를 N개의 파일로 기록한 모습을 예시적으로 보여준다.
단계 S430에서는, 각 파티션에 포함된 리드들에 대하여, 참조 서열 별로 매핑된 리드의 수를 산출한다. 구체적으로, 복수의 작업 노드(140)들에게 각각 할당된 파티션에 포함된 리드들이 단계 S410에서 참조 서열에 매핑된 결과를 기초로, 복수의 작업 노드(140)들은 각각 할당 받은 파티션에 포함된 리드들이 각 참조 서열에 매핑된 수를 산출한다. 단계 S430은 복수의 작업 노드(140)들에 의해 동시에 병렬적으로 수행될 수 있다. 도 5의 참조번호 530은, 단계 S430에서 N개의 작업 노드들 각각이 참조 서열 당 리드 카운트를 산출한 결과를 별도의 파일로 기록한 모습을 예시적으로 보여준다. 도 5의 참조번호 530으로 도시된 1.RNAME 내지 N.RNAME 파일에는 앞서 표 2를 통해 예시한 바와 같이 참조 서열 당 리드 카운트가 기록된다.
비록 도 4의 흐름도에는 단계 S410이 수행된 이후에 단계 S420이 수행되고, 단계 S420이 수행된 이후에 단계 S430이 수행되는 것으로 도시되었으나, 단계 S410 내지 S430은 실질적으로 동시에 수행될 수 있다. 예를 들어, 각각의 작업 노드(140)들은, 할당된 파티션에 포함된 리드들을 하나씩 순차적으로 읽어 내면서, 리드 매핑(S410), 중복 식별키 생성(S420), 및 해당 리드가 매핑된 참조 서열의 리드 카운트 업데이트(S430) 동작을 수행하고, 할당된 파티션 내의 다음 리드를 판독하여 상기 동작들을 반복할 수 있다.
단계 S440에서는, 마스터 노드(120)가 중복 리드 리스트를 생성한다. 마스터 노드(120)는 단계 S420에서 복수의 작업 노드(140)들이 각자 할당 받은 파티션에 포함된 리드들에 대하여 생성한 중복 식별키의 리스트들을 기초로, 중복 리드들의 식별자 리스트를 생성한다. 몇몇 실시예에서는, 마스터 노드(120) 대신에 복수의 작업 노드(140)들 중 어느 하나가 단계 S440을 수행할 수도 있다는 점에 유의한다.
단계 S450에서 마스터 노드(120)는, 단계 S430에서 산출된 참조 서열 당 리드 카운트를 기초로 단계 S410에서 산출된 SAM 파일 형식의 리드 데이터를 2차 파티셔닝한다. 구체적으로, 단계 S450에서 마스터 노드(120)는 참조 서열 당 리드 카운트를 기초로 적절한 파티션의 개수 및 각 파티션에 포함될 리드의 수를 결정하고, 그에 따라 리드 데이터를 분할한다. 2차 파티셔닝의 목적은, 서로 다른 참조 서열에 매핑된 리드들은 가급적 서로 다른 파티션에 포함되도록 하고, 각각의 파티션에 포함되는 리드의 수는 가급적 균일하도록 하는 것이다. 이러한 방식으로 리드 데이터들을 2차 파티셔닝 함으로써, 후술할 단계 S470에서 복수의 작업 노드(140)들이 할당된 파티션에 포함된 리드들을 정렬하는 시간이 단축되고, 단계 S480에서 참조 서열 당 하나의 파티션으로 병합 정렬하는 과정이 효과적으로 수행될 수 있다. 한편, 몇몇 실시예에서는, 마스터 노드(120) 대신에 복수의 작업 노드(140)들 중 어느 하나가 단계 S450을 수행할 수도 있다는 점에 유의한다. 도 5의 참조번호 550은, 단계 S450에서 수행된 2차 파티셔닝에 의해, 전체 리드 데이터가 M개의 파티션으로 분할되어 M개의 SAM 파일로 기록된 예를 보여준다.
이하에서 설명될 단계 S460 내지 S480에서는, 상기 M개의 파티션이 M개의 작업 노드(140)들에 할당되어 각 동작들이 수행된다. 단계 S460 내지 S480과 관련한 설명에서 '복수의 작업 노드'란 상기 M개의 작업 노드를 의미한다.
단계 S460에서는, 복수의 작업 노드(140)들이 단계 S440에서 생성된 중복 리드 리스트를 기초로 하여, 할당된 파티션 내의 중복 리드들을 제거한다. 보다 구체적으로, 단계 S460에서 각각의 작업 노드(140)들은, 상기 중복 리드 리스트에 포함된 리드 식별자들을 기초로, 단계 S450에서 생성한 M개의 파티션(SAM 파일)에 기록된 리드 데이터들로부터 중복된 리드들을 제거한다. 본 실시예의 단계 S460의 동작들을 이해함에 있어서, 도 3을 참조하여 앞서 설명한 실시예의 단계 S340의 동작들이 참고될 수 있다.
단계 S470에서는, 복수의 작업 노드(140)들은 할당된 파티션(SAM 파일)에 포함된 각 리드들을 참조 서열 내의 위치(POS)를 기준으로 정렬(sorting)한다. 본 실시예의 단계 S470의 동작들을 이해함에 있어서, 도 3을 참조하여 앞서 설명한 실시예의 단계 S350의 동작들이 참고될 수 있다.
단계 S480에서 마스터 노드(120)는, 단계 S470에서 정렬된 각각의 파티션(SAM 파일)들을 참조 서열을 기준으로 병합한다. 구체적으로 단계 S480에서 마스터 노드(120)는, 참조 서열 당 하나의 파티션을 구성하도록 리드 데이터들을 병합한다. 단계 S480의 동작을 수행한 결과, 동일한 참조 서열에 매핑된 리드들은 동일한 파티션에 포함된다. 또한 단계 S470에 의해, 각 리드들은 참조 서열 내에서의 위치(POS)를 기준으로 정렬되어 있으므로, 상기 병합의 결과 참조 서열 당 하나의 파티션에 포함되는 리드들은 해당 참조 서열 내에서의 위치(POS)를 기준으로 정렬되어 있게 된다. 몇몇 실시예에서, 참조 서열 당 하나의 파티션으로 병합 정렬된 리드 데이터들은 바이너리로 변환되어 참조 서열 당 하나의 BAM 파일로 기록될 수 있다. 도 5의 참조번호 560은 단계 S480에서 수행된 병합 정렬에 의해, 전체 리드 데이터가 L개의 참조서열 당 하나의 파티션으로 병합되고 바이너리로 변환되어 L개의 BAM 파일로 기록된 예를 보여준다.
지금까지 도 4 및 도 5를 참조하여 설명한 실시예에서는, 복수의 작업 노드가 중복 리드 제거 및 리드 정렬을 수행하기 이전에, 참조 서열 당 리드 카운트를 기초로 하여 마스터 노드가 전체 리드들을 2차 파티셔닝하는 단계를 추가로 포함한다. 본 실시예에서는 2차 파티셔닝을 통하여, 서로 다른 참조 서열에 매핑된 리드들은 서로 다른 파티션에 포함되도록 하고, 각각의 파티션에 포함되는 리드의 수는 가급적 균일하도록 함으로써, 후속하는 리드 정렬 단계(S470) 및 병합 정렬 단계(S480)가 보다 더 효율적으로 수행될 수 있게 된다.
지금까지 도 3 내지 도 5를 참조하여 설명된 본 발명의 실시예들은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이하에서는, 본 발명의 다양한 실시예에 따른 시스템을 구현할 수 있는 예시적인 컴퓨팅 장치의 구성에 관하여 도 6을 참조하여 설명한다.
도 6에 도시된 바와 같이, 본 발명의 다양한 실시예에 따른 시스템을 구현할 수 있는 컴퓨팅 장치(600)는 프로세서(610), 메모리(640), 네트워크 인터페이스(620), 스토리지(630) 및 프로세서(610), 메모리(640), 네트워크 인터페이스(620)와 스토리지(630) 사이를 연결하는 시스템 버스(650)를 포함할 수 있다.
스토리지(630)에는 파티셔닝 모듈(630a), 중복 리스트 생성 모듈(630b), 병합 정렬 모듈(630c), 리드 매핑 모듈(630d), 중복 식별키 생성 모듈(630e), 리드 카운트 산출 모듈(630f), 중복 리드 제거 모듈(630g), 및 리드 정렬 모듈(630h)이 저장될 수 있다. 상기 8개의 모듈은 각각 개별적으로 동작하는 소프트웨어로서, 그 실행파일(binary)이 메모리(1400)에 로드된 후 프로세서(610)에서 실행됨으로써, 컴퓨팅 장치(600)가 데이터 처리 및 제어 관련 동작들을 수행하게 된다.
파티셔닝 모듈(630a)은, 염기 서열 처리 시스템의 여러 처리 과정에서 입출력되는 리드 데이터 세트를 적절한 수의 서브 데이터 세트로 분할한다.
중복 리스트 생성 모듈(630b)은, 중복 식별키 리스트들에 포함된 중복 식별키들을 비교하여 중복 리드들의 식별자 리스트를 생성한다.
병합 정렬 모듈(630c)은, 정렬된 리드들로 구성된 데이터(예컨대 SAM 파일)를 참조 서열 당 하나의 파티션으로 병합(merge)한다.
리드 매핑 모듈(630d)은, 리드 데이터의 염기 서열과 참조 서열을 비교하여, 리드 데이터의 염기 서열과 일치하는 참조 서열의 위치를 식별한다. 리드 매핑 모듈(630d)은, BWT(Burrows-Wheeler Transformation)에 기반한 알고리즘 또는 해싱(hashing)에 기반한 알고리즘 등 기존에 알려진 다양한 알고리즘에 기반한 BigBWA, SparkBWA, KBigBWA, MAQ, SOAP, Bowtie, 및 Stampy 등의 다양한 소프트웨어 제품일 수 있다.
중복 식별키 생성 모듈(630e)은, 동일한 참조 서열의 동일한 위치에 중복하여 매핑되는 리드들을 식별하기 위한 중복 식별키를 생성한다. 중복 식별키는, 동일한 참조 서열의 동일한 위치에 매핑된 리드들은 동일한 중복 식별키 값을 가지도록 하고, 상이한 참조 서열 또는 상이한 위치에 매핑된 리드들은 상이한 중복 식별키 값을 가지도록 하는 다양한 방법에 의해서 생성될 수 있다. 예를 들어, 중복 식별키 생성 모듈(630e) 리드가 매핑된 참조 서열 및 참조 서열 내의 위치에 의해 결정되는 값들을 해쉬 함수로 처리하여 중복 식별키 값을 생성할 수 있다.
리드 카운트 산출 모듈(630f)은, 특정 파티션에 포함된 리드들에 대하여, 각 참조 서열에 매핑된 리드들의 수를 산출하여 기록한다.
중복 리드 제거 모듈(630g)은, 중복 리드 리스트를 기초로 하여 중복 리드들을 제거한다. 중복 리드 제거 모듈(630g)은 SAM 파일로부터 중복 리드들의 레코드들을 삭제함으로써 중복 리드를 제거하거나, SAM 파일 내의 중복 리드들의 레코드에 중복 리드임을 마킹하는 방법 등에 의해 중복 리드를 실질적으로 제거할 수 있다.
리드 정렬 모듈(630h)은, 특정 파티션에 포함된 각 리드들을 참조 서열 내의 위치를 기준으로 정렬(sorting)한다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이가 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이가 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (13)

  1. 복수의 컴퓨팅 노드 중 마스터 노드가, 염기 서열 리드(read)들로 구성된 염기 서열 데이터의 일부 파티션을, 상기 복수의 컴퓨팅 노드 중 둘 이상의 작업 노드에 할당하는 단계;
    상기 각각의 작업 노드가, 상기 할당된 파티션에 포함된 각각의 염기 서열 리드를 순차적으로 처리하는 단계 - 상기 처리하는 단계는 상기 각각의 염기 서열 리드를 복수의 참조 서열 중 어느 하나의 대응 위치에 매핑하면서, 상기 대응 위치를 이용하여 상기 각각의 염기 서열 리드의 중복 식별키를 포함하는 중복 식별키 리스트를 생성하는 단계를 포함함 -;
    상기 마스터 노드가, 상기 각각의 작업 노드로부터 상기 중복 식별키 리스트를 획득하는 단계;
    상기 마스터 노드가, 상기 각각의 염기 서열 리드의 염기 서열 데이터는 참조하지 않고 상기 중복 식별키 리스트에 기초하여 중복 리드 리스트를 생성하는 단계 - 상기 중복 리드 리스트는 중복 식별키가 동일한 염기 서열 리드들의 식별자의 리스트임 -;
    상기 마스터 노드가, 상기 중복 리드 리스트를 상기 각각의 작업 노드에 제공하는 단계; 및
    상기 각각의 작업 노드가, 상기 할당된 파티션에 포함된 각각의 염기 서열 리드 중 상기 중복 리드 리스트에 포함된 리드를 제거하면서, 상기 할당된 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 염기 서열 리드들을 정렬하는 단계
    를 포함하되,
    상기 중복 식별키는 동일한 참조 서열의 동일한 위치에 매핑된 리드들의 참조 서열 내의 위치에 의해 결정되는 값 및 상기 동일한 참조 서열의 동일한 위치에 매핑된 리드들이 매핑된 참조 서열에 대한 누적된 크로모좀 길이를 기초로 생성된 것인,
    염기 서열 리드의 병렬 처리 방법.
  2. 제1항에 있어서,
    상기 정렬하는 단계 이후에, 상기 복수의 컴퓨팅 노드 중 하나가, 상기 각각의 작업 노드에 의하여 정렬된 각각의 파티션을 병합하는 단계를 더 포함하는,
    염기 서열 리드의 병렬 처리 방법.
  3. 제1항에 있어서,
    상기 중복 식별키 리스트를 생성하는 단계는, 상기 할당된 파티션에 포함된 상기 리드들 각각에 대하여, 상기 중복 식별키 및 리드의 식별자를 저장하는 단계를 포함하고,
    상기 중복 리드 리스트를 생성하는 단계는, 상기 중복 식별키 및 상기 리드의 식별자를 기초로, 상기 중복 리드 리스트를 생성하는 단계를 포함하는,
    염기 서열 리드의 병렬 처리 방법.
  4. 삭제
  5. 제1항에 있어서,
    각각의 염기 서열 리드를 순차적으로 처리하는 단계는,
    상기 매핑 결과에 기초하여 상기 복수의 참조 서열 각각에 대하여 매핑된 리드 수를 산출하는 단계를 더 포함하고,
    상기 마스터 노드가, 상기 참조 서열 당 매핑된 리드 수에 기초하여 상기 복수의 파티션에 포함된 상기 염기 서열 리드들을 복수의 파티션으로 재분할하는 단계를 더 포함하는,
    염기 서열 리드의 병렬 처리 방법.
  6. 제5항에 있어서,
    상기 재분할하는 단계는,
    상이한 참조 서열에 매핑된 상기 염기 서열 리드들이 상이한 파티션에 포함되도록 분할하는 단계를 포함하는,
    염기 서열 리드의 병렬 처리 방법.
  7. 제1항에 있어서,
    상기 정렬하는 단계 이후에, 상기 복수의 파티션을 상기 참조 서열의 수만큼의 파티션으로 병합하는 단계를 더 포함하되,
    상기 병합하는 단계는,
    동일한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 동일한 파티션에 포함되도록 병합하고, 상기 각각의 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 각각의 파티션 내의 상기 염기 서열 리드들을 정렬하는 단계를 포함하는,
    염기 서열 리드의 병렬 처리 방법.
  8. 복수의 컴퓨팅 노드를 포함하는 시스템으로서,
    상기 복수의 컴퓨팅 노드 중 마스터 노드는, 중복 리드 리스트를 생성하는 중복 리드 리스트 생성부를 포함하고,
    상기 복수의 컴퓨팅 노드 중 둘 이상의 작업 노드는,
    할당된 파티션에 포함된 각각의 염기 서열 리드를 복수의 참조 서열 중 어느 하나의 대응 위치에 매핑하면서, 상기 대응 위치를 이용하여 상기 각각의 염기 서열 리드의 중복 식별키를 포함하는 중복 식별키 리스트를 생성하는 리드 매핑부;
    상기 할당된 파티션 내에 포함된 각각의 염기 서열 리드 중 상기 중복 리드 리스트에 포함된 리드를 제거하는 중복 리드 제거부; 및
    상기 중복 리드 제거부가 상기 중복 리드 리스트에 포함된 리드를 제거하는 것과 병렬적으로, 상기 할당된 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로, 상기 염기 서열 리드들을 정렬하는 리드 정렬부
    를 포함하되,
    상기 마스터 노드의 상기 중복 리드 리스트 생성부는,
    상기 각각의 작업 노드로부터 상기 중복 식별키 리스트를 획득하고,
    상기 각각의 염기 서열 리드의 염기 서열 데이터는 참조하지 않고 상기 중복 식별키 리스트에 기초하여 중복 리드 리스트를 생성하며 - 상기 중복 리드 리스트는 중복 식별키가 동일한 염기 서열 리드들의 식별자의 리스트임 -,
    상기 중복 리드 리스트를 상기 각각의 작업 노드에 제공하되,
    상기 중복 식별키는 동일한 참조 서열의 동일한 위치에 매핑된 리드들의 참조 서열 내의 위치에 의해 결정되는 값 및 상기 동일한 참조 서열의 동일한 위치에 매핑된 리드들이 매핑된 참조 서열에 대한 누적된 크로모좀 길이를 기초로 생성된 것인,
    시스템.
  9. 제8항에 있어서,
    상기 리드 매핑부는, 상기 할당된 파티션에 포함된 상기 리드들 각각에 대하여, 상기 중복 식별키 및 리드 식별자를 상기 중복 식별키 리스트에 저장하고,
    상기 중복 리드 리스트 생성부는, 상기 중복 식별키 및 상기 리드의 식별자를 기초로 상기 중복 리드 리스트를 생성하는,
    시스템.
  10. 삭제
  11. 제8항에 있어서,
    상기 리드 매핑부는, 상기 매핑 결과에 기초하여 상기 복수의 참조 서열 각각에 매핑된 리드 수를 산출하고,
    상기 마스터 노드는, 상기 참조 서열 당 매핑된 리드 수에 기초하여 상기 복수의 파티션에 포함된 상기 염기 서열 리드들을 복수의 파티션으로 재분할하는 파티셔닝부를 더 포함하는,
    시스템.
  12. 제11항에 있어서,
    상기 파티셔닝부는, 상이한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 상이한 파티션에 포함되도록 분할하는,
    시스템.
  13. 제8항에 있어서,
    상기 마스터 노드는 상기 복수의 파티션을 상기 참조 서열의 수만큼의 파티션으로 병합하는 리드 병합 정렬부를 더 포함하되,
    상기 리드 병합 정렬부는,
    동일한 대응 참조 서열에 매핑된 상기 염기 서열 리드들이 동일한 파티션에 포함되도록 병합하고, 상기 각각의 파티션 내의 상기 염기 서열 리드들의 상기 참조 서열 대응 위치를 기준으로 상기 각각의 파티션 내의 상기 염기 서열 리드들을 정렬하는,
    시스템.
KR1020190129507A 2019-10-18 2019-10-18 염기 서열 처리 시스템 및 방법 KR102447192B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190129507A KR102447192B1 (ko) 2019-10-18 2019-10-18 염기 서열 처리 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190129507A KR102447192B1 (ko) 2019-10-18 2019-10-18 염기 서열 처리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20210046136A KR20210046136A (ko) 2021-04-28
KR102447192B1 true KR102447192B1 (ko) 2022-09-26

Family

ID=75720839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190129507A KR102447192B1 (ko) 2019-10-18 2019-10-18 염기 서열 처리 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102447192B1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101906970B1 (ko) * 2011-06-20 2018-12-06 삼성전자주식회사 분산 처리를 이용한 핵산 서열의 분석 방법 및 장치, 핵산 서열 분석을 위한 분산 처리 시스템
KR20140081385A (ko) 2012-12-21 2014-07-01 한국전자통신연구원 리드 서열 정렬 방법 및 그것을 이용한 리드 서열 정렬 장치
KR20170121446A (ko) * 2016-04-25 2017-11-02 주식회사 피디젠 유전체 정보 분석 방법
KR101881637B1 (ko) * 2016-05-19 2018-08-24 주식회사 케이티 유전체 데이터 분석을 위한 작업 처리 방법 및 시스템
KR20180016888A (ko) * 2016-08-08 2018-02-20 삼성전자주식회사 분산 처리를 이용한 유전체 서열 분석 장치의 동작 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
L. Pireddu 외, "SEAL: a distributed short read mapping and duplicate removal tool", Bioinformatics, 27(15):2159-60. (2011.06.22.)*
L. Pireddu 외, "Seqal-Seal", 인터넷 <URL: http://biodoop-seal.sourceforge.net/seqal_index.html> (2016.04.08. 공개, 2021.12.15. 추출)*

Also Published As

Publication number Publication date
KR20210046136A (ko) 2021-04-28

Similar Documents

Publication Publication Date Title
CN107609350B (zh) 一种二代测序数据分析平台的数据处理方法
WO2017143585A1 (zh) 对分隔长片段序列进行组装的方法和装置
Lemane et al. Kmtricks: efficient and flexible construction of bloom filters for large sequencing data collections
JP6665784B2 (ja) ログ分析システム、ログ分析方法およびログ分析プログラム
US10409844B2 (en) Method for extracting maximal repeat patterns and computing frequency distribution tables
CN107403075A (zh) 比对方法、装置及系统
JP6198659B2 (ja) 配列データ解析装置、dna解析システムおよび配列データ解析方法
CN107798216B (zh) 采用分治法进行高相似性序列的比对方法
JP2012094141A (ja) 遺伝情報管理システムおよび遺伝情報管理方法
CN113342750A (zh) 一种文件的数据比对方法、装置、设备及存储介质
US9886561B2 (en) Efficient encoding and storage and retrieval of genomic data
US10325676B2 (en) Method and system for high-throughput sequencing data analysis
JP2019046023A (ja) 情報処理装置、情報処理方法及びプログラム
CA2580044A1 (en) Gene identification signature (gis) analysis for transcript mapping
CN109658981B (zh) 一种单细胞测序的数据分类方法
KR102447192B1 (ko) 염기 서열 처리 시스템 및 방법
Urgese et al. BioSeqZip: a collapser of NGS redundant reads for the optimization of sequence analysis
CN117235069A (zh) 索引创建方法、数据查询方法、装置、设备及存储介质
CN115662523B (zh) 面向群体基因组索引表示与构建的方法及设备
Lu et al. TASSEL 3.0 universal network enabled analysis kit (UNEAK) pipeline documentation
GB2517335A (en) Information processing device, program, and method for identifying result of joining plurality of elements
US20190050531A1 (en) Dna sequence processing method and device
JP2008161056A (ja) Dna配列解析装置、dna配列解析方法およびプログラム
JP2013226104A (ja) 塩基配列のリードエラーを判定するためのプログラム
EP2390811B1 (en) Identification of ribosomal DNA sequences

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant