KR20220164409A - 유전체 서열 정렬 가속 장치 및 방법 - Google Patents

유전체 서열 정렬 가속 장치 및 방법 Download PDF

Info

Publication number
KR20220164409A
KR20220164409A KR1020220048190A KR20220048190A KR20220164409A KR 20220164409 A KR20220164409 A KR 20220164409A KR 1020220048190 A KR1020220048190 A KR 1020220048190A KR 20220048190 A KR20220048190 A KR 20220048190A KR 20220164409 A KR20220164409 A KR 20220164409A
Authority
KR
South Korea
Prior art keywords
index
genome
hash
reference genome
seed
Prior art date
Application number
KR1020220048190A
Other languages
English (en)
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 US17/832,252 priority Critical patent/US20220392578A1/en
Publication of KR20220164409A publication Critical patent/KR20220164409A/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
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q1/00Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions
    • C12Q1/68Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions involving nucleic acids
    • C12Q1/6869Methods for sequencing
    • 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
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/30Data warehousing; Computing architectures

Landscapes

  • Life Sciences & Earth Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Organic Chemistry (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Biotechnology (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Zoology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Analytical Chemistry (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Wood Science & Technology (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Biology (AREA)
  • Microbiology (AREA)
  • Genetics & Genomics (AREA)
  • Immunology (AREA)
  • General Engineering & Computer Science (AREA)
  • Biochemistry (AREA)
  • Molecular Biology (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

유전체 서열 정렬 가속 장치 및 방법이 개시된다. 실시예에 따른 유전체 서열 정렬 가속 방법은, 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계, 메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계, 유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계, 추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계 및 일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계를 포함할 수 있다.

Description

유전체 서열 정렬 가속 장치 및 방법{Apparatus and Method for Genome Sequence Alignment Acceleration}
실시예는 유전체 서열 정렬(Genome Sequence Alignment) 가속 기술에 관한 것이다.
유전체 서열 정렬(Genome Sequence Alignment)은 인간 혹은 생물체로부터 읽어낸 짧은 염기서열이 인간 혹은 생물체 전체의 유전체로 구성된 참조 유전체(Reference Genome)의 어느 곳에 위치하는지 결정하는 것을 말한다. 이때, 모든 유전체는 동일하지 않고, 염기서열을 읽어내는 것에도 오류가 발생할 수 있기 때문에, 염기서열의 추가(insert), 삭제(delete) 및 변형(mutation)을 고려하여 참조 유전체에서 대상 염기서열과 가장 유사한 염기서열의 위치를 검색하여 결정하게 된다.
인간 혹은 특정 종의 생물체의 전체 유전체를 구성하는 데는 많이 비용이 소요된다. 그런데, 유전체 서열 정렬을 이용하면 인간 혹은 생물체로부터 짧은 염기서열들만을 다량 읽어내는 것만으로 전체 유전체를 구성할 수 있으므로, 전체 유전체를 저렴한 비용으로 분석할 수 있게 된다. 이를 통해 유전자의 돌연변이나 변형으로 인한 병의 원인을 쉽게 파악해 낼 수 있게 된다.
이와 같은 유전체 서열 정렬이 가능한 이유는 유전체들의 유사성이 매우 높기 때문이다. 두 사람의 유전체의 대부분이 일치하기 때문에, 짧은 염기서열에 대해 참조 유전체에서 가장 비슷한 부분을 찾아서 그 위치를 짧은 염기서열의 위치로 추정할 수 있는 것이다. 사람들간의 염기서열 차이는 평균 0.1%이며, 길이가 100인 염기서열에 대해 90%이상의 참조 유전체와 완벽히 일치(exact matching)한다는 연구도 있다. 다만, 이는 시퀀싱 기계의 오류를 감안하지 않은 수치이므로, 동일한 연구에서 오류를 감안한 실제 일치 비율의 예시는 67.6%로 보고되었다.
한편, 유전체 서열 정렬에서 많이 쓰이는 기법 중에 Borrows-Wheeler Transform (BWT) 알고리즘과 Ferragina Manzini(FM) Index 구조가 있다. 이를 사용하면 긴 문자열에서 다른 짧은 문자열이 포함된 위치를 효율적으로 검색할 수 있다. 이 기법은, 짧은 문자열의 첫 번째 글자가 포함된 긴 문자열 내의 위치들을 찾고, 그 위치들 중에 짧은 문자열의 두 번째 글자로 이어지는 위치들을 찾는 방식으로 실행된다.
이러한 유전체 서열 정렬을 고속으로 처리하기 위한 다양한 하드웨어 장치(FPGA, ASIC 등) 및 소프트웨어 기술들이 나와 있다. 하드웨어 장치를 사용하면 염기서열 정렬의 특정 단계를 매우 빠르게 만들 수 있다. 하지만 하드웨어 장치를 사용하려면 그 장치 및 장치가 설치 가능한 특별한 장비가 필요하며, 해당 하드웨어가 적용될 수 있는 특정 단계만 가속한다. 또, 장치에 따라 염기서열 정렬의 정확도에 영향을 주기도 한다.
소프트웨어 기술들의 경우 일반적인 컴퓨터에 바로 적용할 수 있다는 장점이 있다. 하지만 메모리 요구량이 많은 기술의 경우 이미 구축된 시스템에 적용하기 어려운 경우도 있다. 예를 들면, 전술한 일치 정합의 경우를 빠르게 찾기 위해 해쉬테이블을 사용할 경우 수십에서 수백 기가바이트의 메모리가 추가로 필요하므로 일반적인 컴퓨터에서 구동하기 어렵다.
컴퓨터 시스템에서 메모리는 프로그램의 실행 가능 여부를 결정짓는다. 프로그램이 필요한 만큼의 메모리가 확보되지 않으면 프로그램은 실행되지 못한다. 그러므로 컴퓨터 시스템을 구축할 때 메모리는 예상 가능한 최대 필요량에 맞추어 구축하게 된다. 그렇기 때문에 대부분의 시간 동안에는 일부 메모리가 쓰이지 않고 남아있게 된다.
기재된 실시예는 가용한 메모리 용량에 따라 유전체 서열 정렬(Genome Sequence Alignment) 속도를 향상시키는 데 그 목적이 있다.
기재된 실시예는 특별한 하드웨어가 필요없이 시스템에 남는 메모리를 활용하여 유전체 서열 정렬(Genome Sequence Alignment) 속도를 향상시키는 데 그 목적이 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 적어도 하나의 프로그램이 기록된 메모리 및 프로그램을 실행하는 프로세서를 포함하며, 프로그램은, 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계, 메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계, 유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계, 추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계 및 일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계를 수행할 수 있다.
이때, 프로그램은, 추가 인덱스를 메모리에 로딩하는 단계에서, 유전체 서열 정렬의 인덱스에 사용될 메모리 총량에서 필수 인덱스의 크기를 뺀 메모리 가용량을 추가 인덱스 로딩에 사용할 수 있다.
이때, 프로그램은, 추가 인덱스를 메모리에 로딩하는 단계에서, 추가 인덱스가 둘 이상일 경우, 순차적으로 추가 인덱스를 로딩하되, 추가 인덱스를 로딩하는 순서는, 각 인덱스의 유전체 서열 정렬 성능에 미치는 영향을 기준으로 결정될 수 있다.
이때, 프로그램은, 추가 인덱스를 메모리에 로딩하는 단계에서, 메모리 가용량이 로딩 대상인 추가 인덱스의 크기 이상인의 여부에 따라, 추가 인덱스 전체 또는 일부를 로딩하되, 추가 인덱스의 일부를 로딩하는 경우, 해당 추가 인덱스의 필수 부분을 우선적으로 로딩할 수 있다.
이때, 추가 인덱스는, 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계에서 사용되는 제1 인덱스를 포함하되, 제1 인덱스는, 참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함할 수 있다.
이때, 해시 엔트리는, 시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함할 수 있다.
이때, 프로그램은, 추가 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계에서, 대상 염기 서열의 해시 값을 계산하는 단계, 해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계, 해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계 및 일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 수행할 수 있다.
이때, 프로그램은, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 수행할 수 있다.
이때, 프로그램은, 일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 수행하는 단계, 참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계, 일치도의 결과를 생성하는 단계를 포함하되, 최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속할 수 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계, 메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계, 유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계, 추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계 및 일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계를 포함할 수 있다.
이때, 추가 인덱스를 메모리에 로딩하는 단계는, 메모리 가용량이 로딩 대상인 추가 인덱스의 크기 이상인의 여부에 따라, 추가 인덱스 전체 또는 일부를 로딩하되, 추가 인덱스의 일부를 로딩하는 경우, 해당 추가 인덱스의 필수 부분을 우선적으로 로딩할 수 있다.
이때, 추가 인덱스는, 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계에서 사용되는 제1 인덱스를 포함하되, 제1 인덱스는, 참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함할 수 있다.
이때, 해시 엔트리는, 시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함할 수 있다.
이때, 추가 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계는, 대상 염기 서열의 해시 값을 계산하는 단계, 해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계, 해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계 및 일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 포함할 수 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 포함할 수 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 포함하는 단계, 참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계 및 일치도의 결과를 생성하는 단계를 포함하되, 최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속할 수 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계, 메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계, 유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계, 추가 인덱스 중 제1 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계, 일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계, 일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 수행하는 단계, 참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계 및 일치도의 결과를 생성하는 단계를 수행하되, 최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속할 수 있다.
이때, 제1 인덱스는, 참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함하되, 해시 엔트리는, 시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함할 수 있다.
이때, 제1 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계는, 대상 염기 서열의 해시 값을 계산하는 단계, 해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계, 해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계 및 일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 수행할 수 있다.
실시예에 따른 유전체 서열 정렬 가속 방법은, 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 포함할 수 있다.
기재된 실시예에 따라, 가용한 메모리 용량에 따라 가속 방법들의 일부 혹은 전체를 사용하도록 함으로써 가용한 메모리 용량에 비례한 유전체 서열 정렬(Genome Sequence Alignment) 속도를 향상시킬 수 있다.
기재된 실시예에 따라, 특별한 하드웨어가 필요없이 시스템에 남는 메모리를 활용하여 유전체 서열 정렬(Genome Sequence Alignment) 속도를 향상시킬 수 있다.
기재된 실시에에 따라, 유전체들의 일치도가 높은 것을 활용해 유전체 서열 정렬의 성능을 향상시킨 것으로, 기존의 BWT 알고리즘을 활용한 일치정합 탐색 보다 속도를 증가시킬 수 있다.
도 1은 실시예에 따른 유전체 서열 정렬 가속화 방법을 설명하기 위한 순서도이다.
도 2는 실시예에 따른 추가 인덱스를 메모리에 로딩하는 단계를 상세히 설명하기 위한 순서도이다.
도 3은 실시에에 따라 일치 정합을 신속 검색하기 위한 제1 인덱스의 예시도이다.
도 4는 실시예에 따른 빠른 일치 정합 여부 확인 단계를 상세히 설명하기 위한 순서도이다.
도 5는 실시 예를 유전체 서열 정렬 프로그램인 BWA-MEM2에 구현하여 실험한 결과이다.
도 6는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 실시예에 따른 유전체 서열 정렬 가속화 방법을 설명하기 위한 순서도이다. 이러한 유전체 서열 정렬 가속화 방법은 도 6에 도시된 유전체 서열 정렬 가속화 장치에 의해 수행될 수 있다.
도 1을 참조하면, 실시예에 따른 유전체 서열 정렬 가속화 방법은, 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계(S110), 메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계(S120), 유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계(S130), 추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계(S140) 및 일치 정합할 경우(S150), 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계(S190)를 포함할 수 있다.
추가적으로, 실시예에 따른 유전체 서열 정렬 가속화 방법은, 일치 정합하지 않을 경우(S150), 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 수행하는 단계(S170), 참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계(S180) 및 일치도의 결과를 생성하는 단계(S190)를 더 포함하되, 최대 부분 정합 탐색을 수행하는 단계(S180)에서, 추가 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속하는 단계(S160)를 더 포함할 수 있다.
이때, 필수 인덱스는, 일반적인 유전체 서열 정렬 과정에 쓰이는 것일 수 있다.
이때, 추가 인덱스는 실시예에 따른 것으로, 유전체 서열 정렬의 가속화시켜 성능을 향상시키기 위해 추가될 수 있다.
이러한 추가 인덱스는, 복수 개일 수 있다. 복수 개의 인덱스들 각각은 전부가 로딩되어야 동작 가능할 수도 있고, 일부만 로딩하여도 동작 가능할 수도 있다. 따라서, 실시예에서는 유전체 서열 정렬 장치의 메모리 가용량에 따라 추가 인덱스를 전부 로딩하거나, 일부만 로딩하거나, 일부와 특정 인덱스의 일부만 로딩할 수도 있다. 이러한 추가 인덱스를 메모리에 로딩하는 단계(S120)에 대한 상세한 설명은 도 2를 참조하여 후술하기로 한다.
이때, 추가 인덱스는 신속한 일치 정합 여부 확인을 위한 제1 인덱스를 포함할 수 있다.
따라서, 제1 인덱스는, 실시예에 따라 대상 염기 서열이 참조 유전체에 일치 정합(exact matching)하는지를 확인하는 단계(S140)를 신속히 수행하기 위해 사용될 수 있다. 이러한 제1 인덱스의 구성 및 제1 인덱스를 사용한 일치 정합(exact matching)하는지를 확인하는 단계(S140)에 대한 상세한 설명은 도 3 및 도 4를 참조하여 후술하기로 한다.
또한, 추가 인덱스는 최대 부분 정합 탐색 가속을 위한 제2 인덱스 중 적어도 하나를 포함할 수 있다. 따라서, 추가 인덱스는, 실시예에 따라 최대 부분 정합 탐색의 초기 부분을 가속하는 단계(S160)에서 사용될 수 있다.
한편, 실시예에 따른 S130 내지 S190는, 입력된 대상 염기 서열이 더 존재하는지의 여부(S195)에 따라, 더 이상 대상 염기 서열이 존재하지 않을 때까지 반복 수행될 수 있다.
도 2는 실시예에 따른 추가 인덱스를 메모리에 로딩하는 단계를 상세히 설명하기 위한 순서도이다.
도 2를 참조하면, 유전체 서열 정렬 가속화 장치는 추가 인덱스를 위한 메모리 가용량을 산출한다(S205). 즉, 유전체 서열 정렬에 사용되는 인덱스를 위한 메모리 가용량을 M이라고 할 때, 전술한 S110을 수행한 이후, 인덱스를 위한 메모리 가용량 M은 S110의 수행하기 이전의 M에서 필수 인덱스의 크기를 뺀 것으로 갱신될 수 있다. 따라서, 갱신된 메모리 가용량 M이 추가 인덱스를 위해 사용될 수 있다.
실시예는 메모리 가용량에 따라 유전체 서열 정렬 속도를 향상시키는 것을 목표로 하므로, S205에서 산출된 메모리 가용량에 따라 추가 인덱스를 로딩할지 여부를 결정해야 한다.
이를 위해, 유전체 서열 정렬 장치는 복수의 추가 인덱스에 대해 순서대로 로딩 여부를 판단한다.
이때, 추가 인덱스를 로딩하는 순서는 각 인덱스의 유전체 서열 정렬 성능에 미치는 영향을 기준로 결정될 수 있다. 그러면 시스템의 가용한 메모리 용량에 따라 유전체 서열 정렬 성능을 최대화할 수 있다.
우선, 유전체 서열 정렬 장치는 추가 인덱스 ID를 입력하는 변수 A를 '1'로 초기화하고(S210), 인덱스 A가 존재하는지를 판단한다(S215).
S215의 판단 결과 인덱스 A가 존재하지 않을 경우, 유전체 서열 정렬 장치는 인덱스 로딩을 종료한다.
반면, S215의 판단 결과 인덱스 A가 존재할 경우, 유전체 서열 정렬 장치는 메모리 가용량 M이 현재 로딩 대상인 인덱스 A의 크기 이상인지를 판단한다(S220).
S220의 판단 결과 메모리 가용량 M이 현재 로딩 대상인 인덱스 A의 크기 이상일 경우, 유전체 서열 정렬 장치는 인덱스 A를 메모리에 로딩한다(S225).
그런 후, 유전체 서열 정렬 장치는 메모리 가용량 M 및 인덱스 A 각각을 업데이트(S230~S235)하고, S215의 단계로 진행한다. 즉, S230에서 이전 메모리 가용량 M에서 로딩된 인덱스 A의 크기를 감하여 현재 메모리 가용량 M을 업데이트한다. 또한, S235에서 인덱스 A를 다음 순서의 인덱스로 엡데이트한다.
한편, S220의 판단 결과 메모리 가용량 M이 현재 로딩 대상인 인덱스 A의 크기 이상이 아닐 경우, 유전체 서열 정렬 장치는 인덱스 A가 부분 로딩이 가능한지를 판단한다(S240).
S240의 판단 결과 인덱스 A가 부분 로딩이 가능할 경우, 유전체 서열 정렬 장치는 가능한 부분까지 인덱스 A를 로딩한다(S245~S260).
다만, 부분 로딩이 가능한 인덱스라도 인덱스 사용에 필요한 필수 부분이 있을 수 있다. 따라서, 유전체 서열 정렬 장치는 메모리 가용량 M이 인덱스 A의 필수 부분의 크기 이상인지를 판단한다(S245).
S245의 판단 결과 메모리 가용량 M이 인덱스 A의 필수 부분의 크기 이상일 경우, 유전체 서열 정렬 장치는 인덱스 A의 필수 부분을 우선적으로 로딩한다(S250). 그런 후, 유전체 서열 정렬 장치는 메모리 가용량 M에서 인덱스 A의 필수 부분의 크기를 감한다(S255). 또한, 인덱스 A의 선택 부분을 M 만큼 로딩한다(S260).
한편, S240의 판단 결과 부분 로딩이 가능하지 않은 경우 또는 S245의 판단 결과 메모리 가용량 M이 인덱스 A의 필수 부분의 크기보다 작을 경우, S235 단계로 진행하여 다음 순서의 인덱스를 고려한다.
전술한 S215 내지 S260는 추가 인덱스가 남아 있을 때까지 반복적으로 수행될 수 있다.
다음으로, 도 3 및 도 4를 참조하여 일치 정합을 신속 검색하기 위한 제1 인덱스 및 이를 이용한 빠른 일치 정합 여부 확인 단계(S140)를 상세히 살펴보기로 한다.
도 3은 실시에에 따라 일치 정합을 신속 검색하기 위한 제1 인덱스의 예시도이다.
도 3을 참조하면, 제1 인덱스는 시드 테이블(Seed Table) 및 다중 위치 테이블(Multi-Location Table)의 두 가지 테이블들로 구성될 수 있다.
이때, 시드 테이블(Seed Table)은 참조 유전체의 참조 염기서열을 해시 함수를 이용하여 해시 테이블의 값으로 표현된 것으로, 참조 염기서열의 색인(키 값)을 미리 생성해두고, 짧은 염기서열에 대해 참조 유전체에서의 위치를 빠르게 찾는 것을 가능하게 한다. 이때 염기서열의 색인을 생성하는 단위를 시드(Seed)라고 한다.
이때, 시드의 사이즈는 일치 정합 대상 크기로, 예컨대, 도 3에 도시된 바와 같이, '4'로 정해졌으므로, 주어진 참조 유전체 'ACTGACTGACTGACTGACTGAAAACCCCTTTTGGGG'에 대해 일치 정합 대상 크기 '4'에 해당하는 상이한 시드들이 추출될 수 있다. 예컨대, 'AAAA', 'ACTG'와 같이 참조 유전체에서 4개의 문자로 구성되는 시드들이 추출될 수 있다.
이러한 시드 테이블(Seed Table)은 참조 유전체에서 추출된 시드들 각각에 해시 함수가 적용된 해시값(Hash Value) 및 해시 엔트리로 구성될 수 있다,
이때, 해시 함수는 참조 유전체로부터 추출된 시드들에 적용될 수 있는 함수로 다양한 실시예들이 가능하다.
또한, 해시 엔트리에는 Location, Collision, Next 및 Multi-Location이 포함될 수 있다.
이때, Location은 시드의 참조 유전체에서의 위치 정보로, 참조 유전체의 선두를 '0'으로 하여 시드가 참조 유전체에서 시작되는 위치 정보일 수 있다. 예컨대, 도 3을 참조하면, 'ACTG'는 참조 유전체의 선두에 위치하므로 Location이 '0'이고, 'AAAA'는 참조 유전체의 17번째부터 시작하므로 Location이 '16'일 수 있다.
그리고, Collision은 해당 해시 엔트리의 해시 충돌(hash collision) 여부 정보이다. 즉, 이전에 동일한 해시값이 없을 경우는 해시 충돌 없음을 나타내는 'x'로 표시되고, 이전에 동일한 해시값이 있을 경우는 해시 충돌 있음을 나타내는 'o'로 표시될 수 있다. 예컨대, 도 3을 참조하면, 'AAAA'의 해시값이 '0'으로 이전에 동일한 해시값을 가지는 시드가 없으므로 'x'로 표시되어 있고, 'AAAC'의 해시값은 '0'으로, 이전에 동일한 해시값을 가지는 시드 'AAAA'가 존재하므로 'o'로 표시되어 있다.
또한, Next는 동일한 해시값을 가지는 다음 번 엔트리의 인덱스(index) 번호이다.
이때, 동일한 해시값을 가지는 시드가 N개 있을 경우, 1~N-1번째 엔트리는 다음 엔트리의 인덱스 번호를 가진다. 예컨대, 도 3을 참조하면, 'AAAA'의 해시값인 '0'과 동일한 해시값을 가지는 다음번 엔트리는 시드 'AAAC'로 엔트리의 인덱스 번호가 '2'이므로, Next는 '2'일 수 있다.
또한, N번째 엔트리 또는 동일한 해시값을 가지는 시드가 없는 경우에는 해시 테이블 엔트리 전체 개수보다 큰 값을 가진다. 예컨대, 해시값이 '0'인 마지막 엔트리인 시드 'AACC'에 대해서는 Next가 해시 테이블의 엔트리 전체 개수보다 큰 값인 '1000'일 수 있다. 또한, 해시값이 '10'인 엔트리는 시드 'GGGG'가 유일하므로, Next가 해시 테이블의 엔트리 전체 개수보다 큰 값인 '1000'일 수 있다.
마지막으로, Multi-Location은 동일한 시드를 가지는 참조 유전체상의 위치가 2개 이상일 경우, 해당 위치들을 기록해놓은 다중 위치 테이블(Multi-Location Table) 상의 인덱스를 나타낸다.
한편, Multi-Location Table은 한 가지 Seed가 참조유전체의 2군데 이상의 위치에서 나타날 경우, 해당 위치들을 모아서 기록해놓는다. 단, Seed Table에 포함된 위치는 기록하지 않는다.
예컨대, 도 3을 참조하면, 참조 유전체에서 시드 'ACTG'의 위치는 4개인데, 0, 4, 8, 12일 수 있다. 그러면, 다중 위치 테이블(Multi-Location Table)에는 최초 위치를 제외한 위치들 '4, 8, 12'가 '0'인 인덱스 번호에 기록될 수 있다. 그리고, 시드 테이블에는 시드 'ACTG'의 최초 위치에 상응하는 해시 엔트리의 Multi-Location에 다중 위치 테이블(Multi-Location Table)에서의 인덱스가 표시될 수 있다.
한편, 도 3의 Seed Table 중 인덱스 및 SEED(11)은 실제로는 저장되지 않는다. 이는 Location 정보만 있으면 참조 유전체를 읽어서 Seed를 추출할 수 있으며, 해시 값도 계산할 수 있기 때문이다.
또한, 일치 정합 여부를 빠르게 확인하는 인덱스에서, Seed Table은 일부분만 로딩해도 사용될 수 있다. 그러나, Multi-Location Table은 전부를 로딩해야만 사용할 수 있는데, 이는 Seed Table 내 다양한 위치의 엔트리에서 Multi-Location Table의 엔트리들을 참조하기 때문이다.
도 4는 실시예에 따른 빠른 일치 정합 여부 확인 단계를 설명하기 위한 순서도이다.
여기서는 일치정합을 빠르게 찾는 제1 인덱스를 일부분만 로딩했을 때, 일치정합 여부를 확인하는 실시 예를 보여준다. 그러나, 도 4의 동작은 제1 인덱스가 모두 로딩되어 있을 때에도 동일하게 적용될 수 있다.
유전체 서열 정렬 장치는 입력된 대상 염기 서열의 해시 값을 계산한다(S310).
그런 후, 유전체 서열 정렬 장치는 계산된 해시 값이 Seed Table 중 로드된 엔트리 개수인 NUM 보다 작은지를 판단한다(S320).
S320의 판단 결과 계산된 해시 값이 NUM보다 작지 않을 경우, 유전체 서열 정렬 장치는 신속한 일치 정합의 실패로 판단하고, S160의 단계로 진행한다. 즉, 신속히 일치 정합 여부를 찾지 못하더라도 필수 인덱스만을 사용하는 기존 유전체 서열 정렬 방법으로 해당 입력 염기 서열을 정렬할 수 있다.
반면, S320의 판단 결과 계산된 해시 값이 NUM보다 작은 경우, 유전체 서열 정렬 장치는 해시 값에 해당하는 해시 엔트리를 탐색한다(S330).
그런 후, 유전체 서열 정렬 장치는 탐색된 해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌(Collision) 엔트리인지의 여부를 판단한다(S340).
S340의 판단 결과 해시값에 해당하는 엔트리가 탐색되지 않거나, 탐색된 엔트리가 해시 충돌 엔트리일 경우, 유전체 서열 정렬 장치는 신속한 일치 정합의 실패로 판단하고, S160의 단계를 진행한다.
즉, 탐색된 엔트리의 실제 해시 값은 입력된 대상 염기 서열의 해시 값과 상이할 수 있다. 또한, 대상 염기 서열의 해시 값과 동일한 해시 값을 갖는 엔트리가 존재하지 않게 되고, 탐색한 해시 엔트리가 유효(valid)하지 않은 경우도 마찬가지일 수 있다.
반면, S340의 판단 결과 해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 유전체 서열 정렬 장치는 탐색된 엔트리에 저장된 위치(Location) 정보를 이용하여 참조 유전체로부터 시드(Seed)를 추출한다(S350).
그런 후, 유전체 서열 정렬 장치는 추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인한다(S360).
S360의 확인 결과 추출된 시드(Seed)와 대상 염기 서열이 일치할 경우, 일치 정합이 성공한 것으로 판단한다.
반면, S360의 확인 결과 추출된 시드(Seed)와 대상 염기 서열이 일치하지 않을 경우, 유전체 서열 정렬 장치는 해시 엔트리의 Next 값에 해당하는 시드 테이블(Seed Table)의 엔트리를 탐색(S370~S390)한 후, S350으로 진행하여 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하게 된다.
이때, 유전체 서열 정렬 장치는 계산된 해시 값이 NUM보다 작은지를 판단(S380)하여, 해당 엔트리가 로딩되어 있는지를 판단할 수 있다. S380의 판단 결과 계산된 해시 값이 NUM보다 작지 않을 경우, 해당 엔트리가 로딩되어 있지 않은 것으로 판단하고 유전체 서열 정렬 장치는 일치 정합 실패로 판정한다.
한편, 일치 정합 성공으로 판정되면, 유전체 서열 정렬 장치는 대상 염기 서열과 일치 정합 성공한 시드의 엔트리의 Multi-Location 값을 확인한다. 엔트리의 Multi-Location 값이 존재하면, Multi-Location Table에서 Multi-Location 값으로 취합된 시드들의 위치에서 입력 염기 서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 찾아낼 수 있다.
전술한 바와 같은 과정을 통해, 유전체 서열 정렬 장치는 인덱스의 일부분만으로도 각 입력 염기 서열의 일치 정합 여부를 신속히 판별할 수 있다.
또한, 실시예에서 시드(Seed Table)의 일부를 선택할 때 단순히 해시 값이 특정 값 이하인 것들을 선택한다.
이러한 방법이 효과적인 이유는, 우선 시퀀싱 기계에서 추출되는 염기서열의 위치는 유전체 전체에 랜덤하게 분포되어 있기 때문이다. 또한, 많이 활용되는 해시 함수를 사용할 경우 시드들이 해시 테이블에 고루 분포하기 때문이다. 따라서, Seed Table을 선두에서부터 10% 크기만큼 로딩했을 때, 일치 정합되는 입력 염기서열 중 10% 정도를 찾아낼 수 있다.
한편, 제2 추가 인덱스는 도 2의 최대 부분 정합 탐색을 가속하는 단계(S160)에서 사용되는 인덱스일 수 있다.
유전체 서열 정렬의 최대 부분정합 탐색에 많이 사용되는 Borrows-Wheeler Transform (BWT) 알고리즘과 Ferragina Manzini (FM) Index 구조는 긴 문자열 내에서 짧은 문자열의 최초 글자가 포함된 위치들을 탐색하고, 탐색된 위치들 중에 짧은 문자열의 두 번째 글자로 이어지는 위치들을 찾는 방식으로 실행된다.
염기 서열은 4종류이므로, 길이에 따라 경우의 수가 기하급수적으로 증가하지만, 길이가 짧을 때는 경우의 수가 많지 않다. 이러한 점을 이용하여 BWT 알고리즘의 초반부에 대한 결과 값을 저장해놓는 인덱스를 만들고 활용할 수 있다.
다음의 <표 1>은 최대 부분 정합 탐색 가속 인덱스의 크기를 나타낸다.
Figure pat00001
실시 예에서는 한 가지 길이의 범위를 저장할 때 12바이트가 필요하다. 그리고 엔트리마다 최대 확장 가능 길이를 저장하는데 4바이트가 추가된다. 인덱스 크기는 각 엔트리가 CPU 캐시의 블록 단위인 64바이트 단위로 정렬된 상황을 가정한다.
<표 1>은 각 길이의 염기서열에 따른 경우의 수와 실시 예에 따른 BWT 알고리즘 결과값 저장에 필요한 용량을 나타낸다. BWT 알고리즘에 대한 실제 구현에 따라 두 가지 방식이 사용된다.
우선, '모든 범위 저장'은 각 길이에 대한 결과값을 모두 저장하는 것이다. 즉, 길이가 10인 것에 대해 저장할 경우, 길이가 1인 것부터 길이가 10인 것까지 각각 저장하는 것이다. 반면 최종 범위 저장은 길이가 10까지 모두 일치하는 범위에 대해서만 저장하는 것이다.
<표 1>에 따르면, 수 기가바이트에서 수십 기가바이트의 용량만으로 10~15 길이의 염기서열에 대해 BWT 알고리즘의 결과값을 저장할 수 있다.
실시예에 따른 최대 부분 정합 탐색 가속을 위한 제2 인덱스는 해당 길이의 모든 경우의 수를 생성하여 저장하므로, 제2 인덱스의 일부분만 로딩할 경우에는, 사용하고자 하는 범위의 염기 서열이 로딩된 제2 인덱스에 포함되어 있는지를 확인하여 포함되어 있을 경우에만 사용하면 된다.
전술한 바와 같은 실시예에 따라 다음과 같은 효과가 창출될 수 있다.
첫째, 메모리 크기 별 성능 향상. 남는 메모리 활용 가능할 수 있다.
둘째, 일치정합 빠른 판별 가능할 수 있다.
셋째, 배경기술에서 90%라고 언급된 것은 시퀀싱 기계의 오류를 고려하지 않은 수치이며, 실제 데이터에서는 길이가 148인 염기서열에 대해 65~76% 정도가 참조 유전체와 완벽히 일치한다.
실시예에서는 전술한 바와 같은 유전체 서열 정렬을 가속할 수 있는 두 가지 추가 인덱스를 제안하고, 추가 인덱스를 기반으로 시스템의 가용 메모리 용량에 따라 유전체 서열 정렬의 성능을 높일 수 있는 방법을 제안한다.
도 5는 실시 예를 유전체 서열 정렬 프로그램인 BWA-MEM2에 구현하여 실험한 결과이다.
도 5를 참조하면, SCALE이 본 발명에 따른 다양한 실시 예들을 나타내며, 괄호 안의 숫자는 인덱스를 위해 가용한 메모리 용량을 나타낸다. Speedup 수치는 인덱스들을 위해 4KB 페이지(기본), 2MB 페이지, 1GB 페이지를 사용했을 때로 나누어 표시한다. FM-Index는 필수 인덱스를 의미하고, Perfect table과 SMEM table은 추가 인덱스를 의미한다. etc 영역은 인덱스 외에 프로그램 실행에 필요한 메모리 양을 의미하며 인덱스를 위한 메모리 영역 제한에는 포함되지 않는다.
빠른 일치정합 탐색을 위한 인덱스(Perfect table)과 최대 부분정합 탐색 가속을 위한 두 가지 인덱스(SMEM table로 통칭)를 모두 적용하였다. Perfect table의 경우 부분 로딩이 가능하도록 구현하였으며, SMEM table의 경우는 적용에 따른 성능 향상 효과가 크지 않아서 전체 로딩만 가능하도록 구현했다. 또한, 1기가바이트 당 성능 향상 효과를 기준으로 추가 인덱스 로딩 순서를 정했다. 그 결과 모든 범위를 저장하는 SMEM table (길이: 11) → Perfect table → 최종 범위를 저장하는 SMEM table (길이: 15) 순으로 사용했다. 입력 염기서열로는 NCBI SRA: SRX206890를 사용했다.
결과를 보면, 인덱스를 위한 메모리 용량을 20 기가 바이트에서 90 기가 바이트까지 늘렸을 때, 시스템의 기본 페이지 크기인 4KB 페이지를 사용하더라도 최대 2.1배의 성능 향상을 얻었다. 특히, Perfect table이 부분로딩되는 구간인 20 기가바이트에서 70기가바이트에서 거의 선형적인 성능 향상이 있는 것을 확인할 수 있다.
도 6는 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 유전체 서열 정렬 가속화 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다.
프로그램은 전술한 바와 같은 유전체 서열 정렬 가속화 방법을 수행할 수 있다.
메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031)이나 RAM(1032)을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (20)

  1. 적어도 하나의 프로그램이 기록된 메모리; 및
    프로그램을 실행하는 프로세서를 포함하며,
    프로그램은,
    참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계;
    메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계;
    유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계;
    추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계; 및
    일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계를 수행하는, 유전체 서열 정렬 가속 장치.
  2. 제1 항에 있어서, 프로그램은,
    추가 인덱스를 메모리에 로딩하는 단계에서, 유전체 서열 정렬의 인덱스에 사용될 메모리 총량에서 필수 인덱스의 크기를 뺀 메모리 가용량을 추가 인덱스 로딩에 사용하는, 유전체 서열 정렬 가속 장치.
  3. 제2 항에 있어서, 프로그램은,
    추가 인덱스를 메모리에 로딩하는 단계에서, 추가 인덱스가 둘 이상일 경우, 순차적으로 추가 인덱스를 로딩하되,
    추가 인덱스를 로딩하는 순서는,
    각 인덱스의 유전체 서열 정렬 성능에 미치는 영향을 기준으로 결정되는, 유전체 서열 정렬 가속 장치.
  4. 제2 항에 있어서, 프로그램은,
    추가 인덱스를 메모리에 로딩하는 단계에서, 메모리 가용량이 로딩 대상인 추가 인덱스의 크기 이상인의 여부에 따라, 추가 인덱스 전체 또는 일부를 로딩하되,
    추가 인덱스의 일부를 로딩하는 경우, 해당 추가 인덱스의 필수 부분을 우선적으로 로딩하는, 유전체 서열 정렬 가속 장치.
  5. 제1 항에 있어서, 추가 인덱스는,
    대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계에서 사용되는 제1 인덱스를 포함하되,
    제1 인덱스는,
    참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함하는, 유전체 서열 정렬 가속 장치.
  6. 제5 항에 있어서, 해시 엔트리는,
    시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함하는, 유전체 서열 정렬 가속 장치.
  7. 제6 항에 있어서, 프로그램은,
    추가 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계에서,
    대상 염기 서열의 해시 값을 계산하는 단계;
    해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계;
    해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계;
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계; 및
    일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 수행하는, 유전체 서열 정렬 가속 장치.
  8. 제7 항에 있어서, 프로그램은,
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 수행하는, 유전체 서열 정렬 가속 장치.
  9. 제1 항에 있어서, 프로그램은,
    일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 수행하는 단계;
    참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계;
    일치도의 결과를 생성하는 단계를 포함하되,
    최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속하는, 유전체 서열 정렬 가속 장치.
  10. 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계;
    메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계;
    유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계;
    추가 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계; 및
    일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계를 포함하는, 유전체 서열 정렬 가속 방법.
  11. 제10 항에 있어서, 추가 인덱스를 메모리에 로딩하는 단계는,
    메모리 가용량이 로딩 대상인 추가 인덱스의 크기 이상인의 여부에 따라, 추가 인덱스 전체 또는 일부를 로딩하되,
    추가 인덱스의 일부를 로딩하는 경우, 해당 추가 인덱스의 필수 부분을 우선적으로 로딩하는, 유전체 서열 정렬 가속 방법.
  12. 제10 항에 있어서, 추가 인덱스는,
    대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계에서 사용되는 제1 인덱스를 포함하되,
    제1 인덱스는,
    참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함하는, 유전체 서열 정렬 가속 방법.
  13. 제12 항에 있어서, 해시 엔트리는,
    시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함하는, 유전체 서열 정렬 가속 방법.
  14. 제13 항에 있어서, 추가 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계는,
    대상 염기 서열의 해시 값을 계산하는 단계;
    해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계;
    해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계;
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계; 및
    일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 포함하는, 유전체 서열 정렬 가속 방법.
  15. 제14 항에 있어서,
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 포함하는, 유전체 서열 정렬 가속 방법.
  16. 제10 항에 있어서,
    일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 포함하는 단계;
    참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계;
    일치도의 결과를 생성하는 단계를 포함하되,
    최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속하는, 유전체 서열 정렬 가속 방법.
  17. 참조 유전체에 대한 필수 인덱스를 메모리에 로딩하는 단계;
    메모리 가용량에 상응하는 추가 인덱스를 메모리에 로딩하는 단계;
    유전체 서열 정렬할 대상 염기 서열을 읽어들이는 단계;
    추가 인덱스 중 제1 인덱스를 기반으로 대상 염기 서열이 참조 유전체에 일치 정합하는지를 확인하는 단계;
    일치 정합할 경우, 대상 염기 서열과 일치 정합하는 참조 유전체에서의 위치를 이용하여 대상 염기 서열 정렬 결과를 생성하는 단계;
    일치 정합하지 않을 경우, 필수 인덱스를 기반으로 참조 유전체에서 대상 염기 서열과 정합되는 최대 부분 정합 탐색을 수행하는 단계;
    참조 유전체에서 탐색된 최대 부분과 대상 염기 서열의 일치도를 측정하는 단계; 및
    일치도의 결과를 생성하는 단계를 수행하되,
    최대 부분 정합 탐색을 수행하는 단계에서, 추가 인덱스 중 제2 인덱스를 기반으로 최대 부분 정합 탐색의 초기 부분을 가속하는, 유전체 서열 정렬 가속 방법.
  18. 제17 항에 있어서, 제1 인덱스는,
    참조 유전체에서 추출된 소정 길이의 시드들 각각에 상응하는 해시 엔트리로 구성된 시드 테이블 및 동일한 시드를 가지는 참조 유전체상의 둘 이상의 위치들을 취합하여 하나의 인덱스에 매핑된 다중 위치 테이블을 포함하되,
    해시 엔트리는,
    시드의 참조 유전체에서의 위치 정보, 해시 엔트리의 해시 충돌 여부 정보, 동일한 해시값을 가지는 다음 번 해시 엔트리의 인덱스 번호 및 다중 위치 테이블 상의 인덱스 정보를 포함하는, 유전체 서열 정렬 가속 장치.
  19. 제18 항에 있어서, 제1 인덱스를 기반으로 참조 유전체에 일치 정합하는지를 확인하는 단계는,
    대상 염기 서열의 해시 값을 계산하는 단계;
    해시 값이 시드 테이블 중 로드된 해시 엔트리 개수보다 작은 경우, 해시 값에 해당하는 해시 엔트리를 탐색하는 단계;
    해시값에 해당하는 엔트리가 탐색되고, 탐색된 엔트리가 해시 충돌 엔트리가 아닐 경우, 탐색된 엔트리에 저장된 위치 정보를 이용하여 참조 유전체로부터 시드를 추출하는 단계;
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계; 및
    일치하는 것으로 확인되면, 다중 위치 테이블에서 입력 염기서열에 해당하는 참조 유전체의 모든 일치 정합 부분을 검색하는 단계를 수행하는, 유전체 서열 정렬 가속 방법.
  20. 제19 항에 있어서,
    추출된 시드(Seed)와 대상 염기 서열의 일치 여부를 확인하는 단계에서 일치하지 않는 것으로 확인되면, 해시 엔트리의 다음 값에 해당하는 시드 테이블의 엔트리를 탐색하여, 탐색된 시드와 대상 염기 서열의 일치 여부를 확인하는 단계를 더 포함하는, 유전체 서열 정렬 가속 방법.
KR1020220048190A 2021-06-04 2022-04-19 유전체 서열 정렬 가속 장치 및 방법 KR20220164409A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/832,252 US20220392578A1 (en) 2021-06-04 2022-06-03 Apparatus and method for genome sequence alignment acceleration

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210072711 2021-06-04
KR1020210072711 2021-06-04

Publications (1)

Publication Number Publication Date
KR20220164409A true KR20220164409A (ko) 2022-12-13

Family

ID=84439056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220048190A KR20220164409A (ko) 2021-06-04 2022-04-19 유전체 서열 정렬 가속 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20220164409A (ko)

Similar Documents

Publication Publication Date Title
JP2607818B2 (ja) コンピュータシステム内にレコードが記憶されているか否かを判定する方法及び装置
US6633817B1 (en) Sequence database search with sequence search trees
CN110222088B (zh) 基于插入位置选择的数据近似集合表示方法及系统
US7640256B2 (en) Data collection cataloguing and searching method and system
Fu et al. MSOAR: a high-throughput ortholog assignment system based on genome rearrangement
US9645828B2 (en) Method of searching character string, character string searching device, and recording medium
EP3292481B1 (en) Method, system and computer program product for performing numeric searches
CN111324750B (zh) 一种大规模文本相似度计算及文本查重方法
Breitinger et al. Performance issues about context-triggered piecewise hashing
US7584173B2 (en) Edit distance string search
US20110264377A1 (en) Method and system for analysing data sequences
Chen et al. A high-throughput FPGA accelerator for short-read mapping of the whole human genome
US9390163B2 (en) Method, system and software arrangement for detecting or determining similarity regions between datasets
KR20220164409A (ko) 유전체 서열 정렬 가속 장치 및 방법
US20130041593A1 (en) Method for fast and accurate alignment of sequences
CN114995880B (zh) 一种基于SimHash的二进制代码相似性比对方法
JP2022503435A (ja) 配列決定リードのグルーピングおよびコラプシングのためのシステムおよび方法
JP3370787B2 (ja) 文字配列検索方法
US20220392578A1 (en) Apparatus and method for genome sequence alignment acceleration
Fu et al. A parsimony approach to genome-wide ortholog assignment
CN114297193A (zh) 一种基于hash的数据比对方法及装置
Bonnici et al. A k-mer based sequence similarity for pangenomic analyses
CN111581440A (zh) 硬件加速b+树操作装置及其方法
US9864765B2 (en) Entry insertion apparatus, method, and program
Bhalekar et al. A review: FPGA based word matching stage of BLASTN