KR20200131733A - 병렬화 가능한 시퀀스 정렬 시스템 및 방법 - Google Patents

병렬화 가능한 시퀀스 정렬 시스템 및 방법 Download PDF

Info

Publication number
KR20200131733A
KR20200131733A KR1020200036699A KR20200036699A KR20200131733A KR 20200131733 A KR20200131733 A KR 20200131733A KR 1020200036699 A KR1020200036699 A KR 1020200036699A KR 20200036699 A KR20200036699 A KR 20200036699A KR 20200131733 A KR20200131733 A KR 20200131733A
Authority
KR
South Korea
Prior art keywords
sequence
atoms
search sequence
search
match
Prior art date
Application number
KR1020200036699A
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 삼성전자주식회사
Publication of KR20200131733A publication Critical patent/KR20200131733A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3346Query execution using probabilistic model
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Biophysics (AREA)
  • Medical Informatics (AREA)
  • Biotechnology (AREA)
  • Human Computer Interaction (AREA)
  • Chemical & Material Sciences (AREA)
  • Analytical Chemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • Biochemistry (AREA)
  • Library & Information Science (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Computing Systems (AREA)

Abstract

SSD(Solid State Drice)가 개시된다. SSD는 데이터를 저장하기 위한 플래시 메모리 및 플래시 메모리로부터 데이터를 읽고 플래시 메모리에 데이터를 기록하는 것을 관리하는 SSD 컨트롤러를 포함할 수 있다. SSD는 또한 참조 시퀀스와 검색 시퀀스의 비교를 수행하도록 동작하는 FPGA(Field Programmable Gate Array)를 포함할 수 있고, 참조 시퀀스는 플래시 메모리에 저장될 수 있다. FPGA는, 검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별할 수 있고, 검색 시퀀스를 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 검색 시퀀스에서 원자의 연속 일치를 포함하는 중심 부분, 및 검색 시퀀스에서 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할할 수 있고, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키고, 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함할 수 있다.

Description

병렬화 가능한 시퀀스 정렬 시스템 및 방법{PARALLELIZABLE SEQUENCE ALIGNMENT SYSTEMS AND METHODS}
본 개시는 컴퓨터 시스템에 관한 것으로, 보다 구체적으로는 디옥시 리보 핵산(DNA) 서열(Sequence, 시퀀스)에서와 같이, 정확하지 않은 일치에 대한 패턴 매칭에 관한 것이다.
생물정보학의 한 부분은 DNA 서열 분석을 포함한다. DNA 서열 분석은 (일반적으로) 30 내지 100개의 뉴클레오티드 길이를 갖는 수백만개의 DNA 서열을, 수십억개의 뉴클레오티드 길이를 갖는 뉴클레오티드 서열 또는 뉴클레오티드 서열의 일부와 비교하는 것을 포함할 수 있다.
이러한 분석에 사용될 수 있는 알고리즘은 매트릭스의 모든 셀을 순차적으로 계산한 다음, 가장 높은 점수에 도달한 셀로부터의 경로를 추적하거나(예를 들어, Smith-Waterman 알고리즘에서), 매트릭스의 오른쪽 하단에 있는 셀로부터의 경로를 추적함으로써(예를 들어, Needleman-Wunsch 알고리즘에서), 구성된 매트릭스 내에서 최적의 경로를 찾는데 사용될 수 있는 선형 프로그래밍 방법을 포함할 수 있다.
이러한 알고리즘이 단일 뉴클레오티드 다형성(Single Nucleotide Polymorphism, SNP) 및 삽입-및-결실(insertion-deletion, indel) 변이를 예측함으로써 서열을 일치시킬 수 있지만, 순차적으로 발생하는 작업이 필요할 수 있기 때문에 적어도 가속(accerleration) 기술로는 구현하기가 어려울 수 있다.
따라서, 효율이 증가된 DNA 서열 분석을 수행할 필요가 있다.
본 개시는 병렬화 가능한 시퀀스 정렬 시스템 및 방법에 관한 것이다. 이 시스템 및 방법은 각 단계에서 최장 연속 일치의 바람직한 선택을 결정함에 있어서 다중 비교의 병렬 실행을 허용한다. 본 개시에 따르면, 종래의 시퀀스 분석보다 전반적으로 더 많은 비교를 수행할 수 있으면서도, 시퀀스 분석을 수행하는데 필요한 전체 시간이 병렬 실행 경로를 제공함으로써 감소될 수 있다. 또한, 본 개시에 따르면, SSD에 부착된 FPGA를 사용하여 구현될 수 있고, 그러한 FPGA 내에 시퀀스 분석을 구현함으로써, 알고리즘을 수행하기 위해 많은 양의 데이터를 저장 장치로부터 호스트 컴퓨터 메모리로 전송할 필요가 없으므로, 성능이 개선될 수 있다. 본 개시에 따르면, 호스트 프로세서가 시퀀스 분석을 수행하는 것 이외의 다른 작업을 수행할 수 있도록 함으로써 호스트 자원의 사용을 감소시킬 수도 있다.
본 개시의 일 실시예의 SSD는 데이터를 저장하는 플래시 메모리, 플래시 메모리로부터 데이터를 읽고 플래시 메모리에 데이터를 쓰는 것을 관리하는 SSD 컨트롤러, 및 검색 시퀀스와 참조 시퀀스의 비교를 수행하도록 동작하는 FPGA(Field Programmable Gate Array)를 포함하고, 참조 시퀀스는 메모리에 저장되고, FPGA는, 검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고, 검색 시퀀스를, 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 검색 시퀀스에서 원자의 연속 일치를 포함하는 중심 부분, 및 검색 시퀀스에서 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키고, 및 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함할 수 있다.
본 개시에 따른 시스템 및 방법을 통해, 각 단계에서 최장 연속 일치의 바람직한 선택을 결정할 때 다중 비교의 병렬 실행을 허용할 수 있다. 본 개시를 통해 종래의 시퀀스 분석보다 전반적으로 더 많은 비교를 수행할 수 있으면서도, 시퀀스 분석을 수행하는데 필요한 전체 시간이 병렬 실행 경로를 제공함으로써 감소될 수 있다. 본 개시를 통해 FPGA 내에 시퀀스 분석을 구현함으로써, 알고리즘을 수행하기 위해 많은 양의 데이터를 저장 장치로부터 호스트 컴퓨터 메모리로 전송할 필요가 없으므로, 성능이 개선될 수 있다. 본 개시를 통해 호스트 프로세서가 시퀀스 분석 이외의 다른 작업을 수행할 수 있도록 함으로써 호스트 자원의 사용을 감소시킬 수도 있다.
도 1은 본 개시의 일 실시예에 따른 DNA 시퀀싱 및 병렬 분석을 지원하는 다른 분석을 지원하도록 설계된 장치를 도시한 도면이다.
도 2는 도 1의 장치에서 일부분의 추가적인 세부 사항을 도시한 도면이다.
도 3은 도 1의 SSD(Solid State Drive)의 추가적인 세부 사항을 도시한 도면이다.
도 4는 분석 및 재조립을 위해 DNA 시퀀스를 세그먼트로 나누는 예시적인 프로세스를 도시한 도면이다.
도 5는 DNA 서열 분석에서 일부 가능한 오류를 도시한 도면이다.
도 6은 본 개시의 일 실시예에 따른 DNA 서열 분석을 재귀적으로 수행하는 프로세스를 도시한 도면이다.
도 7은 본 개시의 일 실시예에서 사용될 수 있는 상이한 원자의 예를 도시한 도면이다.
도 8은 도 3의 FPGA(Field Programmable Gate Array)의 일부의 추가적인 세부 사항을 도시한 도면이다.
도 9a 및 9b는 본 개시의 일 실시예에 따른 검색 시퀀스와 참조 시퀀스의 비교 단계에 적용되는 다양한 가중치의 예를 도시한 도면이다.
도 10은 검색 시퀀스와 참조 시퀀스 사이에서 최장 연속 일치를 식별하는 예시적인 동작을 도시한 도면이다.
도 11은 검색 서브 시퀀스와 참조 서브 시퀀스 사이에서 최장 연속 일치를 식별하는 회로 구조를 도시한 도면이다.
도 12는 검색 시퀀스와 참조 시퀀스 간의 교차 상관을 수행하는 회로 구조를 도시한 도면이다.
도 13a 및 13b는 본 개시의 일 실시예에 따른 시퀀싱 분석을 수행하는 예시적인 절차의 흐름을 도시한 도면이다.
도 14a 및 14b는 본 개시의 일 실시예에 따른 도 13a 및 13b의 시퀀싱 분석에서 일치를 식별하기 위한 예시적인 절차의 흐름을 도시한 도면이다.
도면은 반드시 축척에 맞도록 그려지는 것은 아니다. 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시적인 목적으로 유사한 참조 번호로 표시될 수 있다. 도면은 본 개시에 기재된 본 개시의 다양한 실시예의 설명을 용이하게 하도록 의도될 수 있다. 도면은 본 개시의 실시예들의 모든 측면을 설명하지 않을 수 있으며 청구범위를 제한하는 것은 아니다.
시퀀스(Sequence, 서열)를 정렬하기 위한 계산의 병렬화를 제공하기 위해, 본 개시의 일 실시예는 교차 상관 또는 컨볼루션의 계산과 유사하게 서로에 대해 시퀀스들을 슬라이드(slide)할 수 있다. 다수의 슬라이딩 단계가 병렬로 수행되어 최장 연속 일치 시퀀스를 비교하고 식별할 수 있다.
일치하는 최장 시퀀스가 발견되면, 두 스트링에서 대응하는 요소를 선택할 수 있다. 이 경우, 최대 두 개의 좌측 조각과 최대 두 개의 우측 조각이 일치할 수 있다. 일치하는 조각을 찾을 수 없을 때까지 좌측 조각과 우측 조각에서 프로세스가 반복될 수 있다.
디옥시 리보 핵산(Deoxyribonucleic acid, DNA)의 뉴클레오티드와 같은 두 개의 시퀀스(서열)를 비교하는 경우를 고려할 수 있다. 분석될 시퀀스는 참조 시퀀스로 사용된 더 큰 시퀀스에 대해 슬라이드(slide)될 수 있다. 단계 또는 슬라이딩 단계라는 용어가 사용될 수 있으나, 이러한 비교는 병렬로 수행될 수 있다. 모든 슬라이딩 단계에서 스트링(string)이 생성될 수 있다. 스트링은 스코어(score) 스트링으로 지칭될 수 있고, 2개의 시퀀스가 동일한 유형의 뉴클레오티드를 갖는 위치에 1을 포함하고, 상이한 유형의 뉴클레오티드를 갖는 위치에 0을 포함할 수 있다. 따라서, 1은 일치를 나타내고 0은 불일치를 나타낼 수 있다. 스코어 스트링에서 연속되는 1의 수를 세고 간격이 있을 때마다 0개부터 다시 시작할 수 있다. 이러한 방식으로, 최장 연속 일치 수가 식별될 수 있다.
최장 1의 시퀀스에 상응하는 뉴클레오티드의 시퀀스가 선택될 수 있으며, 이는 일치 시퀀스로 지칭될 수 있고, 추후 사용을 위해 저장될 수 있다. 존재하는 경우, 각각의 원래 시퀀스에서 일치 시퀀스의 좌측에 남아있는 뉴클레오티드의 나머지 시퀀스 또한 추후 사용을 위해 저장될 수 있다. 유사하게, 각각의 원래 시퀀스에서 일치 시퀀스의 우측에 있는 뉴클레오티드의 나머지 시퀀스 또한 추후 사용을 위해 저장될 수 있다.
프로세스는 반복될 수 있으나, 원래의 시퀀스를 사용하는 대신, 하나의 프로세스는 좌측 서브 시퀀스를 사용할 수 있고, 다른 프로세스는 우측 서브 시퀀스를 사용할 수 있다.
가중치를 사용한 정렬
1의 최장 서브 시퀀스는 두 시퀀스를 서로에 대해 슬라이딩 하기 시작한 직후, 또는 두 시퀀스를 서로에 대해 슬라이딩 하는 것을 종료하기 직전의 끝 부분 근처에서, 초기 단계에서 발생할 수 있다. 1의 최장 시퀀스에만 초점을 두게 되면, 최장 일치 시퀀스는 아니지만 누적적으로 더 나은 전체적인 일치를 나타내는 다른 일치를 간과할 수 있다.
이러한 문제를 극복하기 위하여 단순히 일치하는 횟수를 세는 것이 아니라, 말단에서 더 멀리 떨어진 일치에 더 큰 가중치를 부여하는 등, 각각의 일치에 가중치를 부여할 수 있다. 가중치는 두 시퀀스의 중심이 정렬될 때, 두 시퀀스의 좌측이 정렬될 때, 두 시퀀스의 우측이 정렬될 때, 또는 두 시퀀스 사이의 교차 상관이 최대인 위치에서 정렬될 때 가장 큰 가중치가 발생하는 방식으로 할당될 수 있고, 매칭(일치)이 최대 가중치를 가지는 이들 위치로부터 멀어질수록 점점 작은 가중치가 할당될 수 있다.
가중치 분배는 두 가지 방식으로 이루어질 수 있다:
1. 가중치는 각각의 일치에 대해 최대 위치(참조 스트링의 좌측, 중심 또는 우측)와의 거리에 따라 달라질 수 있으므로, 주어진 단계마다 각각의 위치의 가중치가 다를 수 있다; 또는
2. 특정 단계에서 모든 위치에 대한 가중치는 동일할 수 있지만, 단계 별로, 최대 위치로부터 더 큰 이동을 생성하는 단계는 더 작은 가중치를 생성하고, 최대 위치로부터 더 작은 이동을 생성하는 단계는 더 큰 가중치를 생성할 수 있다.
프로세스는 이진 트리(binary tree)로 구성될 수 있다. 시퀀스는 A, T, C 및 G의 네 가지 유형의 문자만 포함하는 텍스트 스트링으로 간주될 수 있다. 문자당 8 비트를 요구하는 ASCII 텍스트 스트링과 달리 이러한 시퀀스를 인코딩하려면 문자당 2 비트로 충분하다. 2개의 뉴클레오티드가 일치하는지 또는 일치하지 않는지를 결정하기에 2 비트 비교기가 충분할 수 있다.
트리의 각 노드는 두 개의 스트링을 받을 수 있다. 트리의 각 노드는 일치 스트링, 최대 2개의 좌측 서브 스트링 및 최대 2개의 우측 서브 스트링을 생성할 수 있다. 일치 스트링과 하나 이상의 좌측 서브 스트링을 생성하면 좌측 노드가 작성된다. 일치 스트링과 하나 이상의 우측 서브 스트링을 생성하면 우측 노드가 작성된다. 새로운 노드 생성은 일치 스트링과 하나 이상의 서브 스트링을 생성하는 노드가 더 이상 없을 때까지 계속될 수 있다.
트리가 구축되면, 2개의 원래 시퀀스에 대응하는 2개의 일치 시퀀스를 조립하기 위해, 순서에 맞지 않을 수 있다. 일치된 두 서브 시퀀스의 생성은 트리의 가장 왼쪽 노드에서부터 시작될 수 있다. 일치된 시퀀스는 트리를 가로지르면서 커질 수 있다. 일치가 존재하는 위치에 매칭 뉴클레오티드 심볼이 삽입될 수 있다. 일치가 존재하지 않는 위치에서는 두 개의 서브 시퀀스 중 짧은 길이가 대시(-)로 확장되어 긴 서브 시퀀스의 길이와 일치하게 되고, 결실(deletion)을 표현한다. 수정된 서브 시퀀스들은 대응하는 일치된 시퀀스에 부가되어 일치된 시퀀스를 성장시킬 수 있다.
두 스트링이 다른 문자를 갖는 곳에서는 단일 뉴클레오티드 다형성(SNP)이 발생했을 수 있다. 분석될 스트링에 대응하는 스트링에 대시가 있는 경우, 해당 위치에서 결실이 발생했을 수 있다. 참조 스트링에 대응하는 스트링에 대시가 있고, 분석될 스트링에 대응하는 스트링이 문자를 갖는 경우, 해당 위치에서 삽입(insertion)이 발생했을 수 있다.
트리의 노드는 0과 1의 이진(binary) 시퀀스로 구성된 고유 ID로 레이블이 지정될 수 있다. 이러한 시퀀스의 길이는 트리의 모든 레벨에서 한자리씩 증가할 수 있다. 루트(root) 노드의 ID는 하나의 숫자만 포함할 수 있으며 0으로 설정될 수 있다. 모든 레벨에서 새 노드의 ID는 상위 노드의 ID를 한자리 숫자만큼 확장하여, 새 노드가 좌측 노드이면 0을, 새 노드가 우측 노드이면 1을 추가할 수 있다. 노드가 좌측 노드인지 우측 노드인지의 여부는 고려되는 서브 스트링에 따라 달라질 수 있다. 새 노드의 입력 스트링이 된 두 개의 서브 스트링이 상위 노드에서 일치된 시퀀스의 왼쪽에 있으면 새 노드는 좌측 노드일 수 있다. 상위 노드에서 일치된 시퀀스의 오른쪽에 있으면 새 노드는 우측 노드일 수 있다.
가중치 없이 알고리즘을 사용하는 경우, 각각의 단계에서 가장 일치를 많이 포함하는 조각이 선택될 것으로 기대될 수 있다. 그러나, 가중치를 사용하여 검색을 수행하면, 가중치는 알고리즘의 결과에 영향을 줄 수 있다. 예를 들어, 가중치가 4인 8개의 베이스가 일치하면 총 점수는 32이고, 가중치가 5인 7개의 베이스가 일치하면 총 점수는 35이다. 로컬 최대값으로 인해 알고리즘이 전체 최대값을 식별하지 못하는 것을 방지하기 위해, 알고리즘은 최고 스코어를 가지는 일치 외에도 일부 낮은 스코어를 가지는 일치를 선택하고, 해당 서브-최적 일치를 기반으로 병렬 검색을 수행할 수 있다. 즉, 병렬 처리법은 검색 트리를 통한 단일 경로만을 선택함으로써 정리될 수도 있었던 검색 트리의 경로를 조사하는데 사용될 수 있다.
병렬화 가능한 시퀀스 정렬 vs. 교차-상관 및 컨볼루션
불연속(Discrete) 도메인에서 2개의 함수 또는 2개의 시퀀스 간의 유사성에 대한 측정은 2개의 함수 또는 2개의 시퀀스 간의 교차 상관에 의해 제공될 수 있다. 두 개의 불연속 시퀀스 A[m]과 B[m] 사이의 교차 상관(여기서, A와 B는 두 개의 정수 또는 실수일 수 있음)은 두 시퀀스를 서로에 대하여 n 만큼 슬라이딩하고, A[m] 및 B[m]의 대응하는 요소를 곱한 값을 합산하여 얻은 함수 C[n]으로 정의될 수 있다.
불연속 교차 상관에 대한 공식은 다음과 같다:
Figure pat00001
교차 상관은 서로 다른 슬라이딩 위치에 대해 서로 다른 값을 가질 수 있는 함수이다. 교차 상관은 상대적인 최대값과 최소값을 가질 수 있다. 교차 상관은 두 시퀀스의 유사한 정도를 나타낼 수 있다. 최대값은 최대 유사성을 생성하는 슬라이딩 위치를 나타낼 수 있다. 따라서, 두 개의 시퀀스가 가장 일치하는 위치에 대한 하나의 표지는 두 개의 시퀀스의 교차 상관을 계산하거나, 또는 동일한 방법으로서 각각의 슬라이딩 위치에 대한 일치 횟수를 카운트 하여 얻을 수 있다.
두 개의 뉴클레오티드가 동일한 유형인 경우 곱을 1로 정의하고, 두 개의 뉴클레오티드가 상이한 유형인 경우 곱을 0으로 정의함으로써 두 개의 뉴클레오티드 시퀀스 사이에 교차 상관이 사용될 수 있다. 따라서, 교차 상관은 슬라이딩 단계의 수의 함수로서 일치의 수를 나타낼 수 있다.
각각의 슬라이딩 단계에 대한 일치 횟수를 제공하는 함수는 두 개의 시퀀스 사이의 교차 상관 함수를 포함할 수 있다. 교차 상관이 최대값을 갖는 곳에서 최적의 일치를 찾을 수 있다.
본 개시의 시스템 및 방법은 상관 함수에 의존하지 않는다. 본 개시의 시스템 및 방법은 특정 단계에서 모든 일치의 수를 세지는 않으며, 오히려 본 개시의 시스템 및 방법은 특정 단계 내에서 각각 가중치 함수를 곱한 연속된 일치의 수를 셀 수 있고, 최대값을 생성하는 연속 런(run)을 선택할 수 있다. 상관 함수는 최상의 정렬을 생성하는 단계를 찾는데 사용될 수 있다. 본 개시의 시스템 및 방법은 최대 가중치의 위치를 결정하기 위해 상관 함수에 의해 제공된 정보를 추가로 사용할 수 있고, 최대 상관 위치로부터 멀어질수록 가중치는 감소될 수 있다.
특정 측면에서, 교차 상관은 컨볼루션과 유사한 것으로 간주될 수 있다. 교차 상관과 컨볼루션의 차이점은, 컨볼루션은 계산을 위해 함수 중 하나가 다른 함수에 대해 슬라이딩하기 전에 수평으로 뒤집힌다는 것이다. 이는 다음 공식과 같이 두 함수 중 하나의 독립 변수 m이 반전될 수 있음을 의미한다:
Figure pat00002
변수 n의 반전은 상관 관계를 컨볼루션으로 또는 그 반대로 변환하지는 않지만, 결과를 수평으로 뒤집을 수 있다.
지금까지, 본 개시에서는 DNA에 대한 서열(시퀀스) 정렬에 알고리즘의 적용을 논의하였다. 그러나, 개시된 시스템 및 방법은 다른 목적으로도 조정되어 사용될 수 있다.
단백질 시퀀스를 예로 들어 본다. 단백질 시퀀스는 스트링의 각 위치가 20개의 서로 다른 아미노산들 중 하나에 의해 점유되는 긴 스트링을 포함할 수 있다. 그러나, 아미노산은 DNA의 핵산과 다르다. 아미노산은 다양한 화학적 및 구조적 특징을 가지므로, 일부 아미노산이 다른 아미노산으로 대체될 때, 그 효과는 대체에 따라, 실질적으로 다른 단백질, 매우 유사한 단백질, 또는 그 사이의 것을 생성할 수 있다. 따라서, 단백질 공간에서의 시퀀스 정렬은 단순히 동일한 일치를 찾는 것뿐만 아니라, 화학적으로 유사한 일치를 찾아야 하고, 유사성 수준에 따라 이들을 가중시키는 방식으로 수행되어야 한다.
본 개시의 시스템 및 방법은 서로 다른 아미노산이 유사한 기능을 수행할 가능성을 설명하는 아미노산 시퀀스와 일치하도록 변형될 수 있다. 정렬 스코어링 단계에서 이진법 1 및 0 (일치 또는 불일치)은, 블록 치환 매트릭스(Block Substitution Matrix, BLOSUM) 또는 PAM(Point Accepted Mutation) 매트릭스와 같은 화학적 또는 기능적 유사성에 기초한 다중 값(multi-value) 시스템으로 대체될 수 있다. 이러한 다중 값 시스템은 0-1 범위로 정규화될 수 있다. 하드웨어 구현 측면에서 일부 변경이 필요할 수 있다. 예를 들어, DNA 시퀀스에서와 같이 2비트의 메모리 및 2비트 비교기를 사용하는 대신, 단백질은 1비트 또는 몇 비트 더의 메모리/ 비교기(20개의 아미노산을 저장하기 위해 5비트가 필요하고, 세분성에 의존한 가중치는 3비트에 저장될 수 있다)로 분석될 수 있다.
나아가, 본 개시의 시스템 및 방법은 사용자가 가능한 유닛에 대한 유사성 매트릭스를 제공하는 한, 동일성뿐만 아니라 유사성에 기초하여 "유닛"의 임의의 시퀀스 사이의 정렬을 찾는데 사용될 수도 있다. 이러한 기본 단위는 문자, 픽셀 또는 비교될 수 있는 다른 단위일 수 있다.
예를 들어, 유사하지만 일치하지는 않는 텍스트가 발견되고, 불일치 레벨이 매트릭스에 대해 "오타"의 가능성으로 판단될 수 있는 경우, "유사성 글로벌 정규식 인쇄(Global Regular Expression Print, GREP)"를 생성할 수 있다. 다른 예로서, "firce"의 검색 스트링은, "o"가 키보드에서 "i" 근처에 있음을 인식하는 오타-오류 매트릭스가 고안될 수 있기 때문에 "force" 텍스트와 유사한 것으로 평가되고 그에 따라 스코어링될 수 있다. 한편, "farce"의 경우 오타-오류 매트릭스가 "o"와 "a"가 멀다는 것을 인식할 수 있기 때문에, "farce"는 정렬에서 상대적으로 낮은 스코어를 가질 수 있다.
대안적인 예로서, 픽셀 시퀀스는 컬러/강도 차트에서의 거리에 기초한 가중 정렬 매트릭스로 비교될 수 있다. 이를 통해 전체 유사성을 판단하기 위해 이미지를 빠르게 식별하고 비교할 수 있다.
본 개시의 시스템 및 방법은 인-스토리지(in-storage) 컴퓨팅, 특히 온보드 FPGA(Field Programmable Gate Array)를 갖는 SSD에 사용될 수 있다. 본 개시의 일 실시예는 병렬화를 위해 최적화될 수 있고, FPGA의 유닛에 걸쳐 사용될 수 있다. FPGA가 SSD와 결합된 경우(관리 호스트의 오버 헤드가 없기 때문에) 데이터 액세스 시간이 최소화될 수 있고, (소프트웨어 스택 또는 외부 입출력(I/O) 채널(예를 들어, PCI(Peripheral Component Interconnect Express) 또는 이더넷) 오버 헤드가 없기 때문에) 데이터 처리량이 증가할 수 있어, 알고리즘의 FPGA 병렬 처리 사용이 증가할 수 있다.
도 1은 본 개시의 일 실시예에 따른 DNA 시퀀싱 및 병렬 분석을 지원하는 다른 분석을 지원하도록 설계된 장치를 도시한 도면이다. 도 1을 참조하면, 장치(105)가 도시되어 있다. 장치(105)는 프로세서(110)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서: 예를 들어, Intel Xeon, Celeron, Itanium 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등을 포함할 수 있다. 도 1을 참조하면, 장치(105)는 하나의 프로세서(110)를 포함하지만, 본 개시의 일 실시예에서 장치(105)는 복수의 프로세서들을 포함할 수 있고, 각각의 프로세서는 단일-코어 또는 멀티-코어 프로세서일 수 있고, 임의의 조합으로 혼합될 수 있다.
장치(105)는 메모리(115)를 포함할 수 있다. 메모리(115)는 플래시 메모리, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), PRAM(Persistent Random Access Memory), 강유전성 랜덤 액세스 메모리(FRAM), 또는 MRAM(Magneto-resistive Random Access Memory) 등의 NVRAM(Non-Volatile Random Access Memory)와 같은 임의의 다양한 메모리를 포함할 수 있다. 메모리(115)는 서로 다른 메모리 유형들의 임의의 조합일 수 있다. 메모리(115)는 메모리 컨트롤러(125)에 의해 관리될 수 있다.
장치(105)는 장치 드라이버(130)에 의해 제어될 수 있는 SSD(Solid State Drive)(120)를 포함할 수 있다. SSD(120)는 장치(105)에 의해 액세스된 데이터를 저장하는데 사용될 수 있다. 예를 들어, 장치(105)가 DNA 시퀀스 분석을 위해 사용될 때, SSD(120)는 DNA 시퀀스를 저장할 수 있다. 이하의 설명은 데이터 저장을 위해 SSD(120)를 사용하는 것에 초점을 맞추지만, 본 개시의 일 실시예는 하드 디스크 드라이브 또는 메모리(1150)와 같은 다른 저장 매체를 적절하게 포함할 수도 있다. SSD(120)는 키-값 SSD(KV-SSD)일 수 있으며, 이 경우 키를 통해 액세스될 수 있는 곳에 데이터가 저장될 수 있다. KV-SSD가 키를 수신하면, KV-SSD는 그 키를 데이터가 저장된 위치에 맵핑하고 데이터를 읽을 수 있다(요청에 따라, 데이터를 쓰거나 업데이트 또는 무효화할 수도 있다).
도 1은 장치(105)를 서버(독립형 또는 랙(rack) 서버일 수 있음)로서 도시하지만, 본 개시의 일 실시예는 제한 없이 임의의 유형의 장치(105)를 포함할 수 있다. 예를 들어, 장치(105)는 본 개시의 일 실시예로부터 이익을 얻을 수 있는 테스크탑 또는 랩톱 컴퓨터 또는 임의의 다른 장치로 대체될 수 있다. 장치(105)는 또한 특수 휴대용 컴퓨팅 장치, 태블릿 컴퓨터, 스마트폰 및 다른 컴퓨팅 장치를 포함할 수 있다.
본 개시의 일 실시예는 장치(105)(또는 그 내부의 부품)를 사용하여 구현될 수 있다. 예를 들어, 본 개시의 일 실시예는 프로세서(110) 상에서 실행되는 소프트웨어로서 구현된 시퀀스 분석을 수행할 수 있다. 본 개시의 일 실시예는 장치(105)에서 사용될 수 있는 FPGA 또는 ASIC(Application-Specific Integrated Circuit)와 같은, 특수 목적 프로세서를 사용하여 부분적으로 또는 전체적으로 구현될 수 있다. 본 개시의 일 실시예는 SSD(120) 내에서(SSD(120)의 범용 프로세서상에서 실행되는 소프트웨어로서 내지는 SSD(120)의 특수 목적 프로세서를 사용하는 소프트웨어로서) 구현될 수도 있다.
도 2는 도 1의 장치에서 일부분의 추가적인 세부 사항을 도시한 도면이다. 도 2를 참조하면, 장치(105)는 장치(105)의 구성 요소의 동작을 조정하는데 사용될 수 있는 메모리 컨트롤러(125) 및 클록(205)을 포함할 수 있는, 하나 이상의 프로세서(110)를 포함할 수 있다. 프로세서(110)는 RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 상태 보존 매체를 포함할 수 있는, 메모리(115)에 연결될 수 있다. 프로세서(110)는 저장 장치(SSD)(120) 및 이더넷 커넥터 또는 무선 커넥터 등의 네트워크 커넥터(210)에 연결될 수 있다. 프로세서(110)는 버스(215)에 연결될 수 있으며, 버스(215)는 다른 구성 요소들 중에서 사용자 인터페이스(220) 및 입출력(I/O) 엔진(225)을 사용하여 관리될 수 있는 입력/출력 인터페이스 포트에 연결될 수 있다.
도 3은 도 1의 SSD(Solid State Drive)(120)의 추가적인 세부 사항을 도시한 도면이다. 도 3을 참조하면, SSD(120)는 호스트 인터페이스 로직(305), SSD 컨트롤러(310) 및 다양한 채널(320-1 내지 320-4)들로 구성된 다양한 플래시 메모리 칩(315-1 내지 315-8)들을 포함할 수 있다. 호스트 인터페이스 로직(305)은 SSD(120)와 도 1의 장치(105) 사이의 통신을 관리할 수 있다. SSD 컨트롤러(310)는 플래시 메모리 칩(315-1 내지 315-8)들 상에서 가비지(garbage) 수집 동작 및 다른 동작들과 함께, 판독 및 기록 동작을 관리할 수 있다.
SSD 컨트롤러(310)는 변환 계층(325)을 포함할 수 있다. 변환 계층(325)은 논리적 블록 어드레스(Logical Block Address, LBA)를 데이터가 실제로 저장된 물리적 블록 어드레스(Physical Block Address, PBA)로 변환하는 기능을 수행할 수 있다. 이러한 방식으로, 도 1의 장치(105)는 데이터가 실제로 저장되는 SSD(120) 상의 물리적 어드레스를 알 필요 없이, 데이터를 참조하기 위해 자신의 어드레스 공간을 사용할 수 있다. 이것은 예를 들어 데이터가 업데이트될 때 유리할 수 있다. SSD(120)는 제자리에서 데이터를 업데이트하지 않을 수 있기 때문에, 기존 데이터를 무효화하고 SSD(120) 상의 새로운 PBA에 업데이트를 기록할 수 있다. 가비지 수집을 위해 선택된 블록에 데이터가 저장된 경우에는, 데이터는 블록이 삭제되기 전에 SSD(120)의 새로운 블록에 기록될 수 있다. 변환 계층(325)을 업데이트 함으로써, 도 1의 장치(105)는 데이터가 다른 PBA로 이동함에 따라 데이터가 실제로 저장되는 위치를 기억할 필요가 없다.
SSD(120)는 SSD(120)를 사용하는 방법을 제어하는 명령을 실행할 수 있는 프로세서(330)를 포함할 수 있다. 프로세서(330)는 또한 스토리지 내 컴퓨팅 기능을 위해 사용될 수 있으며, 도 1의 프로세서(110) 대신 SSD(120) 상에서 로컬 동작을 실행할 수 있다.
SSD(120)는 FPGA(Field Programmable Gate Array)(335)를 포함할 수 있다. FPGA(335)는 후술하는 바와 같이 DNA 시퀀스 분석과 같은 SSD(120) 내의 부가 기능을 구현하는데 사용될 수 있다.
도 3은 4개의 채널(320-1 내지 320-4)들로 구성된 8개의 플래시 메모리 칩(315-1 내지 315-8)들을 포함하는 SSD(120)를 도시하지만, 본 개시의 일 실시예는 임의의 수의 채널로 구성된 임의의 수의 플래시 메모리 칩을 지원할 수 있다. 유사하게, 도 3은 프로세서(330) 및 FPGA(335)를 포함하는 SSD 컨트롤러(310)를 도시하지만, 본 개시의 일 실시예는 이들 요소를 다른 위치에 배치할 수 있다. 예를 들어, FPGA(335)는 SSD 컨트롤러(310)의 외부에서 호스트 인터페이스 계층(305) 앞에 배치되거나, 심지어 SSD(120) 자체의 외부에 배치될 수도 있다. FPGA(335) 및 SSD(120)의 상대적인 위치에 대한 자세한 내용은, 2019년 6월 7일에 출원된 미국특허출원번호 16/435,442, 및 그 모 출원들인 2019년 1월 28일자 출원의 미국특허출원번호 16/260,087, 2018년 12월 19일자 출원의 미국특허출원번호 16/226,629, 2018년 11월 30일자 출원의 미국특허출원번호 16/207,080, 2018년 10월 12일자 출원의 미국임시출원번호 62/745,261, 2019년 3월 13일자 출원의 미국임시출원번호 62/818,096 및 2018년 9월 18일자 출원의 미국임시출원번호 62/733,077를 참조할 수 있다.
도 4는 분석 및 재조립을 위해 DNA 시퀀스를 세그먼트로 나누는 예시적인 프로세스를 도시한 도면이다. 도 4를 참조하면, DNA 가닥(strand)(405)은 매우 길 수 있다: 잠재적으로 수억 또는 그 이상의 뉴클레오티드를 포함할 수 있다. 공정을 통해, DNA 가닥(405)은 전형적으로 30개 내지 100개의 뉴클레오티드를 포함하는 짧은 세그먼트(410)들로 분해될 수 있다. 일단 파괴되면, 이들 짧은 세그먼트(410)들은 각각의 세그먼트(410)에서 특정 뉴클레오티드 서열을 결정하기 위해 분석될 수 있다. 그러나 이러한 짧은 시퀀스는 순서가 맞지 않을 수도 있다. DNA 시퀀스 분석은 상대적인 순서를 결정하기 위해 수행될 수 있다. 예를 들어, 도 4를 참조하면, 세개의 세그먼트(415)들은 중첩되는 부분을 식별함으로써 상대적으로 정렬될 수 있으며, 이는 시퀀스(420)로 도시된 재조립된 DNA 시퀀스로 이어질 수 있다.
짧은 세그먼트(410)를 생성하는 프로세스는 DNA 가닥(405)의 일부를 복사하는 것을 포함할 수 있다. 이러한 복사 과정에서 오류가 발생할 수 있다. 도 5는 DNA 서열 분석에서 일부 가능한 오류를 도시한 도면이다.
505번 오류를 참조하면, 때때로 뉴클레오티드가 복사될 때 잘못 복사될 수 있다. 예를 들어, 2개의 뉴클레오티드 시퀀스는 시퀀스에서 하나의 뉴클레오티드의 차이를 가질 수 있다. 이러한 방식으로 뉴클레오티드가 변경되는 경우, 오류는 "단일 뉴클레오티드 다형성(Single Neucleotide Polymorphism, SNP)"으로 지칭될 수 있다.
한편, 오류 510번을 참조하면, 때때로 복사 과정은 뉴클레오티드를 삽입하거나 결실시킬 수 있다. 예를 들어, 뉴클레오티드 시퀀스 2는 뉴클레오티드 시퀀스 1에서 누락된 뉴클레오티드를 포함할 수 있다. 이러한 오류는 "인델(indel)"로 지칭될 수 있다. (복사 과정이 뉴클레오티드를 삽입 또는 결실시키는지 여부는 어느 뉴클레오티드 시퀀스가 공급원이고 어느 시퀀스가 복제물인지에 의존할 수 있다: 그러나 어느 경우에서도, 한쪽의 뉴클레오티드 시퀀스는 다른 뉴클레오티드 시퀀스에서 누락된 뉴클레오티드를 포함할 수 있다.)
도 6은 본 개시의 일 실시예에 따른 DNA 서열 분석을 재귀적으로 수행하는 프로세스를 도시한 도면이다. 도 6을 참조하면, 검색 시퀀스(605)는 참조 시퀀스(610)와 비교될 수 있다. 이러한 비교의 일부로서, 뉴클레오티드의 연속적인 매칭이 발견될 수 있다(해치된 검색 시퀀스(605)의 중심 부분(615) 및 참조 시퀀스(610)의 중심 부분(620)): 본 개시의 일 실시예에서, 이러한 뉴클레오티드의 연속적인 일치는 뉴클레오티드의 최장 연속 일치일 수도 있고, 최장 연속 일치가 아닐 수도 있다. 뉴클레오티드의 최장 연속 일치가 결정될 수 있는 방법은 도 9a 내지 10을 참조하여 후술된다. 중심 부분들(615 및 620)이 위치되면, 검색 시퀀스(605)는 좌측 부분(625), 중심 부분(615) 및 우측 부분(630)으로 분할될 수 있고, 참조 시퀀스(610)는 좌측 부분(635), 중심 부분(620) 및 우측 부분(640)으로 분할될 수 있다. (물론, 이것은 중심 부분(615, 620)의 왼쪽 및 오른쪽에 뉴클레오티드가 있는 경우이다. 중심 부분의 한쪽 또는 다른 쪽에 뉴클레오티드가 없는 경우, 분할은 좌측 부분 또는 우측 부분을 생성하지 않을 수 있다.)
검색 시퀀스(605) 및 참조 시퀀스(610)의 좌측 및 우측 부분이 위치되면, 알고리즘은 상대적인 부분에 대해 재귀적으로 수행될 수 있다. 즉, 좌측 부분(625)은 좌측 부분(635)에 대해 검색될 수 있고, 우측 부분(630)은 우측 부분(640)에 대해 검색될 수 있다. 재귀적인 수행은 검색 시퀀스(605) 및 참조 시퀀스(610) 중 적어도 하나에 좌측 부분 및 우측 부분이 존재하지 않을 때 종료될 수 있다.
도 6은 상기 프로세스를 재귀적이라고 설명하지만, 검색 시퀀스(605) 및 참조 시퀀스(610)의 좌우 부분에서 동일한 분석이 반복될 수 있다는 점에서 재귀가 요구되는 것은 아니다. 즉 전술한 프로세스는 중심 부분(615, 620)을 찾기 위해 수행될 수 있고, 그 후에 상이한 프로세스가 좌측 부분(635)에 대해 좌측 부분(625)을 분석하거나, 우측 부분(640)에 대해 우측 부분(630)을 분석하기 위해 사용될 수 있다. 그러나, 검색 시퀀스(605) 및 참조 시퀀스(610)의 좌측 및 우측 부분에서 상기 프로세스가 다시 수행되면, 그 용어의 사용여부와 관계없이 프로세스는 "재귀적"이라고 표현할 수 있다.
상기 논의는 DNA 시퀀스 분석에서 뉴클레오티드에 초점을 맞추고 있지만, 본 개시의 일 실시예는 "원자(atom)"라고 하는 다른 요소와 함께 사용될 수 있다. 도 7은 본 개시의 일 실시예에서 사용될 수 있는 상이한 원자의 예를 도시한 도면이다. 뉴클레오티드(705) 이외에, 원자(710)는 예를 들어 아미노산(715), 문자(720), 단어(725), 또는 픽셀 값(730)을 포함할 수 있다. 뉴클레오티드는 단지 네 글자의 알파벳(A, C, G 및 T로 약칭될 수 있는 아데닌(Adenine), 시토신(Cytosine), 구아닌(Guanine) 및 티민(Thymine))을 포함하고, DNA 시퀀싱을 위해서는 정확한 일치가 요구될 수 있다. 대조적으로, 다른 원자들에 있어서는, 일부 다양성이 허용될 수 있고, 변동 가능한 정도는 해당 원자에 따라 다를 수 있다. 예를 들어, 단백질 시퀀스에서는 발생할 수 있는 서로 다른 아미노산이 20개다. 그러나 두 개의 아미노산은 분자적으로 서로 다르더라도 화학적으로 유사할 수 있다. 따라서, 두 개의 아미노산 시퀀스는 서로 다른 시퀀스로 적혀있는 경우에도 효과적으로서 동일한 것으로 판단될 수 있다.
문자(720)의 경우, 검색시 인쇄상의 오류 가능성이 고려될 수 있다. 예를 들어, "firce"라는 단어는 유효한 단어가 아니다. 그러나 "o"대신 "i"를 입력하거나, "i" 뒤에 "e"를 생략하면 인쇄상의 오류로 간주될 수 있다. "o"대신 "a"를 입력했을 수도 있지만 키보드의 "o"에서 "i" 및 "a" 까지의 상대적인 거리를 고려할 때 그 가능성은 낮을 수 있다. (이 거리 측정 값은 사용된 키보드에 따라 다를 수 있다. "a"는 QWERTY 키보드의 "i"보다 "o"와 거리가 멀지만 대체적인 키보드 레이아웃에서는 동일하지 않을 수 있다. 검색 스트링(string)에 "firce"가 포함되어 있어도, "force" 또는 "fierce"라는 단어가 포함된 텍스트와 일치하는 것으로 간주될 수 있다.
원자가 단어(725)인 경우, 아미노산(715) 또는 문자(720)와 유사한 접근법이 사용될 수 있다. 즉 작은 변형 정도는 키보드 인쇄상의 거리에 따라, 또는 철자가 다른 경우 의도가 비슷한 단어들을 고려하여 동등한 단어로 간주될 수 있다.
원자가 픽셀 값(730)일 때, 픽셀의 강도, 색조, 또는 일부 다른 값 (또는 값들의 조합)이 검색 값으로써 사용될 수 있다. 검색 시퀀스의 픽셀 값과 참조 시퀀스의 픽셀 값을 비교할 때, 두 픽셀 값 사이의 거리는 선택된 값들에 기초하여 측정될 수 있다. 검색 시퀀스의 픽셀에서 참조 시퀀스의 픽셀에 더 "가까운" 픽셀은, 시퀀싱 분석에서 있어서 "일치"할 가능성이 높다. 이러한 정보를 이용하면, 정확히 일치하지 않는 경우에도, 픽셀 레벨 정보의 비교에 기초하여 두 개의 이미지가 유사한 것으로 간주될 수 있는지를 결정할 수 있다.
원자에 대한 이러한 다른 선택을 참조하면, 비교는 반드시 이진법적 결과("일치" 또는 "일치하지 않음")를 생성할 필요는 없고, 대신에 퍼지(fuzzy) 논리가 단순히 "참" 또는 "거짓" 이외의 논리값을 결정하는 방식과 유사하게, 가능한 결과값의 범위를 포함할 수 있다. 본 개시의 일 실시예에서, 이들 값은 0("일치하지 않음"을 나타냄) 내지 무한("일치"를 나타냄)까지의 임의의 양수 값을 포함할 수 있다. 본 개시의 일 실시예에서, 이들 값은 0과 1 사이로 스케일링 될 수도 있다. 본 개시의 일 실시예에서, 이들 값은 임의의 하한 값 및 상한 값 사이에서 양 또는 음의 값으로 변할 수도 있다.
도 8은 도 3의 FPGA(Field Programmable Gate Array)(335)의 일부의 추가적인 세부 사항을 도시한 도면이다. 도 8을 참조하면, FPGA(335)는 비교기(805), 분배기(810), 비교 가중치 할당기(815) 및 유사 가중치 할당기(820)를 포함할 수 있다. 비교기(805)는 도 6의 검색 시퀀스(605)의 서브 시퀀스를 도 6의 참조 시퀀스(610)와 비교하여 서브 시퀀스가 참조 시퀀스와 일치하는지를 결정하는데 사용될 수 있다. 분배기(810)는 검색 시퀀스(605) 및 참조 시퀀스(610)를 도 6의 좌측 부분들(625 및 635), 도 6의 중심 부분들(615 및 620) 및 도 6의 우측 부분들(630 및 640)로 분할하고, 대응하는 좌측 및 우측 부분들이 재귀적으로 검색될 수 있도록 한다.
비교 가중치 할당기(815)는 각각의 비교에 가중치를 할당할 수 있다. 도 9a 내지 도 9b를 참조하여 후술할 바와 같이, 서로 다른 비교는, 가중치 분석이 바이어스(bias)되는 것을 피할 수 있도록, 도 6의 참조 시퀀스(610) 내의 특정 위치에서 일치하는 것을 선호하도록 가중될 수 있다. 비교 가중치 할당기(815)는 임의의 원하는 스케일을 사용하여 가중치를 할당할 수 있다: 예를 들어, 가중치는 정수 값 또는 정수가 아닌 값이 할당될 수 있고, 가중치의 하한 및 상한은 사전 정의된 제한이 없을 수 있다. 비교기(805)는 최장 연속 일치를 식별하는데 비교 가중치 할당기(815)로부터의 정보를 사용할 수 있다. 비교 가중치 할당기(815)는 선택적이고 생략될 수 있다.
유사 가중치 할당기(820)는 유사성에 기초하여 다양한 비교에 가중치를 할당할 수 있다. 예를 들어, 전술한 것과 같이, "firce"라는 단어는 "force", "fierce" 또는 "farce"와 일치할 수 있지만, 일치 항목마다 가능성이 다를 수 있다. 위에서 논의된 것과 유사한 방식으로, 서로 다른 아미노산은 분자 구조가 상이할 수 있지만 유사한 기능을 가질 수 있다. 유사 가중치 할당기(820)는 도 6의 검색 시퀀스(605)와 도 6의 참조 시퀀스(610) 사이에서 원자들이 얼마나 유사한지에 기초하여 가중치를 특정한 가능한 일치에 할당할 수 있다. 유사 가중치 할당기(820)는 임의의 스케일을 사용하여 가중치를 할당할 수 있다: 가중치는 정수 값 또는 정수가 아닌 값으로 할당될 수 있으며, 가중치의 하한 및 상한은 사전 정의된 한계가 없을 수 있다. 비교기(805)는 최장 연속 일치를 식별하는데 유사 가중치 할당기(820)로부터의 정보를 사용할 수 있다. 비교 가중치 할당기(815)와 유사하게, 유사 가중치 할당기(820)는 선택적이고 생략될 수 있다.
도 8을 참조하면, FPGA(335)는 다양한 블록 요소를 포함할 수 있지만, 이들 요소는 반드시 개별 요소로 간주되는 것은 아니다. 즉, 본 개시의 실시예들은 다양한 요소들에 기인한 기능들을 수행하는 회로들 또는 등가 구조들을 갖거나 갖지 않을 수 있다. 예를 들어, FPGA(335)는 개별 회로 요소가 개별 기능을 개별적으로 수행하는 것이 아니라, 전술한 모든 기능을 수행하는 단일 회로일 수도 있다.
전술한 것과 같이, 비교기(805)는 원자의 최장 연속 일치를 식별할 수 있다. 도 9a 및 9b는 최선의 일치를 선택하는데 사용되는 가중치의 가능한 고려와 함께 이것이 어떻게 수행될 수 있는지를 도시한다.
도 9a 및 도 9b를 참조하면, 검색 시퀀스(605)는 다수의 단계에 걸쳐 참조 시퀀스(610)와 비교될 수 있다. 각각의 단계에서, 검색 시퀀스(605)의 서브 시퀀스는 참조 시퀀스(610)의 서브 시퀀스와 비교될 수 있으며, 각각의 서브 시퀀스 중 적어도 하나는 다른 단계와 비교하여 상이할 수 있다. 따라서, 예를 들어, 단계 0에서 검색 시퀀스(605)의 서브 시퀀스 "C"는 참조 시퀀스(610)의 서브 시퀀스 "A"와 비교될 수 있고, 단계 1에서 검색 시퀀스(605)의 서브 시퀀스 "CC"는 참조 시퀀스(605)의 서브 시퀀스 "AC"와 비교될 수 있다. (현재 단계에서는 각각의 단계에 할당된 가중치는 무시한다.) 각각의 단계에서 개별 원자의 비교는 1과 0의 시퀀스로 표시될 수 있으며, "1"은 일치를 나타내고 "0"은 일치하지 않음을 나타낼 수 있다. 단계 7에서 찾은, 참조 시퀀스(610)의 서브 시퀀스와 일치하는 원자를 가장 많이 포함하는 검색 시퀀스(605)의 서브 시퀀스를, 최상의 일치로 선택할 수 있다.
도 10은 도 9a 및 도 9b에서의 각각의 비교에 대한 총 일치 수를 도시한다. 총 일치 수가 가장 큰 비교에서, 반드시 일치 시퀀스가 연속적인 것은 아니다. 예를 들어, 행 1005에서, "AC", "AT" 및 "C"와 일치하는 총 3개의 개별 시퀀스가 있다. 비교에서 총 일치 수를 세는 대신, 시퀀스 분석은 비교에서 최장 연속 일치의 원자 수를 셀 수 있고, 이 경우 일치 수는 "5"가 아니라 "2"이다. (그러나 도시된 분석에서는 동일한 단계가 최장 연속 일치의 단계로 선택될 수 있는데, 이는 다른 단계들 중 두 개보다 긴 연속 일치를 가지는 단계가 없고, 복수의 단계가 동일한 수의 최장 연속 일치를 포함할 때, 가중치 대신(또는 가중치와 함께) 총 일치 수가 "타이 브레이커"로 사용될 수 있기 ?문이다.) 행 1005는 가장 많은 일치 개수를 포함하므로(또한 최장 연속 일치에서도 공동 선두이다), 단계 7은 원자의 최장 연속 일치를 포함하는 비교로서 선택될 수 있다.
가장 많은 개수의 일치를 포함하는 단계를 식별한 후, 시퀀스 분석은 원자의 최장 연속 일치를 식별할 수 있다. 단계에서 원자의 최장 연속 일치가 하나만이 존재하는 경우. 해당 최장 연속 일치가 선택될 수 있다. 그러나, 본 실시예에서, 단계에는 2개의 연속된 원자를 각각 포함하는 2개의 서로 다른 시퀀스가 존재하기 때문에, 비교는 임의로 또는 임의의 기준에 기초하여, 어떤 시퀀스가 참조 시퀀스에 보다 일치하는지 선택하거나, 임의의 서열을 원자의 최장 연속 일치로서 선택할 수 있다. 예를 들어, 중심 매칭을 선호하는 경우 시퀀스 "AT"가 원자의 최장 연속 일치로 선택될 수 있는 반면, 좌측 매칭을 선호하는 경우 시퀀스 "AC"가 원자의 최장 연속 일치로 선택될 수 있다.
도 8의 비교기(805)가 원자들의 최장 연속 일치를 식별하면, 도 8의 분배기(810)는 도 6의 검색 시퀀스(605) 및 도 6의 참조 시퀀스(610)를 좌측, 중심 및 우측 부분으로 분할할 수 있다. 도 6의 중심 부분(615 및 620)은 원자의 최장 연속 일치를 포함하는 것으로 선택될 수 있는 반면, 도 6의 좌측 부분(625 및 635)은 원자의 최장 연속 일치의 왼쪽에 있는 원자를 포함할 수 있고, 우측 부분(630 및 640)은 원자의 최장 연속 일치의 오른쪽에 있는 원자를 포함할 수 있다. 따라서, 도 6 및 도 10을 참조하면, 원자의 최장 연속 일치가 "AT"로 선택된다면, 좌측 부분(625)은 "ACGC"를 포함하고, 좌측 부분(635)은 "ACTG"를 포함하고, 우측 부분(630)은 "CC"를 포함하고, 우측 부분(640)은 "TCA"를 포함할 수 있다. 한편, 원자의 최장 연속 일치가 "AC"로 선택된다면, 좌측 부분(625)은 공백이고, 좌측 부분(635)은 공백이고, 우측 부분(630)은 "GCATCC"를 포함하고, 우측 부분(640)은 "TGATTCA"를 포함할 수 있다. 도 3의 FPGA(335)는 도 6의 좌측 부분(625 및 635) 및 도 6의 우측 부분(630 및 640)을 사용하여 재귀적으로 분석을 수행할 수 있다. (최장 연속 일치가 "AC"로 선택된다면, 좌측 부분(625 및 635)은 공백이므로, 좌측 부분(625 및 635)의 일치에 대해 검색이 수행될 필요가 없다.)
도 9a 및 9b를 다시 참조하면, 가중치가 설명될 수 있다. 도 9a 및 9b에는 중심 매칭에 대한 선호도가 도시되어있다. 따라서, 도 8의 비교 가중치 할당기(815)는 검색 시퀀스(605) 및 참조 시퀀스(610)의 중심에 가장 가까운 일치에 가장 높은 가중치를 할당할 수 있으며, 가중치는 중심으로부터 멀어질수록 점점 작아진다. 즉, 단계 0 및 15에 가중치 1이 할당될 수 있고, 단계 1 및 14에 가중치 2가 할당될 수 있다.
좌측 매칭이 선호되는 경우, 도 8의 비교 가중치 할당기(815)는 도 6의 참조 시퀀스(610)의 시작에서부터 도 6의 검색 시퀀스(605) 전체가 일치하는 경우에 가장 높은 가중치를 할당할 수 있고(도 9a 및 9b에서 단계 7의 경우), 그 시점으로부터 가중치가 좌우로 갈수록 감소한다. 유사하게, 우측 매칭이 선호되는 경우, 도 8의 비교 가중치 할당기(815)는 도 6의 검색 시퀀스(605) 전체가 도 6의 참조 시퀀스(610)의 끝에서 일치하는 경우에 가장 높은 가중치를 할당할 수 있고(더 9a 및 9b에서 단계 8의 경우), 그 시점으로부터 좌우로 갈수록 가중치가 감소한다. (양수와 음수 가중치를 모두 가지는 경우 일부 가능한 일치 항목이 완전히 제외될 수 있으므로, 모든 가중치가 양수가 되거나 음수가 되도록 가중치를 지정할 수 있다. 단, 대상에서 너무 멀리 떨어진 일치 항목을 선택하지 않는 것이 요구되는 경우, 양수 가중치와 음수 가중치를 혼합하는 것이 가능할 수 있다.)
전술한 내용은 도 8의 비교 가중치 할당기(815)에 초점을 맞추고 있지만, 가중치는 서브 시퀀스가 그들의 상대적 위치보다는 얼마나 유사한 지에 의존한다는 점을 제외하고는, 유사한 접근법이 도 8의 유사 가중치 할당기(820)에 사용될 수 있다. 도 8의 비교기(805)는 도 8의 유사 가중치 할당기(820)를 사용하여 보다 유사한 일치에 더 높은 가중치를 할당하고, 덜 유사한 일치에 더 낮은 가중치를 할당할 수 있다.
도 8의 유사 가중치 할당기(820)를 사용하는 경우 비교 가중치 할당기(815)를 사용할 때와 달리 좋은 해법(wrinkle)이 발생한다: 구체적으로, 정렬이 끝나는 위치를 결정하는 방법에서. 일치 여부가 본질적으로 이진(binary)일 때(두 개의 원자가 완전히 일치하거나 완전히 다름), 일치 시퀀스가 시작하거나 끝나는 위치를 쉽게 결정할 수 있다. 예를 들어, 단계 7(도 9a에 도시됨)에는, "AC"(시퀀스에서 처음 두 원자), "AT"(시퀀스에서 다섯 번째 및 여섯 번째 원자) 및 "C"(시퀀스에서 여덟 번째 원자)의 세 개의 일치 시퀀스가 있다. 일치하지 않는 원자는 일치 시퀀스에 포함되지 않는다.
그러나, 일치 여부가 이진(binary)이 아니고 범위 값을 취할 수 있는 경우(도 8의 유사 가중치 할당기(820)를 사용할 때도 발생할 수 있음), 일치 시퀀스가 어디서 시작하고 끝나는지 알기가 어렵다. 이진이 아닌 일치를 사용하면 원자 비교 결과가 정확히 0(일치하지 않음) 값을 반환하는 경우는 거의 없다. 대신, 반환되는 값은 0이 아닌 값일 수 있고, 이 값은 상대적인 일치 가능성을 나타낸다. 예를 들어, "i"와 "o"를 비교하면 "i"가 표준 QWERTY 키보드에서 "a"보다 "o"에 훨씬 가깝기 때문에 정확히 일치하는 것보다는 낮지만, "a"와 "o"를 비교하는 것보다는 더 높은 값을 얻을 수 있다. 정확한 "일치하지 않음" 값이 반환되지 않으면, 일치 시퀀스가 시작되고 끝나는 위치를 식별하기가 더 어려울 수 있다.
이 문제에 대한 해결책은 임계 값(차단 값이라고도 함)을 설정하고 비교 결과가 임계 값보다 작으면 원자의 특정 비교가 일치하지 않는 것으로 간주하는 것이다. 예를 들어, 비교 결과가 0과 1 사이에서 스케일링되면 ("0"은 일치하지 않음을 의미하고 "1"은 정확한 일치를 의미함) 임계 값으로 0.1이 사용될 수 있다. 이 임계 값 아래로 결과를 반환하는 원자의 비교는 일치하지 않는 것으로 간주될 수 있고, 따라서 일치 시퀀스의 외부를 나타낼 수 있다. 반대로, 이 임계 값 이상의 결과를 반환하는 원자의 비교는 일치로 간주될 수 있고, 일치 시퀀스의 일부라고 할 수 있다. 특정 일치 시퀀스의 양끝이 식별되면, 본 개시의 일 실시예는 도 6을 참조하여 전술한 바와 같이, 일치 시퀀스의 일부로 간주되지 않는 시퀀스의 좌측 및 우측 부분을 식별하도록 진행될 수 있다.
임계 값은 시스템의 사용자에 의해 설정될 수 있거나, 원자의 상대적 유사성에 관한 정보를 저장하는 매트릭스의 정보에 기초하여 결정될 수 있다. 예를 들어, 아미노산이 원자로서 사용되는 경우, 아미노산에 관한 상대적 유사성 정보를 제공하기 위해 BLOSUM 또는 PAM 매트릭스가 사용될 수 있고, 임계 값은 이들 매트릭스로부터 도출될 수 있다. 유사하게, 문자가 원자로 사용될 때, 매트릭스는 임의의 하나의 특정 문자가 임의의 다른 특정 문자로 잘못 입력되었을 가능성을 나타낼 수 있다. 임계 값은 임의의 방식으로 도출될 수 있다: 예를 들어, 매트릭스 내의 값들의 순위를 매기고 특정 엔트리(예를 들어, 맨 아래로부터 다섯 번째 엔트리, 또는 총 값의 수의 백분율)에서 값을 선택함으로써. 유사하게, 상기 논의는 비교 결과를 0 내지 1의 범위로 설명하였지만, 다른 범위가 제한 없이 사용될 수 있다.
상기 논의에서, "더 높은 가중치" 및 "더 낮은 가중치"라는 용어는 구현 방법에 따라 상대적일 수 있다. 예를 들어, 알고리즘이 양의 가중치를 사용하는 경우 "높은 가중치"는 "낮은 가중치"보다 수치적으로 큰 숫자를 사용할 수 있다. 반면, 알고리즘이 음의 가중치를 사용하는 경우, "높은 가중치"는 "낮은 가중치"보다 수치적으로 작은 숫자를 사용할 수 있다. "높은" 및 "낮은"이라는 용어는 반드시 특정한 수치 관계를 의미하는 것은 아니다.
가중치가 각각의 비교에 할당되면, 가중치는 단계별로 일치 수(또는 최장 연속 일치의 길이)에 곱해질 수 있다. 따라서, 예를 들어, 도 9a를 참조하면, 단계 1은 가중치가 2이고 하나의 원자가 일치하므로 2의 값을 가질 수 있고; 단계 7은 가중치가 8이고 5개의 원자가 일치하므로 총 40의 값을 가질 수 있다(또는 최장 연속 일치의 길이를 사용하는 경우 16). 가중치가 사용되는 본 개시의 일 실시예에서, 상기와 같이 시퀀스 분석이 수행된 후에, 최대값(가중치 및 일치 횟수 또는 최장 연속 일치의 길이를 모두 고려하였을 때)은 최장 연속 일치를 갖는 것으로 간주되는 단계를 선택하는데 사용될 수 있다.
가중치가 사용되는 본 개시의 일 실시예에서, 특정 단계에서 적용된 가중치는 일치 횟수(또는 최장 연속 일치의 길이)보다 더 큰 요소가 될 수 있다. 예를 들어, 가중치가 4인 단계에 총 8개의 일치 원자가 있고(총 32의 값), 가중치가 5인 다른 단계에 총 7개의 일치 원자가 있는 경우(총 35의 값), 후자의 단계는 총 일치 원자 개수가 적더라도 선택될 수 있다. 이러한 상황은 시퀀스 분석이 최적의 솔루션을 찾지 못하게 하는 국소 최대화를 초래할 수 있다. 이러한 상황을 해결하기 위해 추가 분석을 위한 둘 이상의 단계를 선택할 수 있다. 시퀀스 분석을 통해 (일반적인 솔루션과 같은 선형 분석이 아니라) 여러 검색 시퀀스를 병렬로 분석할 수 있으므로, 이러한 방식으로 솔루션의 대체 방법을 탐색하면 로컬 최대값을 생성하는 경로를 따르는 데 필요한 시간 이상의 추가 시간이 필요하지 않을 수 있다.
병렬 분석을 위한 하나 이상의 단계를 선택하기 위해, 임의의 적절한 접근법이 사용될 수 있다. 예를 들어, 선택된 단계에서 특정 "거리" 내에 있을 수 있는 모든 단계(예를 들어, 총 값이 선택한 단계의 총 값의 일부 델타(delta) 범위 내에 있거나, 선택한 단계의 총 값의 일부 백분율(percentage) 내에 있는 모든 단계)가 탐색될 수 있다. 대안적으로, 총 값이 가장 높은 단계를 선택하는 대신에, 총 값이 높은 순서대로 미리 정해진 수의 단계(예를 들어, 3개)가 탐색될 수 있다. 본 개시의 일 실시예는 추가적인 병렬 탐색을 위한 단계를 추가적으로 선택하는 다른 기술을 포함할 수 있다.
일반적으로, 검색 시퀀스(605)의 모든 가능한 서브 시퀀스는 참조 시퀀스(610)의 모든 가능한 서브 시퀀스와 비교될 수 있다. 그러나, 검색 시퀀스(605)의 모든 가능한 서브 시퀀스를 참조 시퀀스(610)의 모든 가능한 서브 시퀀스와 비교하는 것은 충분할 수 있지만, 그러한 것은 필요하지 않을 수도 있다. 도 9a 및 9b를 다시 참조하면, 검색 시퀀스(605)의 어떤 서브 시퀀스가 참조 시퀀스(610)의 어떤 서브 시퀀스와 비교될 수 있는지를 식별하는 다양한 규칙을 제안할 수 있다. 이러한 규칙에는 다음이 포함될 수 있다:
1) 검색 시퀀스(605)의 임의의 서브 시퀀스는 검색 시퀀스(605)의 왼쪽 끝에 있는 원자 또는 검색 시퀀스(605)의 오른쪽 끝에 있는 원자를 포함할 수 있으며, 두 가지 원자 모두 포함하는 것도 가능하다(검색 시퀀스(605)의 시작과 끝을 나타내기 위해 "좌측" 및 "우측"의 용어가 선택될 수 있다: "첫 번째" 및 "마지막", "상단" 및 "하단" 등과 같은 용어들도 동등한 의미로 사용될 수 있고, 각각의 용어 쌍 중 하나의 항목은 검색 시퀀스(605)의 양단 중 어느 하나에 적용될 수 있다).
2) 검색 시퀀스(605)의 서브 시퀀스가 검색 시퀀스(605)보다 짧은 경우(즉, 검색 시퀀스(605)는 서브 시퀀스에 포함되지 않은 적어도 하나의 원자를 포함), 그 서브 시퀀스는 참조 시퀀스(610)의 반대쪽 말단에 있는 원자를 포함하는, 참조 시퀀스(610)로부터 동일한 길이의 서브 시퀀스와 비교될 수 있다. 따라서, 예를 들어, 검색 시퀀스(605)의 좌측 끝에 "A"를 포함하는 임의의 서브 시퀀스는 참조 시퀀스(610)의 우측 끝에 "A"를 포함하는 참조 시퀀스(610)의 서브 시퀀스와 비교될 수 있고; 검색 시퀀스(605)의 우측 끝에 "C"를 포함하는 임의의 서브 시퀀스는 참조 시퀀스(610)의 좌측 끝에 "A"를 포함하는 참조 시퀀스(610)의 서브 시퀀스와 비교될 수 있다.
3) 전체 검색 시퀀스(605)가 참조 시퀀스(610)와 비교되는 경우, 검색 시퀀스(605)는 검색 시퀀스(605)와 동일한 길이의, 참조 시퀀스(610)의 모든 서브 시퀀스와 비교될 수 있다.
4) 상기 규칙은 검색 시퀀스(605)가 참조 시퀀스(610)보다 길지 않다고 가정한다. 검색 시퀀스(605)가 참조 시퀀스(605)보다 긴 경우, 검색 시퀀스(605) 및 참조 시퀀스(610)의 역할은 상기 규칙에서 역전될 수 있다.
도 11은 검색 서브 시퀀스와 참조 서브 시퀀스 사이에서 최장 연속 일치를 식별하는 회로 구조를 도시한 도면이다. 도 11을 참조하면, 검색 서브 시퀀스(1105) 및 참조 서브 시퀀스(1110)가 주어지면, 개별 원자는 원자 비교기(1115)와 같은 개별 원자 비교기에 입력될 수 있고, 그 결과는 분석기(1120-1, 1120-2, 1120-3)에 입력될 수 있다. 분석기(1120-1, 1120-2, 1120-3)는 원자 비교기(1115)에 입력된 원자에 기초하여 최장 연속 일치(또는 총 일치 수)를 식별하고, 이 정보를 선택기(1125)로 출력할 수 있으며, 선택기(1125)는 그 후 최장 연속 일치(또는 가장 많은 수의 일치를 포함하는 단계) 및 최장 연속 일치의 위치를 반환할 수 있다.
도 11에 대한 몇 가지 주의점이 있다. 첫째로, 도 11은 3개의 분석기(1120-1, 1120-2, 1120-3)를 도시한다. 그러나, 다른 개수의 분석기가 존재할 수도 있다: 분석기의 총 개수는 검색 서브 시퀀스(1105) 및 참조 서브 시퀀스(1110)의 길이에 따라 변할 수 있다.
둘째로, 분석기(1120-1, 1120-2, 1120-3)는 각각 원자 비교기(1115)와 같은 4개의 원자 비교기로부터 입력을 받는 것으로 도시되어있다. 그러나 분석기(1120-1, 1120-2, 1120-3)에 입력을 제공하는 원자 비교기의 개수는 입력되는 서브 시퀀스의 길이에 따라 달라질 수 있다. 또한, 도 11의 회로가 다양한 길이의 도 6의 검색 시퀀스(605)의 서브 시퀀스를 도 6의 참조 시퀀스(610)와 비교하도록 의도될 수 있다면, 분석기(1120-1, 1120-2, 1120-3)에 대한 입력의 수는 다를 수 있다. 예를 들어, 도 9a 및 9b를 다시 참조하면, 단계 0 및 15는 각각 도 6의 검색 시퀀스(605)로부터 하나의 원자를 도 6의 참조 시퀀스(610)의 하나의 원자와 비교하고, 단계 1 및 14는 각각 도 6의 검색 시퀀스(605)로부터 2개의 원자를 도 6의 참조 시퀀스(610)의 2개의 원자와 비교할 수 있다(도 6의 참조 시퀀스(610)에 대해 7개의 원자(도 6의 검색 시퀀스(605)의 길이)를 비교하는 단계 7 및 8까지). 따라서, 각각의 분석기에 입력을 제공하는 원자 비교기의 수는 현재 단계에서 고려되는 서브 시퀀스의 길이에 기초하여 변할 수 있다. 또한, 검색 서브 시퀀스(1105) 각각의 단일 원자는, 서브 시퀀스(또는 그 일부)가 참조 서브 시퀀스(1110)에 대해 "슬라이딩"될 수 있으므로, 참조 서브 시퀀스(1110)에서 다수의 원자와 비교될 수 있다.
마지막으로, 도 11은 검색 서브 시퀀스(1105) 및 참조 서브 시퀀스(1110)를 도시하지만, "서브 시퀀스"라는 용어는 도 6의 검색 시퀀스(605) 또는 도 6의 참조 시퀀스(610)로부터의 연속적인 원자 시퀀스를 의미하거나, 검색 시퀀스(605) 또는 참조 시퀀스(610) 전체를 의미할 수 있다. 즉, "서브 시퀀스"는 원래의 시퀀스보다 길이가 반드시 짧다는 것을 의미하지는 않는다.
불연속 도메인에서 2개의 함수 또는 2개의 시퀀스 간의 유사성을 측정하는 것은 2개의 함수 또는 2개의 시퀀스 사이의 교차 상관에 의해 제공될 수 있다. 두 개의 불연속 시퀀스 A[m]과 B[m] 사이의 교차 상관(여기서 A와 B는 정수 또는 실수일 수 있음)은 도 11에 도시된 회로와 유사하게, 두 시퀀스를 서로에 대하여 n 만큼 슬라이딩하고, A[m] 및 B[m]의 대응하는 요소를 곱한 값을 합산하여 얻은 함수 C[n]으로 정의될 수 있다. 도 12는 검색 서브 시퀀스와 참조 서브 시퀀스 간의 교차 상관을 수행하는 회로 구조를 도시한 도면이다.
도 12를 참조하면, 특정 쌍의 검색 서브 시퀀스(1105) 및 참조 서브 시퀀스(1110)가 주어지면, 원자 비교기(1205)는 검색 서브 시퀀스(1105) 및 참조 서브 시퀀스(1110)에서 개별 대응하는 원자를 비교할 수 있다. 원자 비교기(1205)는 2개의 원자의 비교의 임의의 결과를 반환할 수 있다: 0과 1 또는 임의의 다른 값 쌍이 사용될 수 있다. 합산기(1210)는 원자 비교기(1205)에 의해 생성된 값을 합산하여 검색 시퀀스(1105)와 참조 시퀀스(1110) 간의 교차 상관을 나타내는 출력을 생성할 수 있다. 도 12의 회로의 출력은 도 11의 분석기(1120-1, 1120-2, 1120-3)의 출력의(잠재적으로 희석된) 형태로 간주될 수 있는 값을 생성할 수 있고, 따라서 도 11의 분석기(1120-1, 1120-2, 1120-3)의 구현의 일례로 사용될 수 있다((모든 일치가 아니라) 누락된 요소는 각 분석기에 의해 발견된 원자의 최장 연속 일치 위치 및 최장 연속 일치 길이가 될 수 있음). 도 12의 회로는 예를 들어 도 9a 및 9b와 같이 임의의 개별 단계에 대한 일치의 수를 결정하기 위해 사용될 수 있다.
도 13a 및 13b는 본 개시의 일 실시예에 따른 시퀀싱 분석을 수행하는 예시적인 절차의 흐름을 도시한 도면이다. 도 13a를 참조하면, 1305에서, 도 8의 비교기(805)는 도 6의 검색 시퀀스(605) 및 도 6의 참조 시퀀스(610)를 수신할 수 있다. 1310에서, 도 8의 비교기(805)는 도 6의 검색 시퀀스(605)와 도 6의 참조 시퀀스(610) 사이에서 원자의 최장 연속 일치를 식별할 수 있다. 1315에서, 도 8의 분배기(810)는 도 6의 검색 시퀀스(605)를 도 6의 좌측 부분(625), 중심 부분(615) 및 우측 부분(630)으로 분할할 수 있다. 도 8의 분배기(810)는 또한 도 6의 참조 시퀀스(610)를 도 6의 좌측 부분(635), 중심 부분(620) 및 우측 부분(640)으로 분할할 수 있다.
도 13b를 참조하면, 1320에서, 도 3의 FPGA(335)는 도 6의 좌측 부분(625)이 비어있는지 또는 적어도 하나의 원자를 포함하는지를 결정할 수 있다. 좌측 부분(625)이 적어도 하나의 원자를 포함하는 경우, 1325에서, 도 3의 FPGA(335)는 도 6의 좌측 부분(625) 및 좌측 부분(635)을 재귀적으로 분석할 수 있다. 1330에서, 도 3의 FPGA(335)는 도 6의 우측 부분(630)이 비어있는지 또는 적어도 하나의 원자를 포함하는지를 결정할 수 있다. 우측 부분(630)이 적어도 하나의 원자를 포함하는 경우, 1335에서, 도 3의 FPGA(335)는 도 6의 우측 부분(630) 및 우측 부분(640)을 재귀적으로 분석할 수 있다.
도 14a 및 14b는 본 개시의 일 실시예에 따른 도 13a 및 13b의 시퀀싱 분석에서 일치를 식별하기 위한 예시적인 절차의 흐름을 도시한 도면이다. 도 14a를 참조하면, 1405에서, 도 8의 비교기(805)는 도 6의 검색 시퀀스(605)의 모든 서브 시퀀스를 참조 시퀀스(610)의 모든 서브 시퀀스와 비교할 수 있다. (전술한 것과 같이, 검색 시퀀스(605)의 모든 서브 시퀀스를 참조 시퀀스(610)의 모든 서브 시퀀스와 비교할 필요가 없을 수도 있다: 상기 규칙에 기초한 보다 선택적인 비교가 사용될 수도 있다.) 1410에서, 도 8의 비교기(805)는 원자의 최장 연속 일치를 포함하는 서브 시퀀스를 선택할 수 있고, 1415에서, 도 8의 비교기(805)는 선택된 서브 시퀀스에서 원자의 최장 연속 일치를 도 6의 중심 부분(615, 620)으로 식별할 수 있다.
대안적으로, 도 14b를 참조하면, 원자들의 최장 연속 일치를 단순히 선택하는 대신, 1420에서, 도 8의 비교 가중치 할당기(815)는 비교되는 서브 시퀀스의 길이 및 도 6의 참조 시퀀스(610)에서의 이들의 위치에 기초하여 각각의 비교에 가중치를 할당할 수 있다. 이후, 1425에서, 도 8의 비교기(805)는 그 비교에서 원자들의 최장 연속 일치의 길이(또는 그 비교에서 총 일치의 수)와 가중치를 모두 고려하여, 각각의 비교에 대한 가중된 일치를 결정할 수 있다. 이것은 두 값을 곱하여 가중된 일치를 생성함으로써 수행될 수 있다. 마지막으로, 1430에서, 도 8의 비교기(805)는 가장 높은 가중된 일치의 비교를 선택할 수 있고, 이후 프로세싱은 그 서브 시퀀스에서 최장 연속 일치를 식별하기 위해 도 14a의 블록 1415로 되돌아갈 수 있다.
대안적으로, 도 14b를 참조하면, 원자들의 최장 연속 일치를 단순히 선택하는 대신, 1435에서, 도 8의 유사 가중치 할당기(820)는 비교되는 서브 시퀀스의 유사성에 기초하여 각각의 비교에 가중치를 할당할 수 있다. 이후, 1440에서, 도 8의 비교기(805)는 원자의 최장 연속 일치 및 가중치를 모두 최적화하는 비교를 선택할 수 있다. 이러한 최적화는 두 값을 곱하여 가중된 일치를 생성함으로써 수행될 수 있다. 마지막으로, 프로세싱은 그 서브 시퀀스에서 최장 연속 일치를 식별하기 위해 도 14a의 블록 1415로 되돌아갈 수 있다.
도 14b를 참조하면, 1420 내지 1430 및 1435 내지 1440에서 2개의 상이한 대안적인 접근법을 도시하지만, 본 개시의 일 실시예는 두 가지 접근법을 함께 결합할 수도 있다. 즉, 도 8의 비교기(805)는 도 8의 비교 가중치 할당기(815) 및 도 8의 유사 가중치 할당기(820) 모두에 의해 할당된 가중치를 적용할 수 있다.
도 13a 내지 14b를 참조하면, 본 개시의 실시예들이 제공된다. 그러나, 당업자는 블록의 순서를 변경하거나, 블록을 생략하거나, 도면에 도시되지 않은 링크를 포함함으로써 실시예의 변형이 가능하다는 것을 인식할 수 있다. 흐름도의 이러한 모든 변형은 명시적 개시 여부와 무관하게 본 발명의 실시예에 포함될 수 있다.
본 개시의 일 실시예는 종래 기술에 비해 기술적 이점을 제공할 수 있다. 종래의 시스템에서 시퀀스 분석은 순차적인 직렬 과정이다: 알고리즘의 다음 반복이 수행되기 전에 이전 반복이 완료되어야 한다. 대조적으로, 본 개시의 일 실시예에서는 각 단계에서 최장 연속 일치의 바람직한 선택을 결정함에 있어서 다중 비교의 병렬 실행을 허용한다. 본 개시의 일 실시예는 종래의 시퀀스 분석보다 전반적으로 더 많은 비교를 수행할 수 있으면서도, 시퀀스 분석을 수행하는데 필요한 전체 시간이 병렬 실행 경로를 제공함으로써 감소될 수 있다. 또한, 본 개시의 일 실시예는 SSD에 부착된 FPGA를 사용하여 구현될 수 있다: 그러한 FPGA 내에 시퀀스 분석을 구현함으로써, 알고리즘을 수행하기 위해 많은 양의 데이터를 저장 장치로부터 호스트 컴퓨터 메모리로 전송할 필요가 없으므로, 성능이 개선된다. 프로세싱은 SSD에 저장된 데이터에 대한 자체적인 빠른 액세스(데이터를 호스트 메모리로 전송하는 것보다 빠름)로 FPGA에 의해 로컬로 수행될 수 있다. 본 개시의 일 실시예는 또한 호스트 프로세서가 시퀀스 분석을 수행하는 것 이외의 다른 작업을 수행할 수 있도록 함으로써 호스트 자원의 사용을 감소시킬 수 있다.
다음의 논의는 본 개시의 특정 양상이 구현될 수 있는 적합한 장치의 일반적인 설명을 제공한다. 장치(들)는 키보드, 마우스 등과 같은 입력 장치로부터의 입력뿐만 아니라, 다른 장치로부터 수신된 지시어, 가상 현실(VR) 환경과의 상호 작용, 생체 신호 피드백 또는 기타 입력 신호 등에 의해 부분적으로 제어될 수 있다. 본 개시에서 사용되는 용어 "장치"는 단일 장치, 가상 장치, 또는 통신으로 연결되어 함께 작동하는 장치, 가상 장치 또는 시스템을 광범위하게 포함하는 것으로 의도될 수 있다. 장치는 개인용 컴퓨터, 워크스테이션(workstation), 서버, 휴대용 컴퓨터, 핸드 헬드(handheld) 장치, 전화기, 태블릿 등과 같은 컴퓨팅 장치뿐만 아니라, 개인 또는 대중 교통과 같은 운송 장치, 예컨대 자동차, 기차, 택시 등을 포함할 수 있다.
장치(들)는 프로그래밍 가능하거나 프로그래밍 불가능한 로직 디바이스 또는 어레이(array), ASIC(Application-Specific Integrated Circuit), 임베디드 컴퓨터, 스마트 카드 등과 같은 임베디드(embedded) 컨트롤러를 포함할 수 있다. 장치(들)는 네트워크 인터페이스, 모뎀 또는 다른 통신 결합을 통한 것과 같이 하나 이상의 원격 장치에 대한 하나 이상의 연결을 이용할 수 있다. 장치들은 인트라넷, 인터넷, 근거리 통신망, 광역 통신망 등과 같은 물리적 또는 논리적 네트워크를 통해 상호 연결될 수 있다. 당업자는 네트워크 통신이 RF(Radio Frequency), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스®, 광학, 적외선, 케이블, 레이저 등을 포함한, 다양한 유무선 단거리 또는 장거리 캐리어 및 프로토콜을 이용할 수 있다는 것을 이해할 것이다.
본 개시의 일 실시예는, 장치에 의해 액세스될 때, 장치가 작업을 수행하거나 추상적인 데이터 유형을 정의하거나 그보다 낮은 하드웨어 컨텍스트의 결과를 가져오는, 함수, 절차, 데이터 구조, 응용 프로그램 등을 포함하는 관련 데이터를 참조하거나 이와 관련하여 설명될 수 있다. 관련 데이터는 예를 들어, 휘발성 및/또는 비휘발성 메모리, 예를 들어, RAM, ROM 등, 또는 다른 저장 장치 및 관련 저장 매체, 예를 들어, 하드 드라이브, 플로피 디스크, 광학 저장 매체, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 저장 매체에 저장될 수 있다. 관련 데이터는 물리적 및/또는 논리적 네트워크를 포함하는 패킷, 직렬 데이터, 병렬 데이터, 전파된 신호 등의 형태로 전송 환경을 통해 전달될 수 있으며, 압축 또는 암호화된 형식으로 사용될 수 있다. 관련 데이터는 분산(distributed) 환경에서 사용될 수 있으며, 장치 액세스를 위해 로컬 및/또는 원격으로 저장될 수 있다.
본 개시의 일 실시예는 하나 이상의 프로세서에 의해 실행 가능한 명령을 포함하는 유형의 비일시적 기계 판독 가능 매체를 포함할 수 있으며, 명령은 개시된 바와 같은 본 개시의 일 실시예를 수행하기 위한 명령을 포함할 수 있다.
전술한 방법의 다양한 동작은 다양한 하드웨어 및/또는 소프트웨어 구성 요소(들), 회로 및/또는 모듈(들)과 같은 동작을 수행할 수 있는 임의의 적절한 수단에 의해 수행될 수 있다. 소프트웨어는 논리 기능을 구현하기위한 실행 가능한 명령의 목록을 포함할 수 있고, 단일 또는 다중 코어 프로세서 또는 프로세서를 포함하는 시스템과 같은, 명령 실행 시스템, 장치 또는 디바이스에 의해 사용되기 위해 임의의 "프로세서 판독 가능 매체"로 구현될 수 있다.
본 개시의 일 실시예와 관련하여 설명된 방법, 알고리즘 및 함수의 블록 또는 단계는 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우, 함수들은 유형의 비일시적 컴퓨터 판독 가능 매체 상에 하나 이상의 명령어 또는 코드로서 저장되거나 이를 통해 전송될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM 또는 임의의 다른 형태의 저장 매체에 포함될 수 있다.
본 개시의 실시예들이 명확하게 설명되고 예시되었지만, 많은 변경들 및 변형들이 가능하며, 임의의 방식으로 조합될 수 있을 것이다. 또한, 논의된 특정 실시예와 다른 구성이 고려될 수 있다. 특히, "본 개시의 일 실시예" 등의 표현이 사용되더라도, 이러한 문구는 일반적으로 실시예의 가능성을 참조하기 위한 것이며, 특정한 실시예의 구성만으로 제한하는 것은 아니다. 본 개시에서 사용된 바와 같이, 용어는 다른 실시예에 결합 가능한 동일하거나 상이한 실시예를 지칭할 수도 있다.
전술한 예시적인 실시예들은 본 발명의 개념을 제한하는 것으로 해석되지 않아야 한다. 몇 가지 실시예들이 설명되었지만, 당업자는 본 개시의 교시 및 장점을 실질적으로 벗어나지 않으면서 실시예들에 대한 변경이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 그러한 모든 변경은 청구범위에 따라 본 발명의 범위 내에 포함될 수 있다.
본 개시의 실시예들은 제한되지 않으면서 다음의 기술들로 확장될 수 있다:
실시예 1
데이터를 저장하는 플래시 메모리;
플래시 메모리로부터 데이터를 읽고 플래시 메모리에 데이터를 쓰는 것을 관리하는 SSD 컨트롤러; 및
검색 시퀀스와 참조 시퀀스의 비교를 수행하도록 동작하는 FPGA(Field Programmable Gate Array)를 포함하고,
참조 시퀀스는 플래시 메모리에 저장되고,
FPGA는,
검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고;
검색 시퀀스를, 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 검색 시퀀스에서 원자의 연속 일치를 포함하는 중심 부분, 및 검색 시퀀스에서 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고;
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, SSD(Solid State Drive).
실시예 2
실시예 1에 있어서, 원자의 연속 일치는 원자의 최장 연속 일치를 포함하는, SSD.
실시예 3
실시예 1에 있어서,
검색 시퀀스에서 원자의 연속적인 일치 이전의 제1 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이전의 모든 원자를 포함하고; 및
검색 시퀀스에서 원자의 연속적인 일치 이후의 제2 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이후의 모든 원자를 포함하는, SSD.
실시예 4
실시예 1에 있어서, FPGA는:
검색 시퀀스의 좌측 부분을 참조 시퀀스와 재귀적으로 일치시키고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 재귀적으로 일치시키는, SSD.
실시예 5
실시예 1에 있어서, FPGA는 추가로:
검색 시퀀스의 좌측 부분을 참조 시퀀스의 좌측 부분과 일치시키고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스의 우측 부분과 일치시키는, SSD.
실시예 6
실시예 1에 있어서, FPGA는 추가로 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것과 병렬로 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는, SSD.
실시예 7
실시예 1에 있어서, FPGA는 추가로:
검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하고; 및
검색 시퀀스에서 원자의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는, SSD.
실시예 8
실시에 7에 있어서, 원자는 뉴클레오티드, 아미노산, 문자, 단어 및 픽셀 값을 포함하는 세트로부터 추출되는, SSD.
실시예 9
실시예 7에 있어서, FPGA는 추가로 검색 시퀀스에서 복수의 원자의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 병렬로 비교하는, SSD.
실시예 10
실시예 7에 있어서, FPGA는 추가로:
검색 시퀀스에서 복수의 원자의 서브 시퀀스 및 참조 시퀀스에서 복수의 시작 위치의 비교마다, 검색 시퀀스에서 원자의 서브 시퀀스의 길이 및 참조 시퀀스에서의 위치에 기초하는, 가중치를 할당하고;
검색 시퀀스에서의 복수의 원자의 서브 시퀀스 및 참조 시퀀스에서 복수의 시작 위치의 비교마다, 가중치 및 참조 시퀀스에서 연속적인 원자들과 일치하는 서브 시퀀스의 연속된 원자들의 개수에 기초하는, 가중된 일치를 결정하고; 및
검색 시퀀스에서 가장 높은 가중된 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, SSD.
실시예 11
실시예 10에 있어서, 복수의 비교에 할당된 가중치는 중심 일치 가중치, 좌측 일치 가중치 및 우측 일치 가중치를 포함하는 세트로부터 도출되는, SSD.
실시예 12
실시예 10에 있어서, 각각의 비교에 할당된 가중치는 고유하지 않은, SSD.
실시예 13
실시예 7에 있어서, 복수의 서브 시퀀스는 검색 시퀀스의 제1 원자에서 시작하거나 또는 검색 시퀀스의 마지막 원자에서 끝나는 복수의 서브 시퀀스를 포함하는, SSD.
실시예 14
실시예 7에 있어서, FPGA는 추가로:
검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에, 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자 사이의 유사성을 반영하는, 가중치를 할당하고; 및
연속 일치의 길이 및 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에 할당된 가중치에 기초하여, 검색 시퀀스에서 원자의 제1 서브 시퀀스를 선택하는, SSD.
실시예 15
제1 원자 시퀀스를 포함하는 참조 시퀀스 및 제2 원자 시퀀스를 포함하는 검색 시퀀스를 수신하고;
검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고;
검색 시퀀스를, 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 검색 시퀀스에서 원자의 연속 일치를 포함하는 중심 부분, 및 검색 시퀀스에서 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고;
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 방법.
실시예 16
실시예 15에 있어서, 원자의 연속 일치는 원자의 최장 연속 일치를 포함하는, 방법.
실시예 17
실시예 15에 있어서,
검색 시퀀스에서 원자의 연속적인 일치 이전의 제1 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이전의 모든 원자를 포함하고; 및
검색 시퀀스에서 원자의 연속적인 일치 이후의 제2 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이후의 모든 원자를 포함하는, 방법.
실시예 18
실시예 15에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 재귀적으로 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 우측 부분을 참조 시퀀스와 재귀적으로 일치시키는 것을 포함하는, 방법.
실시예 19
실시예 15에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스의 좌측 부분과 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 우측 부분을 참조 시퀀스의 우측 부분과 일치시키는 것을 포함하는, 방법.
실시예 20
실시예 15에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 적어도 하나의 원자를 포함하는 검색 시퀀스의 좌측 부분에 적어도 부분적으로 기초하여 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 적어도 하나의 원자를 포함하는 검색 시퀀스의 우측 부분에 적어도 부분적으로 기초하여 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 방법.
실시예 21
실시예 15에 있어서, 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것과 병렬로 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 방법.
실시예 22
실시예 15에 있어서, 검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하는 것은:
검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하고; 및
검색 시퀀스에서 원자의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 방법.
실시예 23
실시예 22에 있어서, 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하는 것은, 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 병렬로 비교하는 것을 포함하는, 방법.
실시예 24
실시예 22에 있어서,
검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하는 것은, 각각의 비교에 대해:
검색 시퀀스에서 원자의 서브 시퀀스의 길이 및 참조 시퀀스에서의 위치에 기초하여 가중치를 할당하고;
가중치 및 참조 시퀀스에서 연속적인 원자들과 일치하는 서브 시퀀스의 연속된 원자들의 개수에 기초하여 가중된 일치를 결정하고; 및
검색 시퀀스에서 가장 높은 가중된 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 검색 시퀀스에서 원자들의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 방법.
실시예 25
실시예 24에 있어서, 복수의 비교에 할당된 가중치는 중심 일치 가중치, 좌측 일치 가중치 및 우측 일치 가중치를 포함하는 세트로부터 도출되는, 방법.
실시예 26
실시예 24에 있어서, 각각의 비교에 할당된 가중치는 고유하지 않은, 방법.
실시예 27
실시예 22에 있어서, 복수의 서브 시퀀스는 검색 시퀀스의 제1 원자에서 시작하거나 또는 검색 시퀀스의 마지막 원자에서 끝나는 복수의 서브 시퀀스를 포함하는, 방법.
실시예 28
실시예 22에 있어서,
검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하는 것은, 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에, 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자 사이의 유사성을 반영하는, 가중치를 할당하는 것은 더 포함하고; 및
연속 일치를 포함하는 검색 시퀀스에서 원자의 제1 서브 시퀀스를 선택하는 것은, 연속 일치의 길이 및 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에 할당된 가중치에 기초하여, 검색 시퀀스에서 원자의 제1 서브 시퀀스를 선택하는 것을 포함하는, 방법.
실시예 29
실시예 15에 있어서, 참조 시퀀스는 참조 유전자 서열이고 검색 시퀀스는 검색 유전자 서열인, 방법.
실시예 30
실시예 15에 있어서, 참조 시퀀스는 참조 텍스트 시퀀스이고 검색 시퀀스는 검색 텍스트 시퀀스인, 방법.
실시예 31
실시예 15에 있어서, 참조 시퀀스는 참조 아미노산 서열이고 검색 시퀀스는 검색 아미노산 서열인, 방법.
실시예 32
실시예 15에 있어서, 참조 시퀀스는 참조 픽셀 시퀀스이고 검색 시퀀스는 검색 픽셀 시퀀스인, 방법.
실시예 33
비일시적(non-transitory) 저장 매체를 포함하고,
비일시적 저장 매체에 저장된 명령들은, 장치에 의해 실행될 때:
제1 원자 시퀀스를 포함하는 참조 시퀀스 및 제2 원자 시퀀스를 포함하는 검색 시퀀스를 수신하고;
검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고;
검색 시퀀스를, 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 검색 시퀀스에서 원자의 연속 일치를 포함하는 중심 부분, 및 검색 시퀀스에서 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고;
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 물품.
실시예 34
실시예 33에 있어서, 원자의 연속 일치는 원자의 최장 연속 일치를 포함하는, 물품.
실시예 35
실시예 33에 있어서,
검색 시퀀스에서 원자의 연속적인 일치 이전의 제1 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이전의 모든 원자를 포함하고; 및
검색 시퀀스에서 원자의 연속적인 일치 이후의 제2 원자들은 검색 시퀀스에서 원자의 연속적인 일치 이후의 모든 원자를 포함하는, 물품.
실시예 36
실시예 33에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 재귀적으로 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 우측 부분을 참조 시퀀스와 재귀적으로 일치시키는 것을 포함하는, 물품.
실시예 37
실시예 33에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스의 좌측 부분과 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 우측 부분을 참조 시퀀스의 우측 부분과 일치시키는 것을 포함하는, 물품.
실시예 38
실시예 33에 있어서,
검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것은, 적어도 하나의 원자를 포함하는 검색 시퀀스의 좌측 부분에 적어도 부분적으로 기초하여 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것을 포함하고; 및
검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 적어도 하나의 원자를 포함하는 검색 시퀀스의 우측 부분에 적어도 부분적으로 기초하여 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 물품.
실시예 39
실시예 33에 있어서, 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것은, 검색 시퀀스의 좌측 부분을 참조 시퀀스와 일치시키는 것과 병렬로 검색 시퀀스의 우측 부분을 참조 시퀀스와 일치시키는 것을 포함하는, 물품.
실시예 40
실시예 33에 있어서, 검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하는 것은:
검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하고; 및
검색 시퀀스에서 원자의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 물품.
실시예 41
실시예 40에 있어서, 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하는 것은, 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 병렬로 비교하는 것을 포함하는, 물품.
실시예 42
실시예 40에 있어서,
검색 시퀀스에서 원자의 복수의 서브 시퀀스를 참조 시퀀스에서 복수의 시작 위치와 비교하는 것은, 각각의 비교에 대해:
검색 시퀀스에서 원자의 서브 시퀀스의 길이 및 참조 시퀀스에서의 위치에 기초하여 가중치를 할당하고;
가중치 및 참조 시퀀스에서 연속적인 원자들과 일치하는 서브 시퀀스의 연속된 원자들의 개수에 기초하여 가중된 일치를 결정하고; 및
검색 시퀀스에서 가장 높은 가중된 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 검색 시퀀스에서 원자들의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 물품.
실시예 43
실시예 42에 있어서, 복수의 비교에 할당된 가중치는 중심 일치 가중치, 좌측 일치 가중치 및 우측 일치 가중치를 포함하는 세트로부터 도출되는, 물품.
실시예 44
실시예 42에 있어서, 각각의 비교에 할당된 가중치는 고유하지 않은, 물품.
실시예 45
실시예 40에 있어서, 복수의 서브 시퀀스는 검색 시퀀스의 제1 원자에서 시작하거나 또는 검색 시퀀스의 마지막 원자에서 끝나는 복수의 서브 시퀀스를 포함하는, 물품.
실시예 46
실시예 40에 있어서,
검색 시퀀스와 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하는 것은, 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에, 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자 사이의 유사성을 반영하는, 가중치를 할당하는 것은 더 포함하고; 및
연속 일치를 포함하는 검색 시퀀스에서 원자의 제1 서브 시퀀스를 선택하는 것은, 연속 일치의 길이 및 검색 시퀀스의 제1 원자와 참조 시퀀스의 제2 원자의 비교에 할당된 가중치에 기초하여, 검색 시퀀스에서 원자의 제1 서브 시퀀스를 선택하는 것을 포함하는, 물품.
실시예 47
실시예 33에 있어서, 참조 시퀀스는 참조 유전자 서열이고 검색 시퀀스는 검색 유전자 서열인, 물품.
실시예 48
실시예 33에 있어서, 참조 시퀀스는 참조 텍스트 시퀀스이고 검색 시퀀스는 검색 텍스트 시퀀스인, 물품.
실시예 49
실시예 33에 있어서, 참조 시퀀스는 참조 아미노산 서열이고 검색 시퀀스는 검색 아미노산 서열인, 물품.
실시예 50
실시예 33에 있어서, 참조 시퀀스는 참조 픽셀 시퀀스이고 검색 시퀀스는 검색 픽셀 시퀀스인, 물품.
결과적으로, 본 개시의 실시예들에 대한 다양한 순열을 고려하여, 본 개시의 상세한 설명 및 첨부 자료는 단지 예시적인 것으로 의도되며, 본 개시의 발명의 범위를 제한하는 것으로 간주되어서는 안 된다. 그러므로, 본 발명의 개념으로서 청구되는 것은 청구범위의 범주와 사상 및 그 등가물 내에 있을 수 있는 모든 수정을 포함할 수 있다.
105: 장치 110: 프로세서
120: SSD 215: 버스
320-1, 320-2, 320-3, 320-4: 채널
335: FPGA(Field Programmable Gate Array)
405: DNA 가닥(strand) 410, 415: 세그먼트
420: 시퀀스 505, 510: 오류(error)
605: 검색 시퀀스 610: 참조 시퀀스
615, 620: 중심 부분 625, 635: 좌측 부분
630, 640: 우측 부분 710: 원자
1005: 행 1105: 검색 서브 시퀀스
1110: 참조 서브 시퀀스 1115, 1205: 원자 비교기
1120-1, 1120-2, 1120-3: 분석기
1125: 선택기 1210: 합산기

Claims (10)

  1. 데이터를 저장하는 플래시 메모리;
    상기 플래시 메모리로부터 데이터를 읽고 상기 플래시 메모리에 데이터를 쓰는 것을 관리하는 SSD 컨트롤러; 및
    검색 시퀀스와 참조 시퀀스의 비교를 수행하도록 동작하는 FPGA(Field Programmable Gate Array)를 포함하고,
    상기 참조 시퀀스는 상기 플래시 메모리에 저장되고,
    상기 FPGA는,
    상기 검색 시퀀스와 상기 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고;
    상기 검색 시퀀스를, 상기 검색 시퀀스에서 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 상기 검색 시퀀스에서 상기 원자의 연속 일치를 포함하는 중심 부분, 및 상기 검색 시퀀스에서 상기 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고;
    상기 검색 시퀀스의 상기 좌측 부분을 상기 참조 시퀀스와 일치시키고; 및
    상기 검색 시퀀스의 상기 우측 부분을 상기 참조 시퀀스와 일치시키는 것을 포함하는, SSD(Solid State Drive).
  2. 제1항에 있어서,
    상기 FPGA는, 추가로 상기 검색 시퀀스의 상기 좌측 부분을 상기 참조 시퀀스와 일치시키는 것과 병렬로 상기 검색 시퀀스의 상기 우측 부분을 상기 참조 시퀀스와 일치시키는, SSD.
  3. 제1항에 있어서,
    상기 FPGA는 추가로:
    상기 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 상기 참조 시퀀스에서 복수의 시작 위치와 비교하고; 및
    상기 검색 시퀀스에서 원자의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는, SSD.
  4. 제3항에 있어서,
    상기 FPGA는 추가로 상기 검색 시퀀스에서 복수의 원자의 서브 시퀀스를 상기 참조 시퀀스에서 복수의 시작 위치와 병렬로 비교하는, SSD.
  5. 제3항에 있어서,
    상기 FPGA는 추가로:
    상기 검색 시퀀스에서 복수의 원자의 서브 시퀀스 및 상기 참조 시퀀스에서 복수의 시작 위치의 비교마다, 상기 검색 시퀀스에서 원자의 서브 시퀀스의 길이 및 상기 참조 시퀀스에서의 위치에 기초하는, 가중치를 할당하고;
    상기 검색 시퀀스에서의 복수의 원자의 서브 시퀀스 및 상기 참조 시퀀스에서 복수의 시작 위치의 비교마다, 상기 가중치 및 상기 참조 시퀀스에서 연속적인 원자들과 일치하는 상기 서브 시퀀스의 연속된 원자들의 개수에 기초하는, 가중된 일치를 결정하고; 및
    상기 검색 시퀀스에서 가장 높은 상기 가중된 일치를 포함하는 상기 제1 서브 시퀀스를 선택하는 것을 포함하는, SSD.
  6. 제5항에 있어서,
    복수의 상기 비교에 할당된 상기 가중치는 중심 일치 가중치, 좌측 일치 가중치 및 우측 일치 가중치를 포함하는 세트로부터 도출되는, SSD.
  7. 제3항에 있어서,
    상기 FPGA는 추가로:
    상기 검색 시퀀스의 제1 원자와 상기 참조 시퀀스의 제2 원자의 비교에, 상기 검색 시퀀스의 제1 원자와 상기 참조 시퀀스의 제2 원자 사이의 유사성을 반영하는, 가중치를 할당하고; 및
    상기 연속 일치의 길이 및 상기 검색 시퀀스의 제1 원자와 상기 참조 시퀀스의 제2 원자의 비교에 할당된 상기 가중치에 기초하여, 상기 검색 시퀀스에서 원자의 상기 제1 서브 시퀀스를 선택하는, SSD.
  8. 제1 원자 시퀀스를 포함하는 참조 시퀀스 및 제2 원자 시퀀스를 포함하는 검색 시퀀스를 수신하고;
    상기 검색 시퀀스와 상기 참조 시퀀스 사이의 원자의 연속적인 일치를 식별하고;
    상기 검색 시퀀스를, 상기 검색 시퀀스에서 상기 원자의 연속 일치의 이전에 존재하는 제1 원자들을 포함하는 좌측 부분, 상기 검색 시퀀스에서 상기 원자의 연속 일치를 포함하는 중심 부분, 및 상기 검색 시퀀스에서 상기 원자의 연속 일치 이후에 존재하는 제2 원자들을 포함하는 우측 부분으로 분할하고;
    상기 검색 시퀀스의 상기 좌측 부분을 상기 참조 시퀀스와 일치시키고; 및
    상기 검색 시퀀스의 상기 우측 부분을 상기 참조 시퀀스와 일치시키는 것을 포함하는, 병렬화 가능한 시퀀스 정렬 방법.
  9. 제8항에 있어서,
    상기 검색 시퀀스와 상기 참조 시퀀스 사이의 상기 원자의 연속적인 일치를 식별하는 것은:
    상기 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 상기 참조 시퀀스에서 복수의 시작 위치와 비교하고; 및
    상기 검색 시퀀스에서 상기 원자의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 병렬화 가능한 시퀀스 정렬 방법.
  10. 제9항에 있어서,
    상기 검색 시퀀스에서 원자의 복수의 서브 시퀀스를 상기 참조 시퀀스에서 복수의 시작 위치와 비교하는 것은, 각각의 비교에 대해:
    상기 검색 시퀀스에서 원자의 서브 시퀀스의 길이 및 상기 참조 시퀀스에서의 위치에 기초하여 가중치를 할당하고;
    상기 가중치 및 상기 참조 시퀀스에서 연속적인 원자들과 일치하는 서브 시퀀스의 연속된 원자들의 개수에 기초하여 가중된 일치를 결정하고; 및
    상기 검색 시퀀스에서 가장 높은 상기 가중된 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 상기 검색 시퀀스에서 원자들의 연속 일치를 포함하는 제1 서브 시퀀스를 선택하는 것을 포함하는, 병렬화 가능한 시퀀스 정렬 방법.
KR1020200036699A 2019-05-14 2020-03-26 병렬화 가능한 시퀀스 정렬 시스템 및 방법 KR20200131733A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962847930P 2019-05-14 2019-05-14
US62/847,930 2019-05-14
US16/551,712 2019-08-26
US16/551,712 US20200364229A1 (en) 2019-05-14 2019-08-26 Parallelizable sequence alignment systems and methods

Publications (1)

Publication Number Publication Date
KR20200131733A true KR20200131733A (ko) 2020-11-24

Family

ID=73228491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200036699A KR20200131733A (ko) 2019-05-14 2020-03-26 병렬화 가능한 시퀀스 정렬 시스템 및 방법

Country Status (3)

Country Link
US (1) US20200364229A1 (ko)
KR (1) KR20200131733A (ko)
CN (1) CN111951894A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230229632A1 (en) * 2022-01-18 2023-07-20 Dell Products L.P. File compression using sequence splits and sequence alignment
US11977517B2 (en) 2022-04-12 2024-05-07 Dell Products L.P. Warm start file compression using sequence alignment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9734284B2 (en) * 2013-03-15 2017-08-15 Micron Technology, Inc. Hardware acceleration of short read mapping for genomic and other types of analyses

Also Published As

Publication number Publication date
US20200364229A1 (en) 2020-11-19
CN111951894A (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
US20240096450A1 (en) Systems and methods for adaptive local alignment for graph genomes
US10192026B2 (en) Systems and methods for genomic pattern analysis
US10262102B2 (en) Systems and methods for genotyping with graph reference
Kopylova et al. SortMeRNA: fast and accurate filtering of ribosomal RNAs in metatranscriptomic data
US10268716B2 (en) Enhanced hadoop framework for big-data applications
WO2015123269A1 (en) System and methods for analyzing sequence data
US20180247016A1 (en) Systems and methods for providing assisted local alignment
KR20200131733A (ko) 병렬화 가능한 시퀀스 정렬 시스템 및 방법
Wei et al. CALLR: a semi-supervised cell-type annotation method for single-cell RNA sequencing data
Kim et al. A review on sequence alignment algorithms for short reads based on next-generation sequencing
Vaddadi et al. Read mapping on genome variation graphs
Carletti et al. Graph-based representations for supporting genome data analysis and visualization: Opportunities and challenges
KR100538451B1 (ko) 분산 컴퓨팅 환경에서의 유전자 및 단백질 유사서열 검색시스템 및 그 방법
US10867134B2 (en) Method for generating text string dictionary, method for searching text string dictionary, and system for processing text string dictionary
KR20220099745A (ko) 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치
He et al. Mining approximate repeating patterns from sequence data with gap constraints
Shokrof et al. MQF and buffered MQF: Quotient filters for efficient storage of k-mers with their counts and metadata
Ashraf et al. RPPMD (Randomly projected possible motif discovery): An efficient bucketing method for finding DNA planted Motif
Gustafsson et al. Fast parallel construction of variable-length Markov chains
Khan et al. MSuPDA: A memory efficient algorithm for sequence alignment
Ali et al. Pareto Optimization Technique for Protein Motif Detection in Genomic Data Set
Liu et al. Sequence similarity alignment algorithm in bioinformatics: techniques and challenges
CN116665772B (zh) 一种基于内存计算的基因组图分析方法、装置和介质
RU2796915C1 (ru) Гибкое удлинение затравки для геномного картирования на основе хеш-таблицы
WO2022082878A1 (zh) 基于共享内存的基因分析方法、装置和计算机设备