KR20230069046A - 소프트웨어 가속 게놈 판독 매핑 - Google Patents

소프트웨어 가속 게놈 판독 매핑 Download PDF

Info

Publication number
KR20230069046A
KR20230069046A KR1020227044607A KR20227044607A KR20230069046A KR 20230069046 A KR20230069046 A KR 20230069046A KR 1020227044607 A KR1020227044607 A KR 1020227044607A KR 20227044607 A KR20227044607 A KR 20227044607A KR 20230069046 A KR20230069046 A KR 20230069046A
Authority
KR
South Korea
Prior art keywords
mer
genomic data
hash
data
genomic
Prior art date
Application number
KR1020227044607A
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 KR20230069046A publication Critical patent/KR20230069046A/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
    • G16B20/00ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
    • 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
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • 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/40Encryption of genetic data

Landscapes

  • Life Sciences & Earth Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • Medical Informatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Analytical Chemistry (AREA)
  • Chemical & Material Sciences (AREA)
  • Genetics & Genomics (AREA)
  • Molecular Biology (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Apparatus Associated With Microorganisms And Enzymes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법, 시스템, 장치, 및 컴퓨터 프로그램이 개시된다. 일 양태에서, 방법은, 게놈 데이터 판독으로부터 k-mer 시드를 획득하는 작동; 획득된 k-mer 시드에 기초하여 게놈 서명(genomic signature)을 생성하는 작동; 해시(hash) 데이터 구조를 사용하여 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치를 결정하는 작동 - 해시 데이터 구조는, 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 미리 결정된 게놈 서명이 유도된 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 제1 발생에 대응하는 값을 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함함 -; 및 하나 이상의 정렬 스코어에 기초하여 획득된 k-mer 시드에 대한 실제 정렬로서 결정된 참조 서열 위치를 선택하는 단계의 행위들을 포함할 수 있다.

Description

소프트웨어 가속 게놈 판독 매핑
관련 출원의 교차 참조
본 출원은 2020년 9월 15일자로 출원된 미국 출원 일련 번호 제63/078,890호의 우선권을 주장하며, 이는 전체로 참조에 의해 포함된다.
일부 경우에서, 게놈 판독 매핑(genomic read mapping)은 유전자의 위치와 유전자 사이의 거리를 식별하는 방법을 설명한다. 하나 이상의 세트의 게놈 데이터를 분석하고, 일련의 뉴클레오티드와 같은 분자 마커의 컬렉션을 주어진 참조 게놈 상의 각각의 위치와 상관시키는 데 컴퓨터가 사용될 수 있다. 이런 방식으로, 분자 마커의 컬렉션을 참조 게놈 상에 "매핑"하는 데 컴퓨터가 사용될 수 있다.
본 개시내용은 소프트웨어 가속 게놈 판독 매핑을 위한 방법, 시스템 및 컴퓨터 프로그램에 관한 것이다. 일 양태에서, 본 개시내용은 소프트웨어 가속 게놈 판독 매핑을 용이하게 하는 해시 테이블의 생성에 관한 것이다. 해시 테이블은 게놈 데이터 서명(genomic data signature)을 사용하여 인덱싱된 참조 게놈을 나타내는 데이터를 포함할 수 있다. 일부 구현예에서, 생성된 해시 테이블은 수신된 게놈 판독과 참조 게놈 간의 매핑을 결정하는 데 사용될 수 있다.
본 개시내용의 하나의 혁신적인 양태에 따르면, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법이 개시된다. 일 양태에서, 방법은, 하나 이상의 컴퓨터에 의해, 게놈 데이터 판독으로부터 k-mer 시드를 획득하는 단계; 하나 이상의 컴퓨터에 의해, 획득된 k-mer 시드에 기초하여 게놈 서명(genomic signature)을 생성하는 단계; 하나 이상의 컴퓨터에 의해, 해시(hash) 데이터 구조를 사용하여 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치를 결정하는 단계 - 해시 데이터 구조는, 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 미리 결정된 게놈 서명이 유도된 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 제1 발생에 대응하는 값을 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함함 -; 및 하나 이상의 컴퓨터에 의해, 하나 이상의 정렬 스코어(alignment score)에 기초하여 획득된 k-mer 시드에 대한 실제 정렬로서 결정된 참조 서열 위치를 선택하는 단계의 행위들을 포함할 수 있다.
다른 버전은, 상기 언급된 방법의 행위들을 수행하도록 구성된 대응하는 시스템, 장치, 및 컴퓨터 프로그램을 포함한다.
이들 및 다른 버전들은 선택적으로 하기의 특징부들 중 하나 이상을 포함할 수 있다. 예를 들어, 일부 구현예에서, 미리 결정된 게놈 서명은 메모리 저장장치(memory storage)의 단지 1바이트를 차지할 수 있다.
일부 구현예에서, 값은 메모리 저장장치의 단지 4바이트를 차지할 수 있다.
일부 구현예에서, 해시 데이터 구조는 단일 어레이의 N개의 데이터 셀이다.
일부 구현예에서, 방법은, 하나 이상의 컴퓨터에 의해, 게놈 데이터 판독의 하나 이상의 k-mer 시드에 대응하는 제1 세트의 값에 기초하여 게놈 데이터 판독을 필터링하는 단계를 더 포함할 수 있다.
일부 구현예에서, 제1 세트의 값은 게놈 데이터 판독의 하나 이상의 k-mer 시드에 적용되는 미리 결정된 작동의 결과를 포함할 수 있고, 제1 세트의 값은 게놈 데이터 판독으로부터 k-mer 시드를 획득하기 위해 사용된다.
일부 구현예에서, 미리 결정된 작동은 게놈 데이터 판독의 하나 이상의 k-mer 시드 및 해시 함수에 기초하여 해시 값을 생성하는 것을 포함할 수 있다.
일부 구현예에서, 참조 서열을 결정하는 단계는, 하나 이상의 컴퓨터에 의해, 게놈 데이터 판독의 k-mer 시드에 대한 제1 위치를 계산하는 것 - 제1 위치는 게놈 데이터 판독 내 k-mer 시드의 위치에 대응함 -; 및 하나 이상의 컴퓨터에 의해, k-mer 시드에 대한 제2 위치를 계산하는 것을 포함할 수 있고, 제2 위치는 참조 게놈 데이터 내 k-mer 시드의 위치에 대응하고, 제2 위치는 해시 데이터 구조에 기반하여 계산된다.
일부 구현예에서, 방법은, 하나 이상의 컴퓨터에 의해, 해시 데이터 구조 및 게놈 데이터 판독에 기초하여 하나 이상의 참조 서열 위치를 분류하는 단계를 더 포함할 수 있다.
일부 구현예에서, 방법은 하나 이상의 컴퓨터에 의해, 하나 이상의 참조 서열 위치를 분류하는 단계에 기초하여 하나 이상의 정렬 스코어를 생성하는 단계를 더 포함할 수 있다.
일부 구현예에서, 획득된 k-mer 시드에 대한 실제 정렬로서 결정된 참조 서열 위치들 중 적어도 하나를 선택하는 단계는 하나 이상의 정렬 스코어를 임계값과 비교하는 단계를 포함한다.
일부 구현예에서, 하나 이상의 정렬 스코어는, 게놈 데이터 판독으로부터의 획득된 k-mer 시드와 참조 서열 위치 사이의 불일치의 수를 나타내는 수치를 포함한다.
일부 구현예에서, 미리 결정된 게놈 서명이 최초 발생 이후에 유도된 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 각각의 후속 발생은 폐기된다.
본 개시내용의 또 다른 혁신적인 양태에 따르면, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하기 위한 방법이 개시된다. 일 양태에서, 방법은, 하나 이상의 컴퓨터에 의해, 게놈 데이터를 수신하는 단계 - 게놈 데이터는 부모 게놈 데이터로부터 유도됨 -; 하나 이상의 컴퓨터에 의해, 게놈 데이터에 기초한 제1 세트의 값을 생성하는 단계; 하나 이상의 컴퓨터에 의해, 제1 세트의 값에 기초하여 게놈 데이터의 서브세트를 생성하는 단계; 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트 의 각각의 k-mer에 대한 서명을 계산하는 단계 - 서명은 제1 해시 함수에 기초하여 계산됨 -; 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트 의 각각의 k-mer에 대한 제1 속성을 계산하는 단계 - 제1 속성은 게놈 데이터의 서열 내의 게놈 데이터의 주어진 k-mer의 위치를 포함함 -; 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트 의 각각의 k-mer에 대한 인덱스를 계산하는 단계 - 인덱스는 제2 해시 함수에 기초하여 계산됨 -; 및 하나 이상의 컴퓨터에 의해, 서명, 및 게놈 데이터의 서브세트의 각각의 k-mer에 대한 인덱스에 기초하여 해시 데이터 구조 내 게놈 데이터의 서브세트의 각각의 k-mer에 대한 제1 속성을 분류하는 단계의 행위들을 포함할 수 있다.
다른 버전은, 상기 언급된 방법의 행위들을 수행하도록 구성된 대응하는 시스템, 장치, 및 컴퓨터 프로그램을 포함한다.
이들 및 다른 버전들은 선택적으로 하기의 특징부들 중 하나 이상을 포함할 수 있다. 예를 들어, 일부 구현예에서, 게놈 데이터의 서브세트의 각각의 k-mer는 하나 이상의 뉴클레오티드의 문자열을 나타내는 k개의 문자들을 포함하는 k-mer이다.
일부 구현예에서, 제1 세트의 값은, 게놈 데이터의 주어진 k-mer가 부모 게놈 데이터 내에서 발생하는 횟수의 표현을 포함할 수 있다.
일부 구현예에서, 제1 세트의 값은 게놈 데이터의 대응하는 k-mer에 기초하여 계산된 해시 값의 표현을 포함한다.
일부 구현예에서, 서브세트의 주어진 k-mer에 대한 서명을 저장하는 데 사용되는 메모리 할당 크기는 주어진 k-mer를 저장하는 데 사용되는 메모리 할당 크기보다 더 작다.
일부 구현예에서, 방법은 하나 이상의 컴퓨터에 의해, 데이터 패키지로서 해시 데이터 구조에 대응하는 데이터를 제1 디바이스에 전송하는 단계를 더 포함할 수 있다.
일부 구현예에서, 제1 디바이스는 메모리 저장 디바이스이다.
일부 구현예에서, 제2 디바이스가 제1 디바이스로부터 해시 데이터 구조에 대응하는 데이터를 판독한다. 이러한 구현예에서, 제2 디바이스는 해시 데이터 구조에 대응하는 데이터에 기초하여 제2 해시 데이터 구조를 생성하기 위한 일련의 작동들을 수행할 수 있다.
본원에서 사용되는 시드는 일반적으로, 게놈 데이터 판독으로부터 식별, 획득 또는 추출된 일련의 베이스 콜(base call) 또는 뉴클레오티드를 지칭한다.
본원에서 k-mer 시드로도 지칭되는 k-mer는, 베이스 콜 또는 뉴클레오티드와 같은 요소들의 서열이며, 여기서 요소들의 수, 예를 들어, 주어진 k-mer에 대한 시퀀스에서 베이스 콜 또는 뉴클레오티드의 수는 "k"로 정해진다.
게놈 데이터 판독은 일반적으로, 핵산 시퀀서에 의해 시퀀싱된 샘플 게놈의 일부분의 베이스 콜 또는 뉴클레오티드에 대응하는 핵산 시퀀서에 의해 생성된 데이터를 포함한다.
본원에서 서명이라고도 하는 게놈 서명은 버킷, 슬롯, 또는 셀과 같은 해시 테이블 위치를 식별하는 데이터이거나 또는 이를 포함한다. 이러한 데이터는 또한, 해시 키, 예를 들어, 게놈 해시 키라고 지칭될 수 있다. 서명은, 게놈 데이터를 식별하는 위치로부터 생성되거나 이를 가리키는 경우, 게놈 서명이다.
참조 서열 위치는 참조 서열, 예를 들어, 참조 핵산 서열의 특정 사이트 또는 부분을 의미한다.
해시 데이터 구조는 연관 방식으로 데이터를 저장하고, 해시 함수를 사용하여 해시 키를 메모리 위치, 버킷, 또는 셀에 매핑하는 데이터 구조를 포함할 수 있다.
정렬 스코어는, 특정 참조 서열에 매핑된 게놈 데이터 판독 또는 k-mer 시드가 실제로 해당 특정 참조 서열 위치에 대응한다는 신뢰 수준을 나타내는 데이터이거나 이를 포함한다.
게놈 데이터는 대상체, 예를 들어, 인간 대상체의 게놈에 관련된 임의의 데이터를 포함할 수 있다.
부모 게놈 데이터는 게놈 데이터의 세브세트가 추출되는 게놈 데이터의 수퍼세트(superset)를 포함할 수 있다. 예를 들어, 게놈 데이터 판독은, k-mer 시드가 추출될 수 있는 부모 게놈의 일례가 될 수 있다.
특정 게놈 데이터에 "기초한" 값은 해당 게놈 데이터로부터 유도된 값이다.
제1 해시 함수는 다수의 해시 함수가 사용될 때 해시 함수의 초기 발생을 포함할 수 있다. 제1 해시 함수라는 용어의 사용은, 제1 해시 함수가 사용되는 후속 해시 함수와 다르다는 것을 의미하지 않지만, 다를 수 있다.
인덱스는 다른 데이터의 저장 위치를 식별하는 데 사용될 수 있는 모든 데이터이다.
제2 해시 함수는 다수의 해시 함수가 사용될 때 해시 함수의 후속 발생을 포함할 수 있다. 제2 해시 함수라는 용어의 사용은, 제2 해시 함수가 이전에 사용된 임의의 이전 해시 함수와 다르다는 것을 의미하지 않지만, 다를 수 있다.
본원에 설명된 생성된 해시 테이블 및 이의 사용은 다수의 기술적 이점을 제공할 수 있다. 기술적 이점은, 기존 방법보다 더 빠르고, 더 적은 메모리 및 스토리지 요구 사항을 필요로 하는 소프트웨어 가속 게놈 판독 매핑 알고리즘을 포함할 수 있다. 이러한 이점은 적어도 부분적으로는, 해시 키로서 사용하고 단일 어레이 해시 테이블을 사용하기 위해 게놈 판독을 1바이트 게놈 데이터 서명으로 인코딩하는 것에 기반하여 달성될 수 있다. 본 개시내용의 다른 장점은 또한, 고려 중인 기준 위치의 수를 감소시키는 데 도움이 되는 다수의 필터링 스테이지를 통해 달성된다.
달리 정의되지 않으면, 본원에 사용되는 모든 기술 및 과학 용어들은 본 발명이 속하는 기술분야의 당업자에 의해 통상적으로 이해하는 것과 동일한 의미를 갖는다. 본원에서 설명되는 것들과 유사한 또는 동등한 방법들 및 재료들이 본 발명의 실시 또는 테스트에 사용될 수 있지만, 적절한 방법들 및 재료들이 이하에서 설명되어 있다. 본원에 언급된 모든 간행물, 특허 출원들, 특허들 및 다른 참고 문헌들이 전체적으로 참고로 포함된다. 상충되는 경우, 정의를 포함하여 본 명세서 설명이 우선할 것이다. 더욱이, 재료들, 방법들 및 예들은 단지 예시적인 것이며 제한하고자 하는 것이 아니다.
본 발명의 하나 이상의 실시형태의 상세사항이 첨부 도면 및 이하의 설명에 기재된다. 본 발명의 다른 특징들 및 장점들이 설명, 도면, 및 청구범위로부터 명백해질 것이다.
도 1은 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 시스템의 일 실시예를 도시하는 다이어그램이다.
도 2는 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 프로세스의 일 실시예를 예시하는 흐름도이다.
도 3은 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 사용하기 위한 시스템의 일 실시예를 도시하는 다이어그램이다.
도 4는 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 프로세스의 일 실시예를 예시하는 흐름도이다.
도 5는 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 시스템을 구현하는 데 사용할 수 있는 컴퓨터 시스템 구성 요소의 다이어그램이다.
다양한 도면에서 같은 참조 번호 및 명칭은 같은 요소를 나타낸다.
본 개시내용은 소프트웨어 가속 게놈 판독 매핑을 위한 방법, 시스템 및 컴퓨터 프로그램에 관한 것이다. 일 양태에서, 본 개시내용은 소프트웨어 가속 게놈 판독 매핑을 용이하게 하는 해시 테이블의 생성에 관한 것이다. 해시 테이블은 게놈 데이터 서명을 사용하여 인덱싱된 참조 게놈을 나타내는 데이터를 포함할 수 있다. 다음으로, 생성된 해시 테이블은 수신된 게놈 판독과 참조 게놈 간의 매핑을 결정하는 데 사용될 수 있다. 생성된 해시 테이블, 및 이의 사용은, 이전 방법보다 더 빠르고 더 적은 메모리와 스토리지 요건을 필요로 하는 소프트웨어 가속 게놈 판독 매핑 알고리즘을 포함하여, 많은 기술적 이점을 제공한다. 이러한 이점은 적어도 부분적으로는, 해시 키로서 사용하고 단일 어레이 해시 테이블을 사용하기 위해 게놈 판독을 1바이트 게놈 데이터 서명으로 인코딩하는 것에 기반하여 달성될 수 있다. 본 개시내용의 다른 장점은 고려 중인 기준 위치의 수를 감소시키는 데 도움이 되는 다수의 필터링 스테이지를 통해 달성된다.
일부 구현예에서, 본 개시내용의 양태는 참조 기반 게놈 데이터 압축 알고리즘의 성능을 개선하기 위해 사용될 수 있다. 예를 들어, 본 개시내용은 참조 기반 패스트큐(fastq) 압축 내에서 사용될 수 있다. 그러나, 본 개시내용은 이에 한정되지 않는다. 대신, 소프트웨어 가속 게놈 판독 매퍼는 다수의 다른 작동에, 예를 들어, 변이 호출자에 대한 입력을 위한 매핑되고 정렬된 게놈 판독의 생성 동안, 또는 하나 이상의 3차 분석 스테이지 안으로 입력을 위한 매핑되고 정렬된 게놈 판독 생성 동안 사용할 수 있다.
일부 구현예에서, 예컨대 참조 기반 압축 알고리즘에 사용되는 동안, 소프트웨어 가속 게놈 판독 매퍼는 정확도 수준을 떨어뜨리기는 하지만 매핑 속도의 증대에 유리하도록 구성될 수 있다. 그러나, 다른 구현예에서, 소프트웨어 가속 게놈 판독 매퍼는 매핑 속도를 희생하여 보다 정확한 매핑을 제공하도록 구성될 수 있다. 일반적으로, 변수 및 기타 매개변수는, 보다 정확한 결과를 제공하거나, 또는 보다 신속하게 결과를 제공하기 위해, 본원에 설명된 바와 같이 주어진 구현예를 기반으로 변경 또는 최적화될 수 있다.
일부 구현예에서, 하나 이상의 필터링 스테이지는 해시 테이블을 생성하는 데 사용될 참조 게놈 데이터의 서브세트를 생성하기 위해 하나 이상의 상이한 유형의 각각의 필터를 적용하는 데 사용될 수 있다. 참조 게놈 데이터의 필터링된 서브세트는 메모리 사용을 줄이고 계산 속도를 높이도록 생성될 수 있다. 다음으로, 참조 게놈 데이터의 필터링된 서브세트는 해시 테이블에 저장될 수 있다.
소프트웨어 가속 게놈 판독 매핑은, 게놈 판독을 수신하고, 다음으로 생성된 해시 테이블을 쿼리하여 게놈 판독의 주어진 k-mer에 대응하는 참조 게놈 데이터의 위치를 찾는 컴퓨터를 사용하여 달성될 수 있다. 해시 테이블은 (i) 게놈 서명을 해시 키로 저장하고 게놈 서명과 매칭되는 참조 시퀀스 위치의 대응하는 셀 또는 버킷을 저장하는 데 사용되는 메모리를 감소시키도록 구성되며 (ii) 단일 어레이를 사용하여 구조화되도록 구성되기 때문에 소프트웨어 가속 게놈 판독 매핑을 용이하게 한다. 본원에 설명된 시스템, 방법 및 특징부는, 적어도 부분적으로는, 생성된 해시 테이블에 기초하여 하나 이상의 후보 정렬을 결정하는 데, 그리고 후보 정렬을 처리하여 주어진 기준을 만족하는 정렬을 빠르게 찾는 데 사용될 수 있다.
도 1은 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 시스템(100)의 일 실시예를 도시하는 다이어그램이다. 시스템(100)은 컴퓨터(106), 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120)을 포함한다. 컴퓨터(106)는, 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120)에 데이터를 제공하도록, 그리고 이들로부터 데이터를 수신하도록 구성된다. 일부 구현예에서, 컴퓨터(106)는 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120) 중 하나 이상을 호스팅하여, 하나 이상의 모듈의 처리 연산이 컴퓨터(106)에서 로컬로 처리될 수 있다. 다른 구현예에서, 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120) 중 하나 이상은 컴퓨터(106)에 연결된 하나 이상의 다른 컴퓨터에 의해 호스팅될 수 있다.
해시 연산 모듈(108)은 게놈 데이터에 대응하는 하나 이상의 해시 값을 생성할 수 있다. 일부 경우에서, 게놈 데이터는 k-mers 형태의 뉴클레오티드 서열을 포함할 수 있다. 발생 카운터 모듈(114)은, 게놈 데이터가 기초하는 부모 게놈 데이터 내에서 주어진 형태의 게놈 데이터의 발생 횟수를 카운트할 수 있다. 이것은, 예를 들어, 주어진 k-mer가 뉴클레오티드의 판독 서열을 따라 다수의 위치에서 나타날 수 있기 때문이다. k-mer로 표현되는 순차적 뉴클레오티드의 문자열이 뉴클레오티드의 판독 서열 내에서 발생되는 횟수는 발생 카운터 모듈(114)에 의해서 획득될 수 있다. 해시 테이블 생성 모듈(120)은, 해시 연산 모듈(108) 및 발생 카운터 모듈(114)에 의해 처리된 게놈 데이터에 대응하는 해시 테이블을 생성할 수 있다. 이하에서는 도 1의 실시예를 스테이지 A로부터 스테이지 E까지의 스테이지들에서 설명한다.
본 명세서 내에서, 주어진 k-mer는 순차적인 뉴클레오티드의 시퀀스로서 정의되며, 주어진 k-mer에 대한 서열에서 뉴클레오티드 수는 "k"로 정해지고, 뉴클레오티드(또는, 더 일반적으로, 염기)는 정의된 어휘로부터의 문자들의 문자열로 표현된다. 예를 들어, 주어진 k-mer는 서열 "ATGCG"를 나타낼 수 있으며, 여기서 기호 {A, C, G, T}는 데옥시리보핵산(DNA)에 존재하는 4가지 유형의 뉴클레오티드, 즉 아데닌, 시토신, 구아닌, 및 티민을 나타낸다. 리보핵산(RNA)에서, 티민은 우라실(U)에 의해서 대체된다.
본 개시내용에서 언급되는 게놈 데이터는, 예를 들어, 뉴클레오티드 서열, 데옥시리보핵산(DNA) 서열 또는 리보핵산(RNA)을 포함할 수 있으며, 이에 한정되지 않는다.
도 1의 실시예의 스테이지 A에서, 게놈 데이터(102)에 기초한 k-mer 세트(104)는 컴퓨터(106)에 전송된다. 본 실시예에서, 게놈 데이터(102)는, 한 명 이상의 과학자에 의해 유기체에 대해 조립된 DNA 서열과 같은 참조 게놈(여기서는 참조 서열이라고도 함)을 포함할 수 있고, k-mer 세트(104) 내의 각각의 k-mer는 k의 뉴클레오티드 길이를 갖는 게놈 데이터(102)에 존재하는 특정 서열 서브세트에 대응하며, k는 0보다 더 큰 크기의 정수이다. 예를 들어, k-mer 세트(104)의 k-mer AAGT...AT는 길이 k 뉴클레오티드 "AAGT...AT"의 뉴클레오티드 서열을 갖는 게놈 데이터 판독 또는 이의 일부분에 대응한다. 게놈 데이터(102)는 적어도 하나의 인스턴스의 k-mer AAGT...AT를 포함하며, 이는 "AAGT...AT"에 대응하는 뉴클레오티드의 문자열로 정의되는 k-mer AAGT...AT의 서열이 게놈 데이터(102)에 대응하는 뉴클레오티드 서열 내에서 적어도 한 번 발생한다는 것을 의미한다. 일부 구현예에서, 참조 서열은, 적어도 부분적으로, 추가 처리의 관점에서 판독의 압축성을 개선하기 위해 고안된 합성 서열로 구성된다.
일부 구현예에서, k-mer 세트(104) 내의 k-mer는 16개 뉴클레오티드의 k-mer 길이를 가질 수 있다. 그러나, 본 개시내용은 16개 뉴클레오티드의 k-mer 길이를 갖는 k-mer를 사용하는 구현예에 한정되지 않는다. 일반적으로, k-mer 세트의 주어진 k-mer에 대해 임의의 수의 뉴클레오티드가 사용될 수 있다. 일부 구현예에서, 더 짧은 시드(seed)는 참조 게놈 상에서 더 많은 발생 횟수를 가질 것이고, 더 많은 계산 시간으로 이어질 수 있다. 짧은 시드는 또한 높은 감도로 이어질 수 있다. k-mer 세트(104)의 k-mer 내의 뉴클레오티드 수에 대응하는 시드 길이는 성능 최적화와 같은 최적화 목적을 위해 조정될 수 있다.
컴퓨터(106)는 k-mer 세트(104)를 수신한다. 구현예에 따라, 컴퓨터(106)는 k-mer 세트(104)를 수신하기 위해 하나 이상의 다른 컴퓨터와 통신할 수 있다. 예를 들어, 전처리 컴퓨터 또는 기타 디바이스가 게놈 데이터(102)를 처리하고 k-mer 세트(104)를 생성할 수 있다. 그러면, 전처리 컴퓨터 또는 기타 디바이스가 적절한 통신 네트워크를 통해 컴퓨터(106)와 통신할 수 있다. 전처리 컴퓨터 또는 기타 디바이스는 k-mer 세트(104)를 컴퓨터(106)로 전송할 수 있다. 일부 구현예에서, 컴퓨터(106)는 전처리 컴퓨터 또는 기타 디바이스의 작동을 수행한다. 예를 들어, 컴퓨터(106)는 게놈 데이터(102)를 수신하고, 게놈 데이터(102)에 기초하여 k-mer 세트(104)를 생성할 수 있다.
일부 구현예에서, 컴퓨터(106)에 의해 수신된 데이터는 비-게놈 데이터의 형태이다. 예를 들어, 정보는 컴퓨터(106)에 의해 수신될 수 있다. 다음으로, 정보는 하나 이상의 스테이지에서 처리될 수 있다. 일부 경우에서, 정보는, 해시 연산 모듈(108), 발생 카운터 모듈(114), 또는 해시 테이블 생성 모듈(120)과 같은 하나 이상의 모듈에 의해 처리될 수 있다.
일부 구현예에서, 컴퓨터(106)에 의해 수신된 정보와 관련된 데이터는 하나 이상의 처리 작업을 변경하는 데 사용된다. 예를 들어, 수신된 정보는, 해시 연산 모듈(108), 발생 카운터 모듈(114), 또는 해시 테이블 생성 모듈(120)과 같은 컴퓨터(106)의 임의의 연산 모듈의 연산을 변경하는 데 사용될 수 있다. 예를 들어, 컴퓨터(106)는 정보를 수신할 수 있다. 컴퓨터(106)는 수신된 정보로부터 하나 이상의 항목을 추출할 수 있다. 컴퓨터(106)는, 추출된 하나 이상의 항목에 기초하여, 수신된 정보에 적용될 특정 처리 방법을 결정할 수 있다. 일부 경우에서, 특정 처리 방법은 하나 이상의 처리 모듈을 포함할 수 있으며, 여기서 하나 이상의 처리 모듈은, 추출된 하나 이상의 항목을 기반으로 특정 방식으로 데이터를 처리하기 위해 파라미터 변경 또는 작동 변경에 의해 조정된다.
예를 들어, 게놈 데이터와 관련된 해시 테이블을 생성함에 있어서, 컴퓨터(106)는 게놈 데이터를 수신할 수 있다. 컴퓨터(106)는 수신된 정보로부터 하나 이상의 항목(예: 특정 길이 ki의 하나 이상의 k-mer)을 추출할 수 있다. 다음으로, 컴퓨터(106)는 추출된 데이터에 기초하여 하나 이상의 모듈의 작동 방법을 변경할 수 있다. 예를 들어, 컴퓨터(106)는 k-mer에서 베이스 콜 또는 뉴클레오티드의 수를 나타내는 정수 k를 나타내는 임계값을 변경함으로써 발생 카운터 모듈(114)을 변경할 수 있다. 컴퓨터(106)에 의해 설정된 임계값을 충족하지 않는 항목은 필터링되어 걸러질 수 있다.
일부 구현예에서, k-mer 세트(104)는, 참조 서열을 포함할 수 있는 게놈 데이터(102)로부터 유도된, 각각 길이 k의 복수의 k-mer 핵산 서열을 포함할 수 있다. 일부 구현예에서, 컴퓨터(106)는, 직접 연결(예를 들어, USB 연결, USB-C 연결 등) 또는 하나 이상의 네트워크 연결(예를 들어, LAN, WAN, 이더넷, WiFi, 셀룰러 네트워크, 인터넷 등)을 통해 k-mer 세트(104)를 수신할 수 있다. 일부 구현예에서, 컴퓨터(106)는 핵산 시퀀싱 장치일 수 있고, 핵산 시퀀싱 장치는 게놈 데이터(102)를 수신, 획득 또는 다른 방식으로 액세스하여 k-mer 세트(104)를 생성할 수 있다.
따라서, 일부 구현예에서, 본 개시내용의 소프트웨어 가속 게놈 매핑 및 정렬은 차세대 DNA 시퀀싱 장치와 같은 시퀀싱 장치에서 구현되어, 시퀀싱 장치에서 게놈 데이터 판독을 매핑 및 정렬하는 것과 같은 2차 분석 작업을 수행할 수 있다. 다른 구현예에서, 본 개시내용의 소프트웨어 가속 게놈 데이터 매핑 및 정렬은, 게놈 데이터를 얻고, k-mer 세트(104)를 생성하고, k-mer 세트(104) 또는 이의 일부를 사용하여 본원에서 아래에 설명된 다른 작업 중 하나 이상을 수행하는 시퀀싱 장치 이외의 다른 컴퓨터에서 구현될 수 있다.
스테이지 B에서, 해시 연산 모듈(108)은 k-mer 세트(104)를 수신한다. 도 1에 도시된 실시예의 컴퓨터(106)는 해시 연산 모듈(108)과 통신 가능하게 연결될 수 있다. 해시 연산 모듈(108)은 k-mer 세트(104)에 기초하여 하나 이상의 연산을 수행할 수 있다. 예를 들어, 도 1에 나타낸 바와 같이, k-mer 세트(104)의 각각의 k-mer는 대응하는 해시 값을 생성하기 위해 사용될 수 있다. 해시 값은 임의의 값일 수 있다. 도 1의 실시예에서, 해시 값은 0과 2----- 64-1 사이의 값으로 결정된다.
해시 연산 모듈(108)은 계산된 해시 값(112)을 생성할 수 있다. 계산된 해시 값(112)은 수신된 k-mer 세트(104)를 필터링하기 위해 처리될 수 있다. 예를 들어, 해시 연산 모듈(108)은 제2 k-mer 세트(110)로서 도 1의 실시예에 도시된 k-mer 세트(104)의 서브세트를 결정하기 위해 계산된 해시 값(112)을 사용할 수 있다. 일부 구현예에서, 제1 필터링 스테이지는 모듈로 함수(modulo function)를 사용하여 k-mer 세트(104)의 서브세트를 결정함으로써 구현될 수 있다. 일부 구현예에서, 계산된 해시 값(112)은 미리 결정된 매핑에 대응하는 해시 연산 모듈(108)에 의해 생성될 수 있다. 예를 들어, 도 1에 나타낸 바와 같이, 매핑은 다음과 같이 정의될 수 있다:
Figure pct00001
수학식 1은, 하나 이상의 해시 값을 계산하기 위해 해시 연산 모듈(108)에 의해 사용될 수 있는 해시 함수의 일 실시예이다. 수학식 1은 k-mer 세트(104)의 주어진 k-mer를 대응하는 해시 값에 매핑하는 것을 설명하며, 이 경우, 해시 값은 0에서 264-1 사이의 값이고, 해시 값은 64비트 부호 없는 정수로 표현될 수 있다. 일부 구현예에서, 다른 매핑 또는 해시 함수가 사용되어 다른 해시 값으로 귀결된다. 예를 들어, 64비트 부호 없는 정수 대신, 32비트 부호 있는 정수가 사용될 수 있다. 본 개시내용은 해시 함수 모듈(108)에 의해서 사용되는 매핑 또는 해시 함수의 형태를 제한하지 않는다. 일부 경우에서, 해시 함수의 유형은 컴퓨터(106)가 수신한 데이터 또는 해시 연산 모듈(108)이 수신한 데이터에 따라 변경될 수 있다.
k-mer 세트(104)를 처리함에 있어서, 도 1의 해시 연산 모듈(108)은 하나 이상의 연산을 수행할 수 있다. 일부 구현예에서, 하나 이상의 연산은 하나 이상의 값을 계산하는 것을 포함할 수 있다. 도 1의 실시예에서, 해시 연산 모듈(108)은 k-mer 세트(104)의 각각의 k-mer에 대한 해시 값을 계산할 수 있다. 해시 연산 모듈(108)에 의해 수행되는 해시 값 계산의 일 실시예는 수학식 2에 보여진다.
Figure pct00002
수학식 2는 도 1의 실시예 및 k-mer 세트(104)의 제1 k-mer인 "GTTA...AC"에 관한 것이다. 수학식 1에서 해시 연산 모듈(108)은 해시 함수
Figure pct00003
및 k-mer GTTA…AC를 기반으로 해시 값 98778…789를 계산하며, 여기서 값 98778…789는 1과 264-1 사이의 값을 나타내고, "GTTA...AC"는 k-mer 세트(104)의 k-mer에 의해 정의된, 게놈 데이터 판독, 또는 이의 일부분을 나타낸다. 해시 함수
Figure pct00004
는, 당업자가 이해할 수 있는 임의의 적합한 해시 함수일 수 있다. 해시 함수
Figure pct00005
는 수학식 1에서 보여지는 바와 같이 k-mer 세트(104)의 k-mer를 소정의 값 범위 내의 특정 값으로 매핑하도록 구성될 수 있다.
해시 연산 모듈(108)은 k-mer 세트(104)에 기초하여 추가 연산을 수행할 수 있다. 도 1의 실시예에서, 해시 연산 모듈(108)은 k-mer GTTA...AC에 대응하는 해시 값 98778...789를 생성할 수 있다. 해시 연산 모듈은 수학식 3에 보여지는 바와 같이 해시 값을 기반으로 다른 값을 계산할 수 있다.
Figure pct00006
수학식 3은 도 1의 실시예에서 해시 연산 모듈(108)에 의해 수행되는 계산을 보여준다. k-mer GTTA…AC에 대응하는 해시 값 98778…789는 제2 값을 계산하는 데 사용된다. 제2 값은 해시 값 98778…789에 대해 수행된 모듈로 연산(modulo operation)의 결과이다. 모듈로 연산은 해시 값 98778…789와 seedModValue를 기반으로 한다. seedModValue는 k-mer 세트(104)에 응답하는 해시 연산 모듈(108) 또는 컴퓨터(106)에 의해 미리 결정되거나 결정된다. 도 1의 실시예에서, seedModValue는 정수 8이다. 그러나, seedModValue는 임의의 정수일 수 있다. seedModValue는 최적화 작업 또는 기타 사용 사례에 따라 최적화되거나 변경될 수 있다. seedModValue는 구현예에 따라 어떤 값이든 될 수 있다.
해시 연산 모듈(108)은 계산된 해시 값(112) 및 seedModValue에 기초하여 제2 k-mer 세트(110)를 생성할 수 있다. 제2 k-mer 세트(110)를 생성하기 위해 임의의 적합한 규칙 세트가 해시 연산 모듈(108)에 의해 적용될 수 있다. 도 1의 실시예에서, 해시 연산 모듈(108)은 해시 값 98778…789를 생성하고, 현재 실시예에서 8인 seedModValue에 기초하여 해시 값 98778…789에 대해 모듈로 연산을 수행할 수 있다. 모듈로 연산과 결과는 수학식 3에서 보여진다. 결과는 0이다. 도 1에 도시된 해시 연산 모듈(108)의 내부 규칙에 따르면, 0의 결과는 해시 연산 모듈(108)이 대응하는 k-mer, 이 경우에는, k-mer GTTA…AC를 제2 k-mer 세트(110)에 포함하게 한다. k-mer GTTA…AC는 제2 k-mer 세트(110)가 k-mer GTTA…AC를 포함하는 것을 나타내기 위해 크로스 아웃(cross out)되지 않는다.
해시 연산 모듈(108)은 또한 k-mer 세트(104)에 포함된 다른 k-mer에 대한 해시 값을 계산할 수 있다. k-mer 세트(104)의 k-mer TATA…CG는 계산된 해시 값들(112) 중 해시 값65432…611을 계산하는 데 사용된다. 상술된 바와 같이, 해시 연산 모듈(108)은 seedModValue를 사용하여 모듈로 연산을 수행할 수 있다. 이 경우, 해시 연산 모듈(108)은 2라는 값을 계산할 수 있다. 해시 연산 모듈(108)은 해시 값(65432...611)에 적용된 모듈로 연산의 결과의 값에 기초하여 제2 k-mer 세트(110)에 k-mer TATA...CG를 포함하지 않기로 결정할 수 있다. 도 1의 실시예에서, k-mer TATA…CG는 k-mer TATA…CG가 제2 k-mer 세트(110)에 포함되지 않는 것을 보여주기 위해 크로스 아웃된다.
해시 연산 모듈(108)은 k-mer 세트(104)의 다른 k-mer에 대한 대응하는 해시 값을 계산할 수 있다. 상술된 바와 같이, 해시 연산 모듈은 k-mer 세트(104)의 k-mer에 대한 연산을 수행함으로써 k-mer 세트(104)의 k-mer를 필터링할 수 있다. 도 1의 실시예에서, 해시 연산 모듈(108)은 해시 값, 및 계산된 해시 값에 적용된 모듈로 연산의 결과를 연산할 수 있다. 모듈로 연산의 결과에 기초하여, 해시 연산 모듈(108)은 k-mer 세트(104)의 k-mer를 필터링하고, 제2 k-mer 세트(110)를 생성할 수 있다. 일부 구현예에서, 제2 k-mer 세트(110)와 같은 필터링된 k-mer들의 세트는 해시 연산(예를 들어, 모듈로 8 연산 또는 다른 적절한 연산)에 의해 산출된 계산 결과가 0인 k-mer들 각각을 포함할 것이다. 즉, 해시 연산 모듈(108)에 의해 연산되었을 때 0이 아닌 결과를 산출하는 해시 값을 갖는 k-mer 각각은 필터링되어 걸러진다. 제2 k-mer 세트(110)는 k-mer 세트(104)의 서브세트이다. 그러나, 본 개시내용은 필터 연산을 수행하기 위해 해시 값에 대한 모듈로 8 연산의 사용 또는 모듈로 연산의 사용에 한정되지 않는다. 당업자가 이해할 수 있는 바와 같이 다양한 다른 필터링 기술이 사용될 수 있다.
일부 구현예에서, 필터링은 컴퓨터에서 실행되는 다양한 컴퓨터 프로그램을 포함할 수 있다. 예를 들어, 아래 알고리즘 1에서 보여지는 바와 같이, 컴퓨터 프로그램은 하나 이상의 시스템 변수를 시작하고, 하나 이상의 시스템 변수에 기초하여 하나 이상의 연산을 수행할 수 있다. 일부 경우에서, 필터링될 항목을 결정하는 데에는 'if' 문 또는 기타 조건부 코딩 연산이 사용될 수 있다.
Figure pct00007
일부 구현예에서, 게놈 데이터로부터 하나 이상의 항목을 추출하는 데 필터링 기술이 사용될 수 있다. 예를 들어, 추출 모듈은, 부모 데이터 저장소, 예를 들어, 게놈 서열, 게놈 데이터를 포함하는 데이터 구조, 또는 다른 형태의 서열형 데이터(ordered data) 저장소 내에서 미리 결정된 간격으로 k-mer를 추출할 수 있다. 일부 구현예에서, 추출 모듈은 시퀀스 내에서 제1 k-mer를 측위할 수 있다. 다음으로, 추출 모듈은 제2 k-mer가 제1 k-mer로부터 사전 결정된 수의 뉴클레오티드 s만큼 분리된 시퀀스 내에서 제2 k-mer를 측위할 수 있다. 이 경우, s는 0보다 더 큰 정수일 수 있다. 제3 k-mer는 제1 k-mer를 기반으로 제2 k-mer를 찾기 위해서 사용된 것과 동일한 간격 s를 사용하여 결정될 수 있다. 연산은 미리 결정된 종료 조건이 충족될 때까지, 예를 들어, 미리 결정된 수의 k-mer가 발견될 때까지 또는 추출 모듈이 서열의 끝에 도달할 때까지 계속될 수 있다. 일부 구현예에서, 위의 실시예는 다른 형태의 데이터 저장소를 필터링하는 데 사용될 수 있다. 예를 들어, k-mer 세트(104)로부터 하나 이상의 요소를 추출하여 k-mer 세트(104)를 필터링하기 위해 고정된 간격이 사용될 수 있다. 추출 모듈은 k-mer 세트(104)와 같은 데이터 구조 내에서 제1 k-mer를 측위할 수 있고, 다음으로 k-mer 세트(104) 내에서 제2 k-mer를 측위할 수 있으며 여기서 제2 k-mer는 제1 k-mer로부터 미리 결정된 수의 인덱스 i만큼 분리된다. 인덱스가 없는 데이터 저장소에서는, 인접한 추출된 요소들 간의 고정된 분리를 나타내는 데 카운트 또는 기타 값이 사용될 수 있다.
일부 구현예에서, 서열형 데이터 세트 내의 항목은 미리 결정된 간격을 사용하는 필터링 방법의 하나 이상의 조건에 따라 선택될 수 있다. 예를 들어, 위에서 논의된 것처럼, 서열형 데이터 세트는 서열형 데이터 세트로부터 추출된 하나 이상의 항목을 기반으로 필터링될 수 있다. 서열형 데이터 세트로부터 추출된 적어도 하나 이상의 항목들 중 인접한 항목들은 미리 결정된 간격만큼 서로 분리될 수 있다. 일부 구현예에서, 미리 결정된 간격에 기초하여 서열형 데이터 세트의 하나 이상의 항목을 선택하기 위해 제1 값이 선택된다. 일부 경우에서, 제1 값은, 둘 이상의 입력 데이터 세트에 대해 유사한 필터링된 세트를 생성하기 위해 적어도 둘 이상의 입력 데이터 세트에 걸쳐 동등한 사양으로 또는 유사한 방식으로 선택된다.
일부 구현예에서, 필터링의 해시 방법은 도 1의 시스템(100)과 같은 시스템의 성능을 개선하기 위해 사용된다. 예를 들어, 해시 함수는 해시 연산 모듈(108)에 의해 참조 게놈의 k-mers 및 게놈 판독의 k-mers에 적용될 수 있다. 참조 게놈과 게놈 판독 모두에 걸쳐 상수 해시 함수 및 모듈로 연산을 기반으로 k-mer를 필터링함으로써, 동일한 유형의 k-mer가 해시 연산 모듈(108)에 의해 참조 게놈과 게놈 판독으로부터 선택될 수 있다. 필터링의 해시 방법을 사용함으로써, 메모리 사용과 처리 시간은 인덱싱해야 하는 k-mer 세트를 필터링하는 것, 필터링 연산 내에서 k-mer의 서브세트만 쿼리하는 것, 및 상술된 바와 같은 참조 게놈과 게놈 판독 간의 유사한 선택을 기반으로 감소될 수 있다.
스테이지 C에서, 발생 카운터 모듈(114)은 제2 k-mer 세트(110)를 사용하여 제2 필터 스테이지를 k-mer 세트(104)에 적용할 수 있다. 일부 구현예에서, 발생 카운터 모듈(114)은 제2 k-mer 세트(110)의 하나 이상의 k-mer에 대한 게놈 발생(118)의 수를 계산함으로써 제2 필터링 스테이지를 구현할 수 있다. 각각의 k-mer에 대한 게놈 발생의 수(118)는, 예를 들어, 특정 k-mer가 참조 게놈(참조 서열이라고도 함)에 나타나는 횟수를 포함할 수 있다. 일부 구현예에서, 발생 카운터 모듈(114)은 각각의 k-mer에 대한 발생의 수를 임계값과 비교할 수 있다. 도 1의 실시예에서, 임계값은 20으로 정해진다. 다른 구현예에서, 임계값은 임의의 적용 가능한 값일 수 있다.
참조 서열에서 k-mer에 대한 발생의 수를 결정하기 위한 제2 필터링 스테이지가 본원에 설명되지만, 본 개시내용의 제2 필터링 스테이지는 이에 한정되지 않는다. 대신, 다른 필터가 또한 제2 필터링 스테이지를 위해서 사용될 수 있다. 또한, 일부 구현예에서, 본 개시내용은 제로 필터링 스테이지, 하나의 필터링 스테이지, 또는 둘 이상의 필터링 스테이지를 채용할 수 있다. 본 개시내용의 한정된 특징인 필터링 스테이지 대신에, 필터링 스테이지는 특정 구현예를 위한 해시 테이블(124) 생성에 사용되기 적합한 제3 k-mer 세트(116)를 달성하기 위해 소프트웨어 가속 게놈 데이터 매핑 알고리즘의 설계 동안 맞춤화될 수 있다.
도 1의 실시예에서, 발생 카운터 모듈(114)은 k-mer GTTA...AC가 참조 서열과 같은 게놈 데이터(102) 내에서 15번 발생한다고 결정한다. k-mer TATA...CG는, 모듈로 연산을 기반으로 하는 제1 필터링 스테이지 동안 k-mer TATA...CG가 필터링되어 걸러졌기 때문에 계산되지 않는다. k-mer CCGA...GT는 게놈 데이터(102) 내에서 23번 발생하고, k-mer AAGT...AT는 게놈 데이터(102) 내에서 11번 발생된다.
게놈 발생(118)의 수에 기초하여, 발생 카운터 모듈(114)은 제3 k-mer 세트(116)에 포함할 제2 k-mer 세트(110)의 각각의 k-mer 시드를 결정할 수 있다. 게놈 발생의 수(118)의 각각의 엔트리(entry)는 임계값 MaxSeedOccurrence와 비교된다. MaxSeedOccurrence 값은 20과 같은 정수 값을 가질 수 있다. 게놈 발생의 수(118)의 항목이 임계값 이상인 경우, 대응하는 k-mer는 제3 k-mer 세트(116)에 포함되지 않는다. 게놈 발생의 수(118)의 항목이 임계값 미만인 경우, 대응하는 k-mer는 제3 k-mer 세트(116)에 포함된다. k-mer GTTA...AC 및 k-mer AAGT...AT는, 대응하는 발생 수 15와 11 둘 다 임계값 MaxSeedOccurrence를 충족하므로, 모두 제3 k-mer 세트(116)에 포함된다. 도시되지 않은 제2 k-mer 세트(110)의 다른 k-mer는 또한, 제3 k-mer 세트(116)에 포함될 수 있다. k-mer CCGA...GT는 대응하는 발생 수 23이 임계값 MaxSeedOccurrence를 충족하지 않기 때문에, 제3 k-mer 세트(116)에 포함되지 않는다.
상술된 바와 같이, 해시 연산 모듈(108) 및 발생 카운터 모듈(114)에 의해 수행되는 연산의 적어도 일부는 참조 시퀀스 데이터와 같은 수신된 게놈 데이터(102)에 적용되는 각각의 필터링 스테이지로서 설명될 수 있다. 일부 구현예에서, 필터링은, 예를 들어, 메모리 사용을 줄이고, 수신된 데이터에 대응하는 전체 연산의 계산 시간을 줄이는 등 여러 가지 이유로 사용될 수 있다. 일부 구현예에서, 수신된 데이터의 서브세트를 생성하는 데 다른 형태의 필터링이 사용될 수 있다. 예를 들어, 랜덤 알고리즘과 같은 알고리즘은 수신된 데이터에 사용된 인덱스에 대응하는 인덱스의 목록을 생성할 수 있다. 임의 알고리즘의 출력에 인덱스가 포함되는 경우, 수신된 데이터의 대응하는 값이 데이터의 서브세트에 포함되거나 포함되지 않을 수 있다. 이러한 방식으로, 수신된 데이터의 서브세트가 생성될 수 있다. 난수 생성을 포함하는 다른 방법이 또한, 당업자에게 명백한 바와 같이, 사용될 수 있다.
일부 구현예에서, 필터링은 데이터의 관련 특성에 기초하여 수신된 게놈 데이터(102)를 필터링하기 위해 사용될 수 있다. 예를 들어, 도 1에 나타낸 바와 같이, 제2 k-mer 세트(110)는 게놈 데이터(102) 내의 각각의 k-mer의 발생에 기초하여 발생 카운터 모듈(114)에 의해 필터링될 수 있다. 일부 구현예에서, 이것은, 높은 발생 카운트를 갖는 k-mer가 낮은 품질 스코어를 갖는 정렬을 생성할 후보 정렬 위치를 생성할 가능성이 더 높은 경향이 있기 때문에, 관련 필터가 될 수 있다. 본 명세서의 동기 중 하나는 좋은 후보 정렬을 생성하는 것이므로, 도 1의 실시예에서 20 이상의 발생으로 정의된 높은 발생을 갖는 k-mer는 해시 테이블의 생성에 포함될 생성된 서브세트에 포함되지 않는다.
도 1의 스테이지 D에서, 해시 테이블 생성 모듈(120)은 제3 k-mer 세트(116)를 기반으로 해시 테이블을 생성할 수 있다. 도 1의 실시예에서, 해시 테이블 생성 모듈(120)은, 서명 값 및 위치 값을 포함하는 데이터 블록으로 구성된 1차원 어레이로서 표현되는 해시 테이블(124)을 생성한다. 해시 테이블 생성 모듈(120)은, 해시 연산 모듈(108) 및 발생 계수 모듈(114)의 필터링 단계를 거친 k-mer만을 해시 테이블(124)에 기록한다. 예를 들어, k-mer GTTA...AC 및 k-mer AAGT...AT는 해시 테이블(124)에 기록되는 반면, k-mer TATA...CG 및 k-mer CCGA...GT는 기록되지 않는다.
해시 테이블(124)에 기록된 k-mer에 대응하는 값은 주어진 k-mer의 위치를 게놈 데이터(102) 내에 포함할 수 있다. 일부 구현예에서, 게놈 데이터 내에서 k-mer의 제1 발생만이, 주어진 k-mer에 대한 해시 테이블의 값 데이터 섹션에 포함된다. 이러한 구현예에서, 다음으로, 다른 위치는 폐기된다. k-mer GTTA...AC에 대응하는 생성된 값의 개념적 예는 항목 126에 나타내어 있다. 참조(126b)는 제1 발생(126a)에서 k-mer GTTA...AC에 대응하는 것으로 도시된다. 도 1의 실시예에서, 참조(126b)는 게놈 데이터(102)에 대응한다. 참조 126b의 언급된 부분은 k-mer GTTA...AC에 대응하는 서열, 즉 "GTTA...AC"로 표현되는 서열의 뉴클레오티드 서열을 포함한다. 시퀀스 "GTTA...AC"는 참조(126b)의 다른 위치에서 발생될 수 있지만, 시퀀스 "GTTA...AC"의 제1 발생만이 k-mer GTTA...AC에 대응하는 해시 테이블(124)에 값으로 저장된다.
일부 구현예에서, 해시 테이블(124)에 항목을 삽입하는 것은 컴퓨터에서 실행되는 다양한 컴퓨터 프로그램을 포함할 수 있다. 예를 들어, 아래 알고리즘 2에서 보여지는 바와 같이, 컴퓨터 프로그램은 하나 이상의 시스템 변수를 시작하고, 하나 이상의 시스템 변수에 기초하여 하나 이상의 연산을 수행할 수 있다. 일부 경우에서, 필터링될 항목을 결정하는 데에는 'if' 문 또는 기타 조건부 코딩 연산이 사용될 수 있다.
Figure pct00008
k-mer GTTA...AC에 대응하는 서명은 해시 함수를 사용하여 계산된다. 도 1의 실시예에서, 해시 함수는 주어진 k-mer를 0 내지 255의 범위로 매핑한다. 항목 128에 나타낸 바와 같은 k-mer GTTA...AC는 해시 함수 H_sig에 대한 입력으로 사용된다. 해시 테이블 생성 모듈(120)은 k-mer 값을 값 248에 매핑하기 위해 해시 함수 H_sig를 사용한다. 값 248은 다음으로 해시 테이블(124) 내의 k-mer GTTA...AC에 대응하는 키로서 사용된다.
해시 테이블 생성 모듈(120)은, k-mer 값을 0에서 255 사이의 숫자로 매핑함으로써, 해시 테이블(124)에 저장된 데이터의 양을 줄일 수 있다. 16개의 뉴클레오티드 길이인 k-mer의 경우, 데이터 구조 내에서 대응하는 데이터를 렌더링하는 데 32비트가 필요할 수 있다. k-mer 값을 다른 값, 예를 들어 항목에 나타낸 바와 같은 0과 255 사이의 값에 매핑함으로써, 필요한 공간이 감소된다. 예를 들어, k-mer GTTA...AC가 16개의 뉴클레오티드를 포함하고, 매핑 연산으로부터 기인되는 서명이 8비트로 표현될 수 있는 숫자 248인 경우, 해시 테이블(124) 내에 저장된 데이터에 대한 메모리 풋프린트는 1/4만큼 감소된다.
일부 구현예에서, 다른 방법이 대응하는 키를 감소시켜 해시 테이블 크기를 감소시키기 위해서 사용될 수 있다. 예를 들어, 해시 함수를 사용하여 수신된 데이터의 주어진 값을 매핑하는 대신, 값의 후행 x 자릿수(trailing x number of digits)가 데이터 구조 내에서 표현될 수 있는 위치를 나타내기 위해서 사용될 수 있다. 해시 테이블의 데이터를 압축하는 다른 유사한 방법은 당업자에게 명백할 것이다.
일부 구현예에서, 해시 테이블(124)은 지정된 길이의 어레이일 수 있다. 예를 들어, 해시 테이블(124)은 N개의 연속 셀을 포함하는 단일 어레이를 포함할 수 있다. 해시 테이블(124)은 또한, 충돌 해결을 위해 선형 프로빙 기술을 사용할 수 있다. 일부 구현예에서, 해시 테이블(124)의 배열 구성에 대응하는 구성은 다른 유사한 방법에 비해 단일 캐시 미스 및 향상된 성능으로 귀결될 수 있다. 해시 테이블(124)의 성능을 향상시킴으로써, 시스템(300)과 같이 판독을 참조 게놈에 매핑하는 시스템은, 시스템이 다른 매핑 방법에 비해 더 높은 정확도와 더 짧은 시간에 매핑 결과를 생성할 수 있도록 향상될 수 있다.
k-mer GTTA...AC에 대응하는 인덱스는 해시 함수를 사용하여 계산될 수 있다. 도 1의 실시예에서, H_tab이 서명을 생성하기 위해서 사용된 H_sig 해시 함수와 동일하지 않은 해시 함수 H_tab가 사용된다. 일부 구현예에서, H_tab 해시 함수는 k-mer를 입력으로서 사용할 수도 있지만, 다른 범위의 값에 대한 출력을 생성한다. H_tab 해시 함수에 의해 출력되는 값의 범위는 해시 테이블(124) 내에서 사용 가능한 인덱스의 수에 대응할 수 있다. 일부 구현예에서, 해시 테이블(124)은 인덱싱될 수 있는 대략 228개의 셀을 포함할 수 있다. 항목 130에 나타낸 바와 같이, H_tab 해시 함수는 k-mer GTTA...AC에서 연산될 수 있고, 해시 테이블(124) 내의 인덱스에 대응하는 268435456의 값을 출력할 수 있다. 항목 126 및 128에서 각각 보여지는 값 및 서명은 해시 테이블(124) 내의 인덱스 위치 268435456에 저장될 수 있다.
해시 테이블에서 셀을 쿼리할 때, 셀의 서명은 특정 k-mer를 보유한 셀을 식별하는 데 사용될 수 있다. 특정 서명이 있는 셀이 발견되면, 연관된 값, 인덱스, 또는 기타 매개변수가 반환될 수 있다. 일부 구현예에서, 다수의 서로 다른 k-mer가 동일한 서명에 대응될 수 있다. 예를 들어, 해시 테이블(124)은 제1 서명에 대응하는 제1 k-mer 및 제2 서명에 대응하는 제2 k-mer를 포함할 수 있으며, 제1 서명과 제2 서명을 나타내는 값들은 동일하다. 이러한 구현예에서, 제1 k-mer의 제1 서명 및 대응하는 정보를 찾기 위해 해시 테이블을 쿼리하는 것은, 해시 테이블(124)이 제2 k-mer에 관련된 정보를 출력하는 것으로 귀결될 수 있다.
해시 테이블(124)은 낮은 메모리 사용 및 빠른 쿼리를 위해 설계될 수 있다. 예를 들어, 도 1의 해시 테이블(124)은, k-mer를 식별하는 데 사용되는 키와 게놈 데이터(102) 내의 k-mer 위치인 값을 갖는 키 값 쌍의 목록을 저장하도록 설계된다. 일부 구현예에서, 게놈 데이터(102) 내의 하나의 위치는 k-mer당 저장된다. 일부 구현예에서, 다른 위치가 저장된다. 예를 들어, 게놈 데이터(102) 내의 주어진 k-mer의 다른 모든 위치, 예를 들어 홀수 위치 등은 주어진 k-mer에 대응하는 해시 테이블에 저장될 수 있다.
일부 구현예에서, 해시 테이블(124)은 스테이지 E에서 추가 사용을 위해 컴퓨터(106)의 메모리 내에 저장될 수 있다. 예를 들어, 해시 테이블(124)은 도 3에 나타낸 바와 같은 후보 정렬 위치 및 평가의 애플리케이션에 사용될 수 있다. 다른 구현예에서, 해시 테이블(124)은 스테이지 E에서 컴퓨터(106)에 통신 가능하게 연결된 디바이스로 컴퓨터(106)에 의해 전송될 수 있다. 이러한 디바이스는 하나 이상의 직접 연결을 통해 또는 인터넷을 통한 것과 같은 하나 이상의 네트워크 연결을 통해 컴퓨터(106)에 통신 가능하게 연결될 수 있다. 일부 구현예에서, 해시 테이블(124)은 컴퓨터(106)에 의해 생성되고, 스테이지 E에서 썸(thumb) 드라이브, 하드 드라이브, 또는 다른 형태의 전자 데이터 저장장치와 같은 데이터 저장 엔티티 내에 저장될 수 있다. 일부 경우에서, 데이터 저장 엔티티는 해시 테이블(124)을 쿼리하거나 편집할 수 있는 프로세서에 연결된다.
일부 구현예에서, 컴퓨터(106)는 해시 테이블(124)에 관련된 다른 데이터를 다른 프로세스 또는 디바이스로 보낼 수 있다. 예를 들어, 해시 테이블(124)을 전송하는 대신에, 컴퓨터(106)는 계산 시스템, 알고리즘 등을 다른 프로세스나 디바이스에 전송할 수 있다. 일부 구현예에서, 컴퓨터(106)는, 메모리 디바이스가 해시 테이블(124)로부터 데이터를 판독하는 데 사용되거나 해시 테이블(124)에 관련된 데이터에 기초하여 해시 테이블(124)과 유사한 해시 테이블을 생성하는 데 사용될 수 있도록, 해시 테이블(124) 또는 해시 테이블(124)에 관련된 데이터를 포함하여 데이터를 메모리 디바이스에 저장할 수 있다. 예를 들어, 컴퓨터(106)는 해시 연산 모듈(108), 발생 카운터 모듈(114), 또는 해시 테이블 생성 모듈(120)과 같은 하나 이상의 모듈에 관련된 데이터를 다른 프로세스 또는 디바이스에 전송할 수 있다. 하나 이상의 모듈에 관련된 데이터는 하나 이상의 모듈에 관련된 데이터에 기초하여 하나 이상의 다른 해시 테이블을 생성하기 위해 다른 시스템 또는 시스템(100)에 의해 사용될 수 있다.
일부 구현예에서, 컴퓨터(106)는 다른 컴퓨터 및 게놈 데이터(102)에 해시 테이블(124)을 설치하기 위한 소프트웨어 명령어를 포함하는 해시 테이블 설치 패키지를 생성할 수 있다. 다른 구현예에서, 컴퓨터(106)는, 수신 컴퓨터가 이미 게놈 데이터의 사본을 가지고 있을 수 있으므로, 소프트웨어 명령만을 제공할 수 있다. 일부 구현예에서, 해시 테이블 설치 패키지는, 실행될 때, 도 2의 프로세스(200)에 의해 설명되는 동작들을 수행하는 소프트웨어 명령어들을 포함할 수 있다. 다른 컴퓨터는 해시 테이블 설치 패키지를 수신하고, 해시 테이블 설치 패키지를 실행하고, 해시 테이블(124)을 설치할 수 있다. 다음으로 다른 컴퓨터는 도 3 및 도 4와 관련하여 본원에 기술된 프로세스를 사용하여 소프트웨어 가속 게놈 판독 매핑을 수행할 수 있다.
일부 구현예에서, 해시 테이블(124)은 개방 어드레싱을 사용할 수 있다. 예를 들어, 해시 충돌은 타겟 셀이 발견되거나 미사용 셀이 발견될 때까지 해시 테이블(124)의 어레이에서 대체 위치를 검색함으로써 해결될 수 있다. 셀은 데이터가 저장될 수 있는 해시 테이블(124) 내의 위치일 수 있다. 일부 구현예에서, 선형 프로빙(linear probing) 또는, 2차 프로빙, 이중 해싱 프로그램 등과 같은 다른 형태의 프로빙은, 주어진 k-mer에 대응하는 데이터를 저장하기 위한 인덱스를 결정하기 위해서 사용될 수 있다. 일부 구현예에서, 선형 프로빙은, 선형 프로빙을 활용하지 않는 구현예보다 더 높은 성능으로 변환될 수 있는 개선된 캐시 지역성(cache locality)을 위해 사용될 수 있다. 도 1의 실시예에서, 키와 값은 모두 해시 테이블(124)의 어레이에 함께 저장된다. 키와 값을 함께 저장함으로써, 캐시 지역성은 더욱 높아질 수 있다.
일부 구현예에서, 일 형태의 프로빙은 새 인덱스를 생성하기 위해서 사용될 수 있다. 예를 들어, 선형 프로빙을 사용하는 구현예에서, 제1 k-mer가 해시 함수 H_tab을 기반으로 특정 인덱스에 매핑되고, 해당 인덱스가 제1 k-mer에서 해시 함수 H_sig에 의해 계산된 서명과 동일한 서명을 가진 점유된 셀을 포함하는 경우, 새 인덱스가 계산될 수 있다. 선형 프로빙의 경우, 주어진 인덱스에서 서명 값이 제1 k-mer에서 동작하는 H_sig의 출력에 대응하는 서명 값과 같지 않을 때까지 인덱스 값을 1씩 증가시킬 수 있다. 물론, 임의의 다른 적합한 프로빙이 주어진 구현예에서 사용될 수 있다.
일부 구현예에서, 해시 테이블(124)은 미리 결정된 메모리 크기의 셀을 포함할 수 있다. 예를 들어, 해시 테이블(124)은 5바이트의 메모리를 포함하는 메모리 셀을 포함할 수 있다. 일부 구현예에서, 항목 128과 항목 126에 각각 나타낸 바와 같이, 1바이트는 서명 값에 할당되고 4바이트는 위치 값에 할당된다. 그러나 구현예에 따라 다른 메모리 레이아웃이 사용될 수 있다.
일부 구현예에서, 서명이 생성되어 해시 테이블(124)에 저장될 수 있다. 예를 들어, k-mer GTTA...AC와 같은 주어진 k-mer에 기초한 서명이 생성되어 해시 테이블(124)에 저장될 수 있다. 일부 구현예에서, 생성된 서명은 k-mer 자체의 이진 표현보다 데이터 사용 측면에서 더 작을 수 있다. 이런 방식으로, 메모리 사용은 더 감소될 수 있고, 성능은 향상될 수 있다. 도 1의 예에서, k-mer GTTA...AC에 대응하는 서명은 항목 128에 나타낸 바와 같이 해시 함수를 사용하여 생성된다. 이 경우, 해시 함수 H_sig가 사용된다.
일부 구현예에서, 해시 테이블의 다른 형태는 해시 테이블 생성 모듈(120)에 의해 생성된다. 예를 들어, 해시 테이블 생성 모듈(120)은 하나의 어레이로서 표현되는 1차원 벡터 대신, 다수의 어레이를 사용하여 다차원 벡터를 생성할 수 있다. 일부 경우에서, 해시 테이블 생성 모듈(120)에 의해 생성된 해시 테이블의 형태는 도 1의 실시예에서 k-mer 세트(104)인 수신된 데이터에 기초하여 결정될 수 있다. 예를 들어, 해시 테이블 생성 모듈(120)은 해시 테이블의 형태를 특정 속성을 갖는 1차원 배열로부터 다차원 벡터, 테이블, 1차원 배열, 또는 각각 다른 속성을 갖는 다른 형태의 해시 인덱스 데이터베이스로 변경할 수 있다. 그러나, 단일 어레이로 표현되는 1차원 벡터를 사용하는 구현은 단일 캐시 미스로만 해시 쿼리가 해결될 수 있도록 보장하는 것과 같은 특별한 기술적 이점을 제공한다.
일부 구현예에서, 컴퓨터(106)는 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120)에 기인한 동작을 수행하도록 구성될 수 있다. 다른 구현예에서, 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120) 중 하나 이상은 컴퓨터(106)에 통신 가능하게 연결된 하나 이상의 디바이스에서 수행될 수 있다. 일부 구현예에서, 컴퓨터(106)에 통신 가능하게 연결된 하나 이상의 디바이스는 다른 컴퓨터, 서버, 핵산 시퀀서 또는 다른 디바이스를 포함할 수 있다.
일부 구현예에서, 하나 이상의 처리 단계는 도 1의 실시예에 도시된 바와 같이 처리 단계 전 또는 후에 수행될 수 있다. 예를 들어, k-mer 세트(104)는, 컴퓨터(106)에 의해 수신된 후, 해시 연산 모듈(108)의 동작이 발생되기 전에, k-mer 세트(104)의 포맷을 변경하도록 전처리될 수 있다.
일부 구현예에서, 도 1의 실시예에 도시된 하나 이상의 동작은 본 명세서의 범위를 벗어나지 않으면서 제거될 수 있다. 예를 들어, 일부 경우에서, 해시 연산 모듈(108)은 발생 카운터 모듈(114)에 의해 수행되는 어떠한 연산 없이 출력 데이터를 해시 테이블 생성 모듈(120)로 직접적으로 전송할 수 있다. 다양한 다른 변형이 당업자에 의해 고려될 수 있다.
다른 실시예로서, 일부 구현예에서, 시스템(100)은 완전하고 상이한 k-mer 세트(110, 116)의 직렬 생성 없이 구현될 수 있다. 대신, 해시 연산 모듈(108), 발생 카운터 모듈(114), 및 해시 테이블 생성 모듈(120)의 프로세스는 파이프라인 방식으로 구현될 수 있다. 예를 들어, 해시 연산 모듈(108)은 k-mer GTTA...AC에 대응하는 해시 값 98778...789를 계산하고, 해시 값 98778...789 modulo seedModValue의 결과를 계산함으로써 제1 필터링 스테이지를 실행할 수 있다. 모듈로 연산의 결과가 0인 경우, 발생 카운터 모듈(114)은 k-mer GTTA...AC를 직접적으로 수신하고, k-mer GTTA...AC에 대응하는 게놈 발생의 수를 결정하고, k-mer GTTA...AC에 대응하는 게놈 발생의 수에 기초하여 제2 필터 스테이지를 실행할 수 있다. 해시 테이블 생성 모듈(120)은, 일단 k-mer GTTA...AC가 발생 카운터 모듈(114)의 제2 필터링 스테이지를 통과하면, 본원에 기술된 바와 같이, 유사한 방식으로, k-mer GTTA...AC를 수신하고, 그 동작을 수행할 수 있다. 따라서, 일부 구현예에서는, k-mer 데이터와 같은 별도의 세트의 수신 데이터가 생성될 필요가 없다. 대신에, 본 개시내용의 모듈은, 이전 처리 모듈의 출력이 생성된 후에 후속 처리 모듈이 이전 처리 모듈의 출력에 대해 동작하는 파이프라인 방식으로 작동하도록 구성될 수 있다. 이 파이프라인 작동은 소프트웨어 가속 게놈 데이터 매핑 알고리즘의 더 빠른 실행으로 귀결될 수 있다.
도 2는 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 프로세스(200)의 일 실시예를 예시하는 흐름도이다. 프로세스(200)는 하나 이상의 전자 시스템, 예를 들어 도 1의 시스템(100)에 의해 수행될 수 있다.
시스템(100)은 하나 이상의 컴퓨터에 의해, 게놈 데이터를 수신하는 프로세스(200)의 실행을 시작할 수 있으며, 여기서 게놈 데이터는 부모 게놈 데이터로부터 도출된다(202). 일부 구현예에서, 게놈 데이터는 하나 이상의 k-mer로 파싱된다. k-mer는 하나 이상의 필드를 포함하는 데이터 구조일 수 있으며, 각각의 필드는 하나 이상의 k 핵산 뉴클레오티드 또는 염기를 나타낼 수 있다.
프로세스(200)는 하나 이상의 컴퓨터에 의해, 게놈 데이터에 기초한 제1 세트의 값을 생성하는 것을 포함한다(204). 일부 구현예에서, 제1 세트의 값은 해시 값, 해시 함수, 또는 둘 다를 기반으로 한다. 예를 들어, 값들의 제1 세트는 게놈 데이터의 제1 k-mer에 기초한 제1 값을 포함할 수 있다. 제1 값은 해시 값에서 작동하는 모듈로 연산자의 결과일 수 있으며, 여기서 해시 값은 해시 함수에 의해 게놈 데이터의 제1 k-mer로부터 생성될 수 있다. 일부 구현예에서, 다른 작업 또는 방법이 제1 세트의 값을 생성하는 데 사용될 수 있다. 예를 들어, 제1 세트의 값은 게놈 데이터의 주어진 k-mer의 발생 카운트를 포함할 수 있다.
프로세스(200)는, 하나 이상의 컴퓨터에 의해, 제1 세트의 값에 기초하여 게놈 데이터의 서브세트를 생성하는 것을 포함한다(206). 예를 들어, 제1 세트의 값은, 게놈 데이터의 서브세트가 제1 세트의 값에 의해서 알려진 필터링에 기초하여 더 적은 k-mer를 포함하는 게놈 데이터의 서브세트를 생성하기 위해 제1 수의 k-mer를 포함하는 게놈 데이터를 필터링하는 데 사용되는 필터링 데이터의 형태일 수 있다.
프로세스(200)는, 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트의 각각의 항목에 대한 서명을 계산하는 것을 포함하며, 여기서 서명은 제1 해시 함수에 기초하여 계산된다(208). 일부 구현예에서, 해시 함수는 미리 결정될 수 있다. 다음으로, 미리 결정된 해시 함수는 게놈 데이터의 서브세트의 주어진 항목에 기초하여 서명을 생성하는 데 사용될 수 있다. 일부 구현예에서, 서명은 게놈 서명이다. 일부 구현예에서, 서명은 주어진 k-mer와 관련된 데이터와 함께 저장되며, 도 1에 나타낸 바와 같은 주어진 k-mer와 관련된 데이터를 주어진 k-mer에 대응하는 데이터로서 식별하는 데 사용된다.
프로세스(200)는, 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트의 각 항목에 대한 제1 속성을 계산하는 것을 포함하고, 여기서 제1 속성은 게놈 데이터의 시퀀스 내의 게놈 데이터의 주어진 항목의 위치를 포함한다(210). 이와 관련하여, 항목은 k-mer 시드를 포함할 수 있다. 일부 구현예에서, 제1 속성은 시퀀스 내 게놈 데이터의 주어진 항목의 제1 발생만 포함한다. 예를 들어, 게놈 데이터의 주어진 항목은 시퀀스 내에서 두 번 이상 발생될 수 있다. 해시 테이블과 같은 데이터 구조에 게놈 데이터를 저장하는 데 필요한 메모리의 양을 감소시키기 위해, 시스템(100)과 같은 프로세스(200)를 구현하는 시스템은 제1 발생만 저장할 수 있고, 주어진 항목의 후속 발생은 저장하지 않을 수 있다. 일부 구현예에서, 게놈 데이터 표현은 주어진 방향으로 컴퓨터에 의해서 파싱된다. 주어진 방향은 어느 발생이 "제1" 발생으로서 선택되는지를 결정한다.
프로세스(200)는, 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트의 각각의 항목에 대한 인덱스를 계산하는 것을 포함하며, 여기서 인덱스는 제2 해시 함수에 기초하여 계산된다(212). 일부 구현예에서, 제2 해시 함수는 시스템(100)에 의해 미리 결정된다. 일부 구현예에서, 제2 해시 함수는 해시 테이블(124)과 같은 해시 테이블 내에서 주어진 k-mer에 대응하는 데이터를 찾기 위한 인덱스를 생성하는 데 사용된다. 인덱스는 해시 테이블(124)과 연관된 메모리 내의 특정 위치를 가리킬 수 있다.
프로세스(200)는, 하나 이상의 컴퓨터에 의해, 게놈 데이터의 서브세트의 각각의 항목에 대한 인덱스에 기초하여 해시 데이터 구조 내에 게놈 데이터의 서브세트의 각각의 항목에 대한 서명 및 제1 속성을 저장하는 것을 포함한다(214). 예를 들어, 도 1에 도시된 바와 같이, 시스템(100)은 항목 128에 도시된 바와 같은 k-mer GTTA...AC의 서명과, 항목 126에 나타낸 바와 같은 k-mer GTTA...AC에 대응하는 값을 저장할 수 있다. 일부 구현예에서, 해시 테이블(124)은 단일 어레이의 단일 차원을 따라 요소 내에 서명 및 값을 저장하는 단일 어레이이다. 일부 구현예에서, 해시 테이블(124) 내에서 사용되는 서명은 단일 바이트로서 저장되고, 서명과 연관된 k-mer의 위치와 같은 제1 속성으로서 저장된 값은 4바이트 메모리 단위로 저장된다. 일부 구현예에서, 게놈 데이터의 서브세트의 주어진 k-mer는, 게놈 데이터의 서브세트의 각각의 항목이 해시 테이블(124)의 셀 내에서 5바이트의 메모리를 차지하도록, 5바이트 메모리 단위로 해시 테이블(124) 내에 저장된다.
도 3은 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 사용하기 위한 시스템(300)의 일 실시예를 도시하는 다이어그램이다. 시스템(300)은, 컴퓨터(306), 본 실시예에서 해시 연산 모듈(308) 및 발생 카운터 모듈(310)을 포함하는 필터 모듈(307), 후보 생성 모듈(316), 분류 모듈(322), 및 스코어링 및 출력 모듈(326)을 포함한다. 일부 구현예에서, 도 1의 컴퓨터(106)는 컴퓨터(306)에 통신 가능하게 연결된다. 일부 구현예에서, 컴퓨터(306)는 컴퓨터(106)에 의해 수행된 프로세스에 기초하여 해시 테이블(124) 또는 관련 데이터를 획득한다. 일부 구현예에서, 컴퓨터(306)와 컴퓨터(106)는 동일한 디바이스를 지칭한다. 일부 구현예에서, 컴퓨터(106), 컴퓨터(306), 또는 둘 모두는 핵산 시퀀서일 수 있다.
도 3의 실시예에서, 게놈 데이터 판독(302)은 핵산 서열 판독이다. 컴퓨터(306)는 게놈 데이터 판독(302)을 수신하고, 수신된 게놈 데이터 판독(302)을 도 1 및 도 2를 참조하여 설명된 시스템들 및 프로세스들 중 하나 이상, 또는 둘 모두를 사용하여 생성된 해시 테이블 내에 저장된 참조 게놈에 매핑할 수 있다. 예를 들어, 도 1에서 생성된 해시 테이블(124)은 참조 게놈을 저장하는 데 사용될 수 있다. 다음으로, 게놈 데이터의 후속 판독은 도 3 또는 도 4에 도시된 바와 같은 프로세스를 사용하여 해시 테이블(124)의 참조 게놈에 매핑될 수 있다.
도 3의 스테이지 A에서, 컴퓨터(306)는 게놈 데이터 판독(302)에 기초하여 생성된 k-mer 세트(304)를 획득할 수 있다. 도 1과 유사하게, k-mer 세트(304)는 게놈 데이터 판독(302) 내에서 적어도 한 번 발현되는 하나 이상의 뉴클레오티드 서열을 포함한다. 컴퓨터(306)는 처리를 위해 k-mer 세트(304)를 수신할 수 있다. 도 3의 실시예에서, k-mer 세트(304)는 게놈 데이터 판독(302)의 판독에서 식별된 k-mer를 나타낼 수 있다. 게놈 데이터 판독(302)은 도 1에서 생성된 해시 테이블(124)과 같은 해시 테이블을 사용하여 참조 게놈에 매핑될 수 있다.
도 3의 스테이지 B에서, 해시 연산 모듈(308) 및 발생 카운터 모듈(310)은 도 1의 해시 연산 모듈(108) 및 발생 카운터 모듈(114)을 참조하여 논의된 동작과 유사한 동작을 수행할 수 있다. 예를 들어, 해시 연산 모듈(308) 및 발생 카운터 모듈(310)은 k-mer 세트(304)에 대해 필터링을 수행하는 한편, 해시 연산 모듈(108) 및 발생 카운터 모듈(114)은 k-mer 세트(104)에 대해 필터링을 수행한다. 명세서 내에서 논의되는 바와 같이, 게놈 데이터가 상세하게 설명되지만, 수신된 데이터의 다른 형태는 컴퓨터(106) 및 컴퓨터(306)와 같은 엔티티에 의해 수신될 수 있다. 수신된 다른 형식의 데이터는 관련 모듈에 의해서 유사하게 처리될 수 있다. 처리 단계는 수신된 데이터의 다른 형식에 기초하여 변경될 수 있다. 논의된 바와 같이, 컴퓨터(306) 또는 컴퓨터(106)는 컴퓨터(306) 또는 컴퓨터(106)가 수신하는 데이터의 형태, 유형 또는 값에 따라 작동을 변경할 수 있다.
일부 구현예에서, 다른 형태의 필터링이 사용될 수 있다. 예를 들어, 해시 연산 모듈(308)과 발생 카운터 모듈(310) 모두가 k-mer 세트(304)에서 연산하는 대신, 해시 연산 모듈(308)은, 해시 값을 생성하고 해시 값에 기초하여 여기에서 제2 k-mer 세트(314)로 지칭되는 k-mer 세트(304)의 서브세트를 결정하는 유일한 필터 프로세스를 수행할 수 있다. 일부 경우에서, 해시 연산 모듈(308) 또는 발생 카운터 모듈(310) 대신에 또는 이에 더하여, 다른 형태의 필터링이 사용된다.
일부 구현예에서, 필터링은 컴퓨터에서 실행되는 다양한 컴퓨터 프로그램을 포함할 수 있다. 예를 들어, 아래 알고리즘 3에서 보여지는 바와 같이, 컴퓨터 프로그램은 하나 이상의 시스템 변수를 시작하고, 하나 이상의 시스템 변수에 기초하여 하나 이상의 연산을 수행할 수 있다. 일부 경우에서, 필터링될 항목을 결정하는 데에는 'if' 문 또는 기타 조건부 코딩 연산이 사용될 수 있다.
Figure pct00009
위에서 논의된 필터링 프로세스와 유사하게, 하나 이상의 k-mer를 포함하는 k-mer 세트(304)는 하나 이상의 해시 값, 및 발생 횟수를 나타내는 하나 이상의 값을 계산하는 데 사용될 수 있으며, 여기서 k-mer 세트(304)의 각각의 k-mer는 게놈 데이터 판독(302) 내에서 발생된다. 해시 값은, 주어진 k-mer의 해시 값에 기초하여, 해시 연산 모듈(308)이 시스템(300)의 추가 프로세스에서 k-mer를 포함하거나 k-mer를 포함하지 않도록 해시 연산 모듈(308)에 의해 생성되고 처리될 수 있다. 발생은, 주어진 k-mer의 발생 횟수에 기초하여, 발생 카운터 모듈(310)이 시스템(300)에서의 추가 프로세스에서 k-mer를 포함하거나 포함하지 않도록 발생 카운터 모듈(310)에 의해 생성 및 처리된다. 발생 카운터 모듈(310)에 의해 생성된 발생 값은 주어진 k-mer, 즉 k-mer의 뉴클레오티드 서열이 게놈 데이터 판독(302)의 더 큰 서열 내에 나타나는 횟수일 수 있다.
일부 구현예에서, 해시 연산 모듈(308)은 도 1을 참조하여 논의된 모듈로 연산과 유사한 모듈로 연산을 사용할 수 있다. 해시 연산 모듈(308)은 주어진 해시 값 모듈로 seedModValue을 계산할 수 있다. 일부 경우에서, seedModValue는 8과 같은 정수와 동일하다. 본 명세서는 특정 숫자에 한정되지 않는다. seedModValue의 값은 최적화 작동 또는 기타 다양한 매개변수에 따라 변경될 수 있다.
일부 구현예에서, 본원에서 논의된 하나 이상의 변수에 대한 특정 값 범위는 다른 가능한 값 범위보다 유리할 수 있다. 예를 들어, MaxSeedOccurrence는 해시 테이블(124)과 같은 주어진 해시 테이블 내에서 더 많은 k-mer가 인덱싱될 수 있도록 증가될 수 있다. 그러나, MaxSeedOccurrence를 증가시키는 것은 부분적으로 처리 시간을 증가시킬 수 있는 해시 테이블(124)의 메모리 사용 및 크기를 잠재적으로 증가시킬 수 있다. 매우 낮은 값은 해시 테이블을 기반으로 한 판독과 매칭되는 데이터 포인트가 더 적은 더 작은 해시 테이블로 이어질 수 있으며, 이로써, 해시 테이블을 기반으로 획득된 결과의 정확도를 잠재적으로 감소시킬 수 있다. 다양한 다른 절충점 및 효과는 하나 이상의 관련 변수에 따라 달라질 수 있다. 예를 들어, 주어진 k-mer 또는 시드의 길이를 나타내는 시드 길이, 주어진 판독의 길이를 나타내는 판독 길이, 사용된 특정 참조 게놈, 해시 테이블 내에 저장된 위치의 수 또는 관련 변수를 포함하는 하나 이상의 변수는 처리 상태, 사용자 선호도, 성능 또는 기타 조건에 따라 변경될 수 있다.
도 1 및 도 3의 실시예에서 사용된 seedModValue를 참조하면, 일부 구현예에서, seedModValue와 연관된 값은 k-mer 또는 다른 항목의 결과적인 필터링된 세트의 크기를 늘리기 위해 감소될 수 있다. 예를 들어, 극단적인 경우에, seedModValue는 여기에서 논의된 모듈로 연산이 0이 되는 경우 1의 값으로 감소될 수 있다. 0이 필터링된 세트에 포함된 주어진 k-mer를 결정하는 값인 구현에서, 모듈로 값 1은 k-mer 또는 기타 항목의 전체 세트가 최종 필터링된 세트로서 사용될 것을 의미한다. 일부 구현예에서, seedModValue에 대해 더 큰 수가 사용될 수 있다. 예를 들어, 극단적인 경우, seedModValue는 값 100으로 증가될 수 있다. 높은 seedModValue 값을 가진 결과적인 필터링 작동은 최종 필터링 결과에 더 적은 항목을 남길 것이다. 일부 경우에서, 이는 더 큰 수의 매핑되지 않은 판독으로 이어질 수 있다. 약 100개의 뉴클레오티드 판독 길이의 경우, 100을 초과하는 seedModValue의 값은 잠재적으로 너무 많은 판독이 매핑되지 않는 것으로 이어질 수 있고, 따라서 일반적으로 효과적인 처리로 귀결되지 않을 것이다. 그러나, 대략 1000개의 뉴클레오티드의 더 긴 판독의 경우, seedModValue의 더 높은 값이 잠재적으로 더 유리할 수 있다.
MaxSeedOccurrenceseedModValue 모두는 해시 테이블 크기에 직접적인 영향을 미칠 수 있다. 주어진 해시 테이블에 대한 메모리 사용은, 해시 테이블의 각각의 셀의 크기와 주어진 양의 값에 대해 충분한 셀을 생성하는 데 사용되는 로딩 팩터를 곱한 필터링 후 유지되는 시드 또는 k-mer 수로 정의될 수 있다. 셀당 5바이트가 되는 1바이트 서명 및 4바이트 값의 경우를 고려하면, 해시 테이블(124)과 같은 해시 테이블의 각각의 셀은 5바이트의 메모리를 차지할 수 있다. 설명을 위해, 인간 게놈의 예를 고려한다. 인간 게놈은 약 30억 개의 뉴클레오티드를 포함한다. 일부 경우에서, 인간 게놈으로부터, 시드 길이를 포함한 하나 이상의 변수에 따라 약 30억 개의 k-mer가 유도될 수 있다. 도 1 및 도 3의 실시예에서 논의된 해시 또는 발생 필터링과 같은 임의의 필터링 없이, 인간 게놈과 연관된 k-mer의 필터링된 세트는 인간 게놈과 연관된 k-mer의 초기 세트, 즉, 약 30억과 동일할 것이다. 5바이트의 셀에 대응하는 k-mer가 저장되고, 로딩 팩터 2를 기준으로 해시 테이블이 생성되면, 30기가바이트의 해시 테이블에 인간 게놈이 저장될 수 있다. 예를 들어, 8의 seedModValue를 사용하는 해시 필터링과 20의 MaxSeedOccurrence를 사용하는 발생 필터링에 의하면. 동일한 인간 게놈을 약 1.4 GB(기가바이트)에 저장할 수 있다. seedModValue 값을 4로 변경하는 것은 메모리 사용을 대략 두 배로 할 것이다. 일부 구현예에서, 주어진 응용분야에 대해 원하는 메모리 사용에 따라 값이 선택될 수 있다. 가장 유리한 값은, seedModValue, MaxSeedOccurrence, 시드 길이, 판독 길이, 시퀀싱 오류율, 또는 기타 관련 매개변수를 포함하는 하나 이상의 값의 값을 자동으로 변경하는 것을 포함하는 하나 이상의 최적화 프로세스를 기반으로 선택될 수 있다.
일부 구현예에서, 발생 카운터 모듈(310)은 도 1의 발생 카운터 모듈(114)과 유사한 발생 임계값을 사용할 수 있다. 예를 들어, 발생 카운터 모듈(310)은 k-mer 세트(304)의 각각의 k-mer에 대해 계산된 각각의 발생 값을 발생 임계값과 비교할 수 있다. 발생 값과 발생 임계값 사이의 비교를 기반으로, 발생 카운터 모듈(310)은 주어진 발생 값에 대응하는 시스템(300)을 사용하는 추가 프로세스에서 k-mer를 포함하거나 포함하지 않는다.
도 3의 실시예에서, k-mer 세트(304)는 필터링되어 제2 k-mer 세트(314)를 생성할 수 있다. 제2 k-mer 세트(314)는 k-mer 세트(304)의 서브세트이다. 일부 구현예에서, 제2 k-mer 세트(314)는 다른 필터링 기술에 기초하여 생성된다. 예를 들어, 해시 연산 모듈(308) 및 발생 카운터 모듈(310)에 의한 처리 대신에, 시스템(300)은 난수 생성기를 포함할 수 있고, 난수 생성기의 출력을 사용하여 k-mer 세트(304)의 서브세트를 생성할 수 있다. 후속 데이터 세트가 초기 데이터 세트보다 더 적은 수의 항목을 포함하도록 주어진 데이터 세트 내의 항목의 수를 줄이기 위해 해당 분야에 알려진 다른 필터링 기술이 또한 사용될 수 있다. 일부 구현예에서, 랜덤 알고리즘 또는 고정 스트라이드(stride) 길이 인덱싱과 같은 도 1을 참조하여 논의된 필터링 기술이 또한 사용될 수 있다.
도 3의 스테이지 C에서, 후보 생성 모듈(316)은 후보 정렬 위치(320)를 생성한다. 일부 경우에서, 후보 정렬 위치는 참조 서열 위치로 지칭될 수 있다. 후보 정렬 위치(320)는, 참조 게놈 내에서, 게놈 데이터 판독(302)에 의해 표현된 판독에 대응하는 데이터가 발생되는 곳에 대응하는 정보를 포함한다. 일부 구현예에서, 시스템(300)은, k-mer 세트(304) 내의 k-mer의 위치에 기초하여 결정하기 위해 k-mer 세트(304) 내의 게놈 데이터 판독(302)에 대응하는 k-mer를 사용할 수 있으며, 여기서 게놈 데이터 판독(302)에 의해 표현된 판독은 참조 게놈과 매칭된다. 참조 게놈은 도 1에 나타낸 바와 같이 해시 테이블에 저장될 수 있다. 해시 테이블은 k-mer 세트(304)의 하나 이상의 k-mer에 대한 대응 위치를 결정하기 위해 시스템(300)에 의해 사용될 수 있다.
후보 생성 모듈(316)은 제2 k-mer 세트(314)의 k-mer에 기초하여 후보 정렬 위치(320)를 생성할 수 있다. 예를 들어, 도 3에 나타낸 바와 같이, k-mer CATT...GG는 참조 게놈 상의 게놈 데이터 판독(302)의 위치 "위치 X"에 대응한다. 항목 318은 k-mer CATT...GG에 대응하는 후보 정렬 위치를 생성하는 프로세스를 보여준다. k-mer CATT...GG가 하나 이상의 필터링 단계를 통과한 후, k-mer CATT...GG는 해시 테이블(318c)에서 쿼리된다. 일부 구현예에서, 해시 테이블(318c)은 도 1의 해시 테이블(124)과 동일하다. k-mer CATT...GG에 대응하는 참조 게놈 위치에 대응하는 값(318b)는 후보 생성 모듈(316)에 의해 획득될 수 있다. 후보 생성 모듈(316)은 또한, 항목 318a에 나타낸 바와 같이 게놈 데이터 판독(302) 내의 k-mer CATT...GG의 위치를 획득한다. 항목 318a에 표시된 게놈 데이터 판독(302) 내 k-mer CATT...GG의 위치 및 해시 테이블(318c)에 대응하는 항목 318b에 표시된 참조 게놈 내의 k-mer CATT...GG의 위치에 기초하여, 후보 생성 모듈(316)은 k-mer CATT...GG에 대응하는 참조 게놈에 매핑된 게놈 데이터 판독(302)의 매핑에 대응하는 위치 "위치 X"를 결정할 수 있다.
일부 구현예에서, 후보 생성 모듈(316)은 하나 이상의 획득된 위치에 기초하여 하나 이상의 위치를 계산할 수 있다. 예를 들어, k-mer CATT...GG에 대해, 후보 생성 모듈(316)은 항목 318a에 도시된 게놈 데이터 판독(302) 내의 k-mer CATT...GG의 위치, 및 해시 테이블(318c)에 대응하는 항목 318b에 표시된 참조 게놈 내의 k-mer CATT...GG의 위치를 획득할 수 있고, 두 위치를 기반으로 위치 "위치 X"를 계산할 수 있다. 예를 들어, 매칭되는 서열의 위치가 두 개 이상의 판독 사이에서 매칭되는 서열의 시작으로서 저장되는 구현예에서, 후보 생성 모듈(316)은 참조 게놈에 대응하는 해시 테이블(318c) 내의 k-mer CATT...GG의 위치로부터 게놈 데이터 판독(302) 내의 k-mer CATT...GG의 위치를 빼는 것에 기초하여 위치 "위치 X"를 생성할 수 있다. 후보 생성 모듈(316)은 유사한 방법을 사용하여 k-mers CATT...GG, AGTC...CT, 및 GGAT...CC에 대한 위치를 생성할 수 있다.
도 3의 스테이지 D에서, 분류 모듈(322)은 후보 정렬 위치(320)를 분류할 수 있다. 일반적으로 적절한 분류 기술이 사용될 수 있다. 도 3의 실시예에서, 분류 모듈(322)은 계산된 카운트에 기초하여 후보 정렬 위치(320)를 분류할 수 있다. 계산된 카운트는 후보 정렬 위치(320)의 주어진 후보 정렬 위치에 대한 지원 k-mer의 수를 나타낸다. 예를 들어, 후보 정렬 위치(320)의 위치들 중 하나 이상은 중복일 수 있으며, 이는 제2 k-mer 세트(314)의 2개 이상의 k-mer가 해시 테이블(318c)로 표현된 참조 게놈 상의 게놈 데이터 판독(302)의 동일한 정렬에 대응한다는 것을 나타낸다. 2개의 k-mer가 동일한 정렬에 대응하는 경우, 해당 정렬의 카운트는 2이다. 도 3의 실시예에서, 위치 "위치 X"에 대한 카운트는 카운트 X이고, 위치 "위치 Y"에 대한 카운트는 카운트 Y이고, 위치 "위치 Z"에 대한 카운트는 카운트 Z이다. 정렬은, 카운트 X 및 카운트 Z보다 더 큰 카운트 Y가 위치 X 및 위치 Z 위에 저장되는 위치 Y가 되도록 내림차순으로 분류될 수 있다. 마찬가지로, 카운트 X가 카운트 X보다 더 커서, 위치 X가 위치 Z 위에 저장된다. 도 3의 예에서, 정렬 위치는 내림차순으로 분류될 수 있지만, 다른 가능한 분류 순서가 본원에서 고려된다.
정렬 처리 단계를 최적화하기 위해 내림차순을 기반으로 정렬을 분류하는 것이 사용될 수 있다. 예를 들어, 지원 k-mer 수가 더 많은 정렬은 지원 k-mer 수가 더 적은 정렬보다 더 적은 불일치를 갖는 경향이 있다. 각각의 k-mer은 최종 정렬을 선택하기 전에 다수의 불일치를 결정하기 위해 조사될 수 있다. 일 세트의 기준을 먼저 통과할 가능성이 더 높은 정렬을 먼저 처리함으로써, 시스템(300)은 정렬의 처리 속도를 높일 수 있다.
스테이지 E에서, 스코어링 및 출력 모듈(326)은 위치 Y에 대응하는 분류된 후보 정렬 리스트(324)의 제1 위치를 획득할 수 있다. 위치 Y는 해시 테이블(318c)에 대응하는 참조 게놈에 기초하여 스코어링된다. 도 3의 실시예에서, 스코어링 및 출력 모듈(326)은 위치 Y와 연관된 k-mer AGTC...CT에 대응하는 게놈 데이터 판독(302)과 같은 게놈 데이터와 해시 테이블(318c)에 대응하는 참조 게놈 데이터 사이의 다수의 불일치를 계산할 수 있으며, 여기서 참조 게놈 데이터는 해시 테이블(318c)을 생성하는 데 사용된다. 불일치는, 참조 게놈 데이터의 뉴클레오티드와 매칭되지 않는 게놈 데이터 판독(302)의 뉴클레오티드를 지칭할 수 있다. 예를 들어, 매칭되는 서열을 따라 주어진 위치에서, 한 서열은 뉴클레오티드 A에 대응하는 한편, 다른 서열은 뉴클레오티드 G에 대응할 수 있다. 이러한 불일치는 스코어링 및 출력 모듈(326)에 의해 계산될 수 있다.
스코어링 및 출력 모듈(326)은 정렬 위치 Y에 대응하는 총 불일치 수를 생성할 수 있고, 스코어 A를 생성하며, 여기서 스코어 A는 적어도 다수의 불일치를 나타낸다. 일부 경우에서, 스코어 A를 포함하는 스코어(328)를 생성하는 데 다른 매개변수 또는 값이 사용될 수 있다. 도 3의 예에서, 스코어링 및 출력 모듈(326)은 스코어 A를 임계값(330)과 비교할 수 있다. 임계값(330)은, 일반적으로, 임의의 적절한 값일 수 있다. 도 3의 실시예에서, 임계값(330)은 값 4와 동일하며, 여기서 4는 다수의 불일치를 나타낸다. 일부 구현예에서, 다른 값이 사용될 수 있다. 예를 들어, 임계값(330)에 대한 다른 적합한 값을 결정하는 데 최적화 프로세스가 사용될 수 있다. 스코어링 및 출력 모듈(326)은, 스코어 A를 임계값(330)과 비교하는 것에 기초하여, 스코어 A가 임계값을 만족하지 못하므로, 위치 Y가 선택되지 않는다고 결정할 수 있다. 스코어링 및 출력 모듈(326)은 다음으로 하나 이상의 다른 위치를 처리할 수 있다.
스코어링 및 출력 모듈(326)은 정렬 위치 X에 대응하는 총 불일치 수를 생성할 수 있고, 스코어 B를 생성하며, 여기서 스코어 B는 적어도 다수의 불일치를 나타낸다. 도 3의 예에서, 스코어링 및 출력 모듈(326)은 스코어 B를 임계값(330)과 비교할 수 있다. 스코어링 및 출력 모듈(326)은 스코어 B와 임계값(330)의 비교에 기초하여 스코어 B가 임계값(330)을 만족한다고 결정할 수 있다. 스코어 B가 임계값(330)을 만족한다는 결정에 기초하여, 스코어링 및 출력 모듈(326)은 선택된 후보(332)를 출력할 수 있다. 선택된 후보(332)는 k-mer CATT...GG, 위치 X, 또는 스코어 B를 나타내는 데이터를 포함할 수 있다.
일부 구현예에서, 어떤 스코어도 기준을 충족시키지 않는다. 이 경우, 주어진 기준에 따라 스코어(328) 중에서 하나의 스코어가 선택될 수 있다. 예를 들어, 주어진 기준은, 최소량의 불일치를 갖는 정렬을 나타내는 최소 스코어를 결정하기 위해 하나 이상의 스코어(328)를 비교하는 것을 포함할 수 있다. 다음으로, 가장 낮은 스코어에 대응하는 위치가 선택된 후보로서 출력될 수 있다.
스테이지 F에서, 컴퓨터(306)는 선택된 후보(332)를 획득할 수 있고, 선택된 후보(332)를 나타내는 데이터(334)를 다른 엔티티 또는 프로세스에 전송할 수 있다. 일부 경우에서, 컴퓨터(306)는 통신 네트워크를 통해 데이터(334)를 다른 엔티티 또는 디바이스에 전송할 수 있다. 예를 들어, 다른 디바이스는 게놈 데이터 판독(302)과 관련된 선택된 후보에 대한 요청을 전송할 수 있다. 컴퓨터(306)는 선택된 후보(332)를 다른 디바이스에 전송할 수 있다.
도 4는 소프트웨어 가속 게놈 판독 매핑을 위한 해시 테이블을 생성하기 위한 프로세스(400)의 일 실시예를 예시하는 흐름도이다. 프로세스(400)는 하나 이상의 전자 시스템, 예를 들어 도 3의 시스템(300)에 의해 수행될 수 있다.
프로세스(400)는 하나 이상의 컴퓨터에 의해 게놈 데이터 판독으로부터 k-mer 시드를 획득하는 것을 포함한다(402). 일부 구현예에서, k-mer 시드는 게놈 데이터 판독과 연관된 더 긴 뉴클레오티드 서열을 기반으로 하는 뉴클레오티드 서열의 표현이다. 일부 구현예에서, 게놈 데이터 판독은 컴퓨터 또는 하드웨어 가속 디바이스에서 수행된 판독 분석 작업의 결과이다.
프로세스(400)는 획득된 k-mer 시드에 기초하여 하나 이상의 컴퓨터에 의해 게놈 서명을 생성하는 것을 포함한다(404). 일부 구현예에서, 도 3의 후보 생성 모듈(316)은 획득된 k-mer 시드의 서명을 생성하기 위해 부분적으로 사용된다. 일부 구현예에서, 획득된 k-mer 시드의 서명은 해시 함수를 기반으로 생성된다. 예를 들어, 해시 함수는 획득된 k-mer 시드의 표현에서 작동할 수 있다. 해시 함수는 게놈 서명으로서 사용될 수 있는 결과를 생성할 수 있다. 일부 구현예에서, 해시 함수가 결과를 생성하기 전이나 후에 하나 이상의 중간 처리 단계가 채용될 수 있다. 예를 들어, 해시 함수는 결과를 생성할 수 있고, 게놈 서명을 생성하기 위해 결과에 제2 작동이 적용될 수 있다.
프로세스(400)는, 하나 이상의 컴퓨터에 의해, 해시 데이터 구조를 사용하여 k-mer 시드의 적어도 일부분과 매칭되는 하나 이상의 참조 서열 위치를 결정하는 것을 포함한다(406). 일부 구현예에서, 해시 데이터 구조는 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 미리 결정된 게놈 서명이 유도된 k-mer 시드의 적어도 일부분과 매칭되는 하나 이상의 참조 서열 위치를 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함한다. 일부 구현예에서, 미리 결정된 게놈 서명은 메모리 저장장치의 1바이트를 차지한다. 일부 구현예에서, 해시 데이터 구조는 도 1에 도시된 해시 테이블(124)을 생성하는 프로세스와 유사하게 생성된다.
프로세스(400)는, 하나 이상의 컴퓨터에 의해, 하나 이상의 정렬 스코어에 기초하여 획득된 k-mer 시드에 대한 실제 정렬로서 결정된 참조 서열 위치 중 적어도 하나를 선택하는 것을 포함한다(408). 일부 구현예에서, 하나 이상의 위치가 결정되고 하나 이상의 정렬 스코어에 기초하여 획득된 k-mer 시드에 대한 실제 정렬을 결정하기 위해 하나 이상의 위치를 스코어링하는 방법이 사용된다. 예를 들어, 주어진 정렬에 대한 다수의 불일치가 계산될 수 있으며, 여기서 다수의 불일치가 참조 뉴클레오티드 서열의 하나 이상의 뉴클레오티드와 매칭되지 않는 판독의 하나 이상의 뉴클레오티드를 포함할 수 있다. 불일치는 판독의 하나 이상의 뉴클레오티드의 표시 및 참조 뉴클레오티드 서열의 하나 이상의 뉴클레오티드의 표시 및 참조 뉴클레오티드 서열에 상대적인 판독의 주어진 후보 시작 위치에 기초한 둘 사이의 비교에 기초하여 계산될 수 있다.
도 5는 다변수 서수 데이터에 기초한 조인트 모델을 사용하여 의료 분석을 생성하기 위한 시스템을 구현하는 데 사용될 수 있는 컴퓨터 시스템(500) 구성요소의 도면이다.
컴퓨팅 디바이스(500)는 랩톱, 데스크톱, 워크스테이션, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 메인프레임, 및 다른 적합한 컴퓨터와 같은 다양한 형태들의 디지털 컴퓨터들을 표현하도록 의도된다. 컴퓨팅 디바이스(550)는 개인 휴대 정보 단말기, 셀룰러 전화, 스마트폰, 및 다른 유사한 컴퓨팅 디바이스들과 같은 다양한 형태들의 모바일 기기들을 표현하려는 것이다. 추가적으로, 컴퓨팅 디바이스(500 또는 550)는 범용 직렬 버스(USB) 플래시 드라이브들을 포함할 수 있다. USB 플래시 드라이브들은 운영 체제들 및 다른 애플리케이션들을 저장할 수 있다. USB 플래시 드라이브들은 다른 컴퓨팅 디바이스의 USB 포트 내로 삽입될 수 있는 무선 송신기 또는 USB 커넥터와 같은 입력/출력 컴포넌트들을 포함할 수 있다. 본원에 도시된 컴포넌트들, 그들의 접속들 및 관계들, 및 그들의 기능들은 단지 예들일 뿐이며, 본원에서 설명되고/되거나 청구되는 본 발명들의 구현예들을 제한하고자 하는 것은 아니다.
컴퓨팅 디바이스(500)는 프로세서(502), 메모리(504), 저장 디바이스(506), 메모리(504) 및 고속 확장 포트들(510)에 접속되는 고속 인터페이스(508), 및 저속 버스(514) 및 저장 디바이스(506)에 접속되는 저속 인터페이스(512)를 포함한다. 컴포넌트들(502, 504, 506, 508, 510, 512) 각각은 다양한 버스들을 사용하여 상호 접속되고, 공통 마더보드 상에 또는 적합한 다른 방식으로 장착될 수 있다. 프로세서(502)는, 고속 인터페이스(508)에 커플링된 디스플레이(516)와 같은 외부 입력/출력 디바이스 상에 GUI에 대한 그래픽 정보를 디스플레이하기 위해 메모리(504) 내에 또는 저장 디바이스(506)에 저장된 명령어들을 포함하는, 컴퓨팅 디바이스(500) 내의 실행을 위한 명령어들을 프로세싱할 수 있다. 다른 구현예들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 메모리의 유형들과 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(500)이 접속될 수 있는데, 이때 각각의 디바이스는, 예컨대 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템으로서, 필요한 동작들의 부분들을 제공한다.
메모리(504)는 컴퓨팅 디바이스(500) 내에 정보를 저장한다. 하나의 구현예에서, 메모리(504)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현예에서, 메모리(504)는 비휘발성 메모리 유닛 또는 유닛들이다. 메모리(504)는 또한, 자기 또는 광 디스크와 같은 다른 형태의 컴퓨터 판독가능 매체일 수 있다.
저장 디바이스(506)는 컴퓨팅 디바이스(500)를 위한 대용량 저장소를 제공할 수 있다. 하나의 구현예에서, 저장 디바이스(506)는 컴퓨터 판독가능 매체, 예컨대 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 내의 디바이스들 또는 다른 구성들을 포함하는 디바이스들의 어레이일 수 있거나 이들을 포함할 수 있다. 컴퓨터 프로그램 제품은 정보 캐리어 내에 유형적으로 구현된다. 컴퓨터 프로그램 제품은 또한, 실행될 때 전술된 것들과 같은 하나 이상의 방법들을 수행하는 명령어들을 포함할 수 있다. 정보 캐리어는 메모리(504), 저장 디바이스(506), 또는 프로세서(502) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체이다.
고속 제어기(508)는 컴퓨팅 디바이스(500)에 대한 대역폭 집약적 동작들을 관리하는 한편, 저속 제어기(512)는 더 낮은 대역폭 집약적 동작들을 관리한다. 기능들의 이러한 할당은 단지 일례이다. 하나의 구현예에서, 고속 제어기(508)는, 예컨대 그래픽 프로세서 또는 가속기를 통해 메모리(504), 디스플레이(516)에, 그리고 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(510)에 커플링된다. 그 구현예에서, 저속 제어기(512)는 저장 디바이스(506) 및 저속 확장 포트(514)에 커플링된다. 다양한 통신 포트들, 예컨대 USB, 블루투스, 이더넷, 무선 이더넷을 포함할 수 있는 저속 확장 포트는 하나 이상의 입력/출력 디바이스들, 예컨대 키보드, 포인팅 디바이스, 마이크로폰/스피커 쌍, 스캐너, 또는 스위치나 라우터와 같은 네트워킹 디바이스에, 예를 들어 네트워크 어댑터를 통해 커플링될 수 있다. 컴퓨팅 디바이스(500)는 도면에 도시된 바와 같이 다수의 다양한 형태로 구현될 수 있다. 예를 들어, 이것은 표준 서버(520)로서, 또는 이러한 서버들의 그룹으로 다수 회 구현될 수 있다. 이것은 또한 랙 서버 시스템(524)의 일부로서 구현될 수 있다. 더욱이, 그것은 랩톱 컴퓨터(522)와 같은 개인용 컴퓨터에서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(500)로부터의 컴포넌트들은 디바이스(550)와 같은 모바일 기기(도시되지 않음) 내의 다른 컴포넌트들과 조합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(500, 550) 중 하나 이상을 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(500, 550)로 구성될 수 있다.
컴퓨팅 디바이스(500)는 도면에 도시된 바와 같이 다수의 다양한 형태로 구현될 수 있다. 예를 들어, 이것은 표준 서버(520)로서, 또는 이러한 서버들의 그룹으로 다수 회 구현될 수 있다. 이것은 또한 랙 서버 시스템(524)의 일부로서 구현될 수 있다. 더욱이, 그것은 랩톱 컴퓨터(522)와 같은 개인용 컴퓨터에서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(500)로부터의 컴포넌트들은 디바이스(550)와 같은 모바일 기기(도시되지 않음) 내의 다른 컴포넌트들과 조합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(500, 550) 중 하나 이상을 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(500, 550)로 구성될 수 있다.
컴퓨팅 디바이스(550)는, 다른 컴포넌트들 중에서도, 프로세서(552), 메모리(564), 및 디스플레이(554), 통신 인터페이스(566), 및 송수신기(568)와 같은 입력/출력 디바이스를 포함한다. 디바이스(550)에는 또한, 추가적인 저장소를 제공하기 위해, 마이크로 드라이브 또는 다른 디바이스와 같은 저장 디바이스가 제공될 수 있다. 컴포넌트들(550, 552, 564, 554, 566, 및 568) 각각은 다양한 버스들을 사용하여 상호 접속되고, 몇몇 컴포넌트들은 공통 마더보드 상에 또는 적합한 다른 방식으로 장착될 수 있다.
프로세서(552)는 메모리(564)에 저장된 명령어들을 포함하는, 컴퓨팅 디바이스(550) 내의 명령어들을 실행시킬 수 있다. 프로세서는 별개의 그리고 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 더욱이, 프로세서는 다수의 아키텍처들 중 임의의 것을 사용하여 구현될 수 있다. 예를 들어, 프로세서(510)는 CISC(Complex Instruction Set Computer) 프로세서, RISC(Reduced Instruction Set Computer) 프로세서, 또는 MISC(Minimal Instruction Set Computer) 프로세서일 수 있다. 프로세서는, 예를 들어, 디바이스(550)의 다른 컴포넌트들의 조정, 예컨대 사용자 인터페이스들의 제어, 디바이스(550)에 의해 실행되는 애플리케이션들, 및 디바이스(550)에 의한 무선 통신을 제공할 수 있다.
프로세서(552)는 디스플레이(554)에 커플링된 디스플레이 인터페이스(556) 및 제어 인터페이스(558)를 통해 사용자와 통신할 수 있다. 디스플레이(554)는, 예를 들어, TFT(Thin-Film-Transistor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 다른 적합한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(556)는 그래픽 및 다른 정보를 사용자에게 제시하기 위해 디스플레이(554)를 구동시키기 위한 적합한 회로부를 포함할 수 있다. 제어 인터페이스(558)는 사용자로부터 커맨드들을 수신할 수 있고 이들을 프로세서(552)에 제출하기 위해 변환할 수 있다. 더욱이, 디바이스(550)의 다른 디바이스들과의 근거리 통신을 가능하게 하도록, 프로세서(552)와 통신하는 외부 인터페이스(562)가 제공될 수 있다. 외부 인터페이스(562)는, 예를 들어, 일부 구현예들에서 유선 통신을 위해, 또는 다른 구현예들에서 무선 통신을 위해 제공될 수 있고, 다수의 인터페이스들이 또한 사용될 수 있다.
메모리(564)는 컴퓨팅 디바이스(550) 내에 정보를 저장한다. 메모리(564)는 컴퓨터 판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들, 또는 비휘발성 메모리 유닛 또는 유닛들 중 하나 이상으로서 구현될 수 있다. 확장 메모리(574)는 또한, 예를 들어, SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(572)를 통해 디바이스(550)에 제공되고 접속될 수 있다. 그러한 확장 메모리(574)는 디바이스(550)에 대한 여분의 저장 공간을 제공할 수 있거나, 디바이스(550)에 대한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 구체적으로, 확장 메모리(574)는 전술된 프로세스들을 수행하거나 보완하기 위한 명령어들을 포함할 수 있고, 보안 정보를 또한 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(574)는 디바이스(550)를 위한 보안 모듈로서 제공될 수 있고, 디바이스(550)의 보안 사용을 허용하는 명령어들로 프로그래밍될 수 있다. 더욱이, 보안 애플리케이션들은, 추가 정보와 함께, SIMM 카드들 - 예컨대, 식별 정보를 SIMM 카드에 해킹 불가능한 방식으로 둠 - 을 통해 제공될 수 있다.
메모리는, 하기에 논의되는 바와 같이, 예를 들어 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품이 정보 캐리어 내에 유형으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 때 전술된 것들과 같은 하나 이상의 방법들을 수행하는 명령어들을 포함한다. 정보 캐리어는, 예를 들어 송수신기(568) 또는 외부 인터페이스(562)를 통해 수신될 수 있는 메모리(564), 확장 메모리(574), 또는 프로세서(552) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체이다.
디바이스(550)는, 필요한 경우 디지털 신호 프로세싱 회로부를 포함할 수 있는 통신 인터페이스(566)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(566)는, 특히, GSM 음성 통화, SMS, EMS, 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS와 같은 다양한 모드들 또는 프로토콜들 하에서의 통신을 제공할 수 있다. 그러한 통신은, 예를 들어 무선 주파수 송수신기(568)를 통해, 일어날 수 있다. 더욱이, 단거리 통신은 예컨대 블루투스, Wi-Fi, 또는 다른 그러한 송수신기(도시되지 않음)를 사용하여 일어날 수 있다. 더욱이, GPS(Global Positioning System) 수신기 모듈(570)이 추가적인 내비게이션 및 위치 관련 무선 데이터를 디바이스(550)에 제공할 수 있고, 이는 디바이스(550) 상에서 실행되는 애플리케이션들에 의해 적절하게 사용될 수 있다.
디바이스(550)는 또한, 오디오 코덱(560)을 사용하여 청각적으로 통신할 수 있는데, 이는 사용자로부터 구두 정보(spoken information)를 수신할 수 있고 그것을 사용가능한 디지털 정보로 변환할 수 있다. 오디오 코덱(560)은 마찬가지로, 예컨대 디바이스(550)의 핸드셋(handset)에서, 예컨대 스피커를 통해, 사용자를 위한 가청 사운드를 생성할 수 있다. 그러한 사운드는 음성 전화 통화들로부터의 사운드를 포함할 수 있고, 기록된 사운드, 예컨대 음성 메시지들, 음악 파일들 등을 포함할 수 있고, 또한, 디바이스(550) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 포함할 수 있다.
컴퓨팅 디바이스(550)는 도면에 도시된 바와 같이 다수의 다양한 형태로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스는 셀룰러 전화기(580)로 구현될 수 있다. 컴퓨팅 디바이스는 또한, 스마트폰(582), 개인 휴대 정보 단말기, 또는 다른 유사한 모바일 기기의 일부로 구현될 수 있다.
본원에서 설명되는 시스템들 및 방법들의 다양한 구현예들은 디지털 전자 회로부, 집적 회로부, 특수 설계된 ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 그러한 구현예들의 조합들로 실현될 수 있다. 이들 다양한 구현예들은, 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령어들을 수신하고 그들에 데이터 및 명령어들을 송신하도록 커플링된, 전용 또는 범용일 수 있는, 적어도 하나의 프로그래밍가능 프로세서를 포함하는 프로그래밍가능 시스템 상에서 실행 가능한 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현예를 포함할 수 있다.
이러한 컴퓨터 프로그램(또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로서 알려짐)은 프로그래머블 프로세서를 위한 기계 명령어를 포함하고, 하이 레벨 절차(high-level procedural) 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에 사용되는 바와 같이, 용어 "기계 판독가능 매체", "컴퓨터 판독가능 매체"는, 기계 판독가능 신호로서 기계 명령어들을 수신하는 기계 판독가능 매체를 포함하는, 프로그래밍가능 프로세서에 기계 명령어들 및/또는 데이터를 제공하는 데 사용되는, 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스, 예를 들어 자기 디스크, 광 디스크, 메모리, PLD(Programmable Logic Device)를 지칭한다. "기계 판독 가능 신호"라는 용어는 프로그램 가능한 프로세서에 기계 명령어 및/또는 데이터를 제공하는 데 사용되는 모든 신호를 지칭한다.
사용자와의 상호작용을 제공하기 위해, 본원에서 설명되는 시스템들 및 기법들은 디스플레이 디바이스, 예컨대, 사용자에게 정보를 디스플레이하기 위한 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스가 또한 사용자와의 상호 작용을 제공하기 위해서 사용될 수 있으며, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예컨대 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다.
본원에서 설명되는 시스템들 및 기법들은, 예컨대 데이터 서버로서 백 엔드(back end) 컴포넌트를 포함하는, 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하는, 또는 프론트 엔드(front end) 컴포넌트, 예컨대 그래픽 사용자 인터페이스 또는 사용자가 본원에서 설명되는 시스템들 및 기법들의 구현과 상호작용할 수 있게 하는 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하는, 또는 그러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성 요소는, 예를 들어, 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 대체적으로 서로 원격이며, 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
다수의 실시예들이 기술되었다. 그럼에도 불구하고, 본 발명의 사상 및 범위로부터 벗어남이 없이 다양한 변경들이 이루어질 수 있다는 것이 이해될 것이다. 더욱이, 도면들에 묘사된 논리 흐름들은 바람직한 결과들을 달성하기 위해 도시된 특정 순서, 또는 순차적 순서를 요구하지 않는다. 더욱이, 다른 단계들이 제공될 수 있거나, 설명된 흐름들로부터 단계들이 제거될 수 있고, 다른 컴포넌트들이 설명된 시스템들에 추가되거나 그로부터 제거될 수 있다. 따라서, 다른 실시형태는 하기의 청구범위의 범위 내에 있다.
본 발명의 실시형태 및 본원에 설명된 모든 기능적 작동은, 본원에 개시된 구조 및 이들의 구조적 균등물을 포함하는, 디지털 전자 회로로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어로, 또는 이들의 하나 이상의 조합으로 구현될 수 있다. 본 발명의 실시형태는 하나 이상의 컴퓨터 프로그램 제품으로서, 예를 들어, 데이터 처리 장치에 의한 실행을 위해 또는 데이터 처리 장치의 작동을 제어하기 위해 컴퓨터 판독 가능 매체 상에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 디바이스, 기계 판독 가능 저장 기판, 메모리 디바이스, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 구성, 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 처리 장치"라는 용어는, 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하여, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 기계를 포함한다. 장치는, 하드웨어에 추가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파되는 신호는 인위적으로 생성되는 신호이며, 예를 들어, 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성되는 기계 생성 전기, 광학 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 공지됨)은, 컴파일된 또는 해석된 언어를 포함하여, 모든 형태의 프로그래밍 언어로 작성될 수 있고, 이것은 독립 실행형 프로그램 또는 모듈, 구성 요소, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배치될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일과 대응하지는 않는다. 프로그램은 다른 프로그램 또는 데이터(예: 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부분에, 논의되는 프로그램에 지정된 단일 파일에, 또는 다수의 조직화된 파일(예: 하나 이상의 모듈, 하위 프로그램, 또는 코드 부분을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서, 또는 한 사이트에 위치되거나 여러 사이트에 분산되어 통신 네트워크로 연결된 다수의 컴퓨터에서 실행되도록 배치될 수 있다.
본원에 설명된 프로세스 및 논리 흐름은, 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한, 현장 프로그래머블 게이트 어레이(FPGA: field programmable gate array) 또는 특정 용도 지향 집적 회로(ASIC: application specific integrated circuit)와 같은 특수 목적 논리 회로에 의해서 수행될 수 있고, 장치는 또한, 현장 프로그래머블 게이트 어레이 또는 특정 용도 지향 집적 회로와 같은 특수 목적 논리 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예를 들어, 범용 및 특수 목적 마이크로프로세서 모두와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 모두로부터 명령어와 데이터를 수신한다. 컴퓨터의 필수 요소는 명령어를 수행하기 위한 프로세서, 및 명령어와 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광자기 디스크, 또는 광 디스크를 포함하거나, 이로부터 데이터를 수신하거나 이에 데이터를 전송하거나, 또는 두 가지 모두를 하도록 작동 가능하게 결합될 것이다. 그러나 컴퓨터는 이러한 디바이스를 필요로 하지 않는다. 또한, 컴퓨터는, 몇 가지 예를 들어서, 태블릿 컴퓨터, 이동 전화, PDA(personal digital assistant), 모바일 오디오 플레이어, GPS(Global Positioning System) 수신기와 같은 다른 기기에 내장될 수 있다. 컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스를 포함하여, 모든 형태의 비휘발성 메모리, 미디어 및 메모리 디바이스; 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동 가능한 디스크; 광자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나, 이에 통합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 발명의 실시형태는 디스플레이 디바이스, 예컨대, 사용자에게 정보를 디스플레이하기 위한 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스가 또한 사용자와의 상호 작용을 제공하기 위해서 사용될 수 있으며, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예컨대 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다.
본 발명의 실시형태는, 예컨대 데이터 서버로서 백 엔드(back end) 컴포넌트를 포함하는, 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하는, 또는 프론트 엔드(front end) 컴포넌트, 예컨대 그래픽 사용자 인터페이스 또는 사용자가 본원에서 설명되는 시스템들 및 기법들의 구현과 상호작용할 수 있게 하는 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하는, 또는 그러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성 요소는, 예를 들어, 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크("LAN") 및 광역 네트워크("WAN"), 예를 들어, 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 대체적으로 서로 원격이며, 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
본 명세서는 많은 세부 사항을 포함하지만, 이들은 본 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로서 해석되어서는 안 되며, 오히려 본 발명의 특정 실시형태에 특이적인 특징부의 설명으로서 해석되어야 한다. 별개의 실시형태들의 맥락으로 본원에 설명된 특정 특징들은 또한, 단일 실시형태에서 조합하여 구현될 수 있다. 역으로, 단일 실시형태의 맥락에서 설명된 다양한 특징부는 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다수의 실시형태로 구현될 수 있다. 또한, 위에서 기능이 특정 조합으로 작동하는 것으로 설명되고 초기에 이렇게 청구될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징부는 일부 경우에 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형례에 관한 것일 수 있다.
유사하게, 작동들이 특정한 순서로 도면에 묘사되지만, 이는 바람직한 결과를 달성하기 위해, 이러한 작동들이 도시된 특정 순서로 또는 순차적인 순서로 수행되거나, 예시된 모든 작동들이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 또한, 위에서 설명된 실시형태에서 다양한 시스템 구성 요소의 분리가 모든 실시형태에서 이러한 분리를 요구하는 것으로서 이해되어서는 안 되며, 설명된 프로그램 구성 요소 및 시스템이 일반적으로 단일 제품으로 함께 통합되거나 여러 제품으로 패키징될 수 있다는 것이 이해되어야 한다.
HTML 파일이 언급된 각각의 인스턴스에서, 다른 파일 유형 또는 형식이 대체할 수 있다. 예를 들어, HTML 파일은 XML, JSON, 일반 텍스트, 또는 기타 유형의 파일로 대체될 수 있다. 또한, 테이블 또는 해시 테이블이 언급된 경우, 다른 데이터 구조(예: 스프레드시트, 관계형 데이터베이스, 또는 구조화된 파일)가 사용될 수 있다.
다른 실시형태들
본 발명의 특정 실시형태가 설명되었다. 다른 실시형태는 하기의 청구범위의 범위 내에 있다. 예를 들어, 청구범위에 인용된 단계들은 다른 순서로 수행될 수 있고, 여전히 원하는 결과를 달성할 수 있다.

Claims (62)

  1. 소프트웨어 가속 게놈 데이터 판독 매핑(software-accelerated genomic data read mapping)을 위한 방법으로서,
    하나 이상의 컴퓨터에 의해, 게놈 데이터 판독으로부터 k-mer 시드를 획득하는 단계;
    상기 하나 이상의 컴퓨터에 의해, 상기 획득된 k-mer 시드에 기초하여 게놈 서명(genomic signature)을 생성하는 단계;
    하나 이상의 컴퓨터에 의해, 해시(hash) 데이터 구조를 사용하여 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치를 결정하는 단계 - 상기 해시 데이터 구조는, 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 제1 발생에 대응하는 값을 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함함 -; 및
    하나 이상의 컴퓨터에 의해, 하나 이상의 정렬 스코어(alignment score)에 기초하여 상기 획득된 k-mer 시드에 대한 실제 정렬로서 상기 결정된 참조 서열 위치를 선택하는 단계
    를 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  2. 제1항에 있어서, 상기 미리 결정된 게놈 서명은 메모리 저장장치(memory storage)의 1바이트를 차지하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  3. 제1항 또는 제2항에 있어서, 상기 값은 메모리 저장장치의 4바이트를 차지하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 해시 데이터 구조는 단일 어레이의 N개의 데이터 셀인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    하나 이상의 컴퓨터에 의해, 상기 게놈 데이터 판독의 하나 이상의 k-mer 시드에 대응하는 제1 세트의 값에 기초하여 상기 게놈 데이터 판독을 필터링하는 단계를 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  6. 제5항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터 판독의 상기 하나 이상의 k-mer 시드에 적용되는 미리 결정된 작동의 결과를 포함하고, 상기 제1 세트의 값은 상기 게놈 데이터 판독으로부터 상기 k-mer 시드를 획득하기 위해 사용되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  7. 제6항에 있어서, 상기 미리 결정된 작동은 상기 게놈 데이터 판독의 상기 하나 이상의 k-mer 시드 및 해시 함수에 기초하여 해시 값을 생성하는 것을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 참조 서열 위치를 결정하는 단계는,
    하나 이상의 컴퓨터에 의해, 상기 게놈 데이터 판독의 상기 k-mer 시드에 대한 제1 위치를 계산하는 것 - 상기 제1 위치는 상기 게놈 데이터 판독 내 상기 k-mer 시드의 위치에 대응함 -; 및
    하나 이상의 컴퓨터에 의해, 상기 k-mer 시드에 대한 제2 위치를 계산하는 것
    을 포함하고, 상기 제2 위치는 상기 참조 게놈 데이터 내 상기 k-mer 시드의 위치에 대응하고, 상기 제2 위치는 상기 해시 데이터 구조에 기반하여 계산되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    하나 이상의 컴퓨터에 의해, 상기 해시 데이터 구조 및 상기 게놈 데이터 판독에 기초하여 상기 하나 이상의 참조 서열 위치를 분류하는 단계를 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    하나 이상의 컴퓨터에 의해, 상기 하나 이상의 참조 서열 위치를 분류하는 단계에 기초하여 상기 하나 이상의 정렬 스코어를 생성하는 단계를 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 획득된 k-mer 시드에 대한 상기 실제 정렬로서 상기 결정된 참조 서열 위치들 중 적어도 하나를 선택하는 단계는 상기 하나 이상의 정렬 스코어를 임계값과 비교하는 것을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 하나 이상의 정렬 스코어는, 상기 게놈 데이터 판독으로부터의 상기 획득된 k-mer 시드와 상기 참조 서열 위치 사이의 불일치의 수를 나타내는 수치를 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 최초 발생 이후에 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 각각의 후속 발생은 폐기되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 방법.
  14. 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템으로서, 방법은,
    하나 이상의 컴퓨터; 및
    명령어를 저장하는 하나 이상의 메모리 디바이스
    를 포함하되, 상기 명령어는 상기 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금,
    상기 하나 이상의 컴퓨터에 의해, 게놈 데이터 판독으로부터 k-mer 시드를 획득하는 작동;
    상기 하나 이상의 컴퓨터에 의해, 상기 획득된 k-mer 시드에 기초하여 게놈 서명을 생성하는 작동;
    상기 하나 이상의 컴퓨터에 의해, 해시 데이터 구조를 사용하여 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치를 결정하는 작동 - 상기 해시 데이터 구조는, 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 제1 발생에 대응하는 값을 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함함 -; 및
    상기 하나 이상의 컴퓨터에 의해, 하나 이상의 정렬 스코어에 기초하여 상기 획득된 k-mer 시드에 대한 실제 정렬로서 상기 결정된 참조 서열 위치를 선택하는 작동
    을 포함하는 작동들을 수행하게 하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  15. 제14항에 있어서, 상기 미리 결정된 게놈 서명은 메모리 저장장치의 1바이트를 차지하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  16. 제14항 또는 제15항에 있어서, 상기 값은 메모리 저장장치의 4바이트를 차지하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  17. 제14항 내지 제16항 중 어느 한 항에 있어서, 상기 해시 데이터 구조는 단일 어레이의 N개의 데이터 셀인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  18. 제14항 내지 제17항 중 어느 한 항에 있어서, 상기 작동은,
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터 판독의 하나 이상의 k-mer 시드에 대응하는 제1 세트의 값에 기초하여 상기 게놈 데이터 판독을 필터링하는 작동을 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  19. 제18항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터 판독의 상기 하나 이상의 k-mer 시드에 적용되는 미리 결정된 작동의 결과를 포함하고, 상기 제1 세트의 값은 상기 게놈 데이터 판독으로부터 상기 k-mer 시드를 획득하기 위해 사용되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  20. 제19항에 있어서, 상기 미리 결정된 작동은 상기 게놈 데이터 판독의 상기 하나 이상의 k-mer 시드 및 해시 함수에 기초하여 해시 값을 생성하는 것을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  21. 제14항 내지 제20항 중 어느 한 항에 있어서, 상기 참조 서열 위치를 결정하는 작동은,
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터 판독의 상기 k-mer 시드에 대한 제1 위치를 계산하는 것 - 상기 제1 위치는 상기 게놈 데이터 판독 내 상기 k-mer 시드의 위치에 대응함 -; 및
    상기 하나 이상의 컴퓨터에 의해, 상기 k-mer 시드에 대한 제2 위치를 계산하는 것
    을 포함하고, 상기 제2 위치는 상기 참조 게놈 데이터 내 상기 k-mer 시드의 위치에 대응하고, 상기 제2 위치는 상기 해시 데이터 구조에 기반하여 계산되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  22. 제14항 내지 제21항 중 어느 한 항에 있어서, 상기 작동은,
    상기 하나 이상의 컴퓨터에 의해, 상기 해시 데이터 구조 및 상기 게놈 데이터 판독에 기초하여 상기 하나 이상의 참조 서열 위치를 분류하는 작동을 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  23. 제14항 내지 제22항 중 어느 한 항에 있어서, 상기 작동은,
    하나 이상의 컴퓨터에 의해, 상기 하나 이상의 참조 서열 위치를 분류하는 작동에 기초하여 상기 하나 이상의 정렬 스코어를 생성하는 작동을 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  24. 제14항 내지 제23항 중 어느 한 항에 있어서, 상기 획득된 k-mer 시드에 대한 상기 실제 정렬로서 상기 결정된 참조 서열 위치들 중 적어도 하나를 선택하는 작동은 상기 하나 이상의 정렬 스코어를 임계값과 비교하는 것을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  25. 제14항 내지 제24항 중 어느 한 항에 있어서, 상기 하나 이상의 정렬 스코어는, 상기 게놈 데이터 판독으로부터의 상기 획득된 k-mer 시드와 상기 참조 서열 위치 사이의 불일치의 수를 나타내는 수치를 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  26. 제14항 내지 제25항 중 어느 한 항에 있어서, 최초 발생 이후에 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 각각의 후속 발생은 폐기되는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 시스템.
  27. 명령어를 저장하는 컴퓨터 판독 가능 매체로서, 상기 명령어는 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 작동을 수행하게 하며, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 작동은,
    게놈 데이터 판독으로부터 k-mer 시드를 획득하는 작동;
    상기 획득된 k-mer 시드에 기초하여 게놈 서명을 생성하는 작동;
    해시 데이터 구조를 사용하여 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치를 결정하는 작동 - 상기 해시 데이터 구조는, 미리 결정된 게놈 서명을 저장하는 제1 부분, 및 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 제1 발생에 대응하는 값을 저장하는 제2 부분을 포함하는 N 데이터 셀을 포함함 -; 및
    하나 이상의 정렬 스코어에 기초하여 상기 획득된 k-mer 시드에 대한 실제 정렬로서 상기 결정된 참조 서열 위치를 선택하는 작동
    을 포함하는, 컴퓨터 판독 가능 매체.
  28. 제27항에 있어서, 상기 미리 결정된 게놈 서명은 메모리 저장장치의 1바이트를 차지하는, 컴퓨터 판독 가능 매체.
  29. 제27항 또는 제28항에 있어서, 상기 값은 메모리 저장장치의 4바이트를 차지하는, 컴퓨터 판독 가능 매체.
  30. 제27항 내지 제29항 중 어느 한 항에 있어서, 상기 해시 데이터 구조는 단일 어레이의 N개의 데이터 셀인, 컴퓨터 판독 가능 매체.
  31. 제27항 내지 제30항 중 어느 한 항에 있어서, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 작동은,
    상기 게놈 데이터 판독의 하나 이상의 k-mer 시드에 대응하는 제1 세트의 값에 기초하여 상기 게놈 데이터 판독을 필터링하는 작동을 더 포함하는, 컴퓨터 판독 가능 매체.
  32. 제31항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터 판독의 상기 하나 이상의 k-mer 시드에 적용되는 미리 결정된 작동의 결과를 포함하고, 상기 제1 세트의 값은 상기 게놈 데이터 판독으로부터 상기 k-mer 시드를 획득하기 위해 사용되는, 컴퓨터 판독 가능 매체.
  33. 제27항 내지 제32항 중 어느 한 항에 있어서, 상기 참조 서열 위치를 결정하는 작동은,
    상기 게놈 데이터 판독의 상기 k-mer 시드에 대한 제1 위치를 계산하는 것 - 상기 제1 위치는 상기 게놈 데이터 판독 내 상기 k-mer 시드의 위치에 대응함 -; 및
    상기 k-mer 시드에 대한 제2 위치를 계산하는 것
    을 포함하고, 상기 제2 위치는 상기 참조 게놈 데이터 내 상기 k-mer 시드의 위치에 대응하고, 상기 제2 위치는 상기 해시 데이터 구조에 기반하여 계산되는, 컴퓨터 판독 가능 매체.
  34. 제27항 내지 제33항 중 어느 한 항에 있어서, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 작동은,
    상기 해시 데이터 구조 및 상기 게놈 데이터 판독에 기초하여 상기 하나 이상의 참조 서열 위치를 분류하는 작동을 더 포함하는, 컴퓨터 판독 가능 매체.
  35. 제27항 내지 제34항 중 어느 한 항에 있어서, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 작동은,
    상기 하나 이상의 참조 서열 위치를 분류하는 작동에 기초하여 상기 하나 이상의 정렬 스코어를 생성하는 작동을 더 포함하는, 컴퓨터 판독 가능 매체.
  36. 제27항 내지 제35항 중 어느 한 항에 있어서, 상기 획득된 k-mer 시드에 대한 상기 실제 정렬로서 상기 결정된 참조 서열 위치들 중 적어도 하나를 선택하는 작동은 상기 하나 이상의 정렬 스코어를 임계값과 비교하는 것을 포함하는, 컴퓨터 판독 가능 매체.
  37. 제27항 내지 제36항 중 어느 한 항에 있어서, 상기 하나 이상의 정렬 스코어는, 상기 게놈 데이터 판독으로부터의 상기 획득된 k-mer 시드와 상기 참조 서열 위치 사이의 불일치의 수를 나타내는 수치를 포함하는, 컴퓨터 판독 가능 매체.
  38. 제27항 내지 제37항 중 어느 한 항에 있어서, 최초 발생 이후에 상기 미리 결정된 게놈 서명이 유도된 상기 k-mer 시드의 적어도 일부분과 매칭되는 참조 서열 위치의 각각의 후속 발생은 폐기되는, 컴퓨터 판독 가능 매체.
  39. 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법으로서,
    하나 이상의 컴퓨터에 의해, 게놈 데이터를 수신하는 단계 - 상기 게놈 데이터는 부모 게놈 데이터로부터 유도됨 -;
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터에 기초한 제1 세트의 값을 생성하는 단계;
    하나 이상의 컴퓨터에 의해, 상기 제1 세트의 값에 기초하여 상기 게놈 데이터의 서브세트를 생성하는 단계;
    하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 서명을 계산하는 단계 - 상기 서명은 제1 해시 함수에 기초하여 계산됨 -;
    하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 제1 속성을 계산하는 단계 - 상기 제1 속성은 상기 게놈 데이터의 시퀀스 내의 상기 게놈 데이터의 주어진 k-mer의 위치를 포함함 -;
    하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 인덱스를 계산하는 단계 - 상기 인덱스는 제2 해시 함수에 기초하여 계산됨 -; 및
    하나 이상의 컴퓨터에 의해, 상기 서명, 및 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 인덱스에 기초하여 해시 데이터 구조 내 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 제1 속성을 분류하는 단계
    를 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  40. 제39항에 있어서, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer는 하나 이상의 뉴클레오티드의 문자열을 나타내는 k개 문자들을 포함하는 k-mer인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  41. 제39항 또는 제40항에 있어서, 상기 제1 세트의 값은, 상기 게놈 데이터의 주어진 k-mer가 부모 게놈 데이터 내에서 발생하는 횟수의 표현을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  42. 제39항 내지 제41항 중 어느 한 항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터의 대응하는 k-mer에 기초하여 계산된 해시 값의 표현을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  43. 제39항 내지 제42항 중 어느 한 항에 있어서, 상기 서브세트의 주어진 k-mer에 대한 상기 서명을 저장하는 데 사용되는 메모리 할당 크기는 상기 주어진 k-mer를 저장하는 데 사용되는 메모리 할당 크기보다 더 작은, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  44. 제39항 내지 제43항 중 어느 한 항에 있어서,
    상기 하나 이상의 컴퓨터에 의해, 데이터 패키지로서 상기 해시 데이터 구조에 대응하는 데이터를 제1 디바이스에 전송하는 단계를 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  45. 제44항에 있어서, 상기 제1 디바이스는 메모리 저장 디바이스인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  46. 제44항 또는 제45항에 있어서, 제2 디바이스는 상기 제1 디바이스로부터 상기 해시 데이터 구조에 대응하는 상기 데이터를 판독하고, 상기 제2 디바이스는 상기 해시 데이터 구조에 대응하는 상기 데이터에 기초하여 제2 해시 데이터 구조를 생성하기 위한 일련의 작동을 수행하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 방법.
  47. 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템으로서,
    하나 이상의 컴퓨터; 및
    명령어를 저장하는 하나 이상의 메모리
    를 포함하되, 상기 명령어는 상기 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금,
    상기 하나 이상의 컴퓨터에 의해, 게놈 데이터를 수신하는 작동 - 상기 게놈 데이터는 부모 게놈 데이터로부터 유도됨 -;
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터에 기초한 제1 세트의 값을 생성하는 작동;
    상기 하나 이상의 컴퓨터에 의해, 상기 제1 세트의 값에 기초하여 상기 게놈 데이터의 서브세트를 생성하는 작동;
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 서명을 계산하는 작동 - 상기 서명은 제1 해시 함수에 기초하여 계산됨 -;
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 제1 속성을 계산하는 작동 - 상기 제1 속성은 상기 게놈 데이터의 시퀀스 내의 상기 게놈 데이터의 주어진 k-mer의 위치를 포함함 -;
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 인덱스를 계산하는 작동 - 상기 인덱스는 제2 해시 함수에 기초하여 계산됨 -; 및
    상기 하나 이상의 컴퓨터에 의해, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 인덱스에 기초하여 해시 데이터 구조 내에 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 제1 속성 및 상기 서명을 저장하는 작동
    을 포함하는 작동들을 수행하게 하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  48. 제47항에 있어서, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer는 하나 이상의 뉴클레오티드의 문자열을 나타내는 k개의 문자들을 포함하는 k-mer인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  49. 제47항 또는 제48항에 있어서, 상기 제1 세트의 값은, 상기 게놈 데이터의 주어진 k-mer가 부모 게놈 데이터 내에서 발생하는 횟수의 표현을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  50. 제47항 내지 제49항 중 어느 한 항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터의 대응하는 k-mer에 기초하여 계산된 해시 값의 표현을 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  51. 제47항 내지 제50항 중 어느 한 항에 있어서, 상기 서브세트의 주어진 k-mer에 대한 상기 서명을 저장하는 데 사용되는 메모리 할당 크기는 상기 주어진 k-mer를 저장하는 데 사용되는 메모리 할당 크기보다 더 작은, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  52. 제47항 내지 제51항 중 어느 한 항에 있어서, 상기 작동은
    상기 하나 이상의 컴퓨터에 의해, 데이터 패키지로서 상기 해시 데이터 구조에 대응하는 데이터를 제1 디바이스에 전송하는 작동을 더 포함하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  53. 제52항에 있어서, 상기 제1 디바이스는 메모리 저장 디바이스인, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  54. 제52항 또는 제53항에 있어서, 제2 디바이스가 상기 제1 디바이스로부터 상기 해시 데이터 구조에 대응하는 상기 데이터를 판독하고, 상기 제2 디바이스는 상기 해시 데이터 구조에 대응하는 상기 데이터에 기초하여 제2 해시 데이터 구조를 생성하기 위한 일련의 작동을 수행하는, 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 시스템.
  55. 명령어를 저장하는 컴퓨터 판독 가능 매체로서, 상기 명령어는 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 작동을 수행하게 하며, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 작동은,
    게놈 데이터를 수신하는 작동 - 상기 게놈 데이터는 부모 게놈 데이터로부터 유도됨 -;
    상기 게놈 데이터에 기초한 제1 세트의 값을 생성하는 작동;
    상기 제1 세트의 값에 기초하여 상기 게놈 데이터의 서브세트를 생성하는 작동;
    상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 서명을 계산하는 작동 - 상기 서명은 제1 해시 함수에 기초하여 계산됨 -;
    상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 제1 속성을 계산하는 작동 - 상기 제1 속성은 상기 게놈 데이터의 시퀀스 내의 상기 게놈 데이터의 주어진 k-mer의 위치를 포함함 -;
    상기 게놈 데이터의 상기 서브세트의 각각의 k-me에 대한 인덱스를 계산하는 작동 - 상기 인덱스는 제2 해시 함수에 기초하여 계산됨 -; 및
    상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 인덱스에 기초하여 해시 데이터 구조 내에 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer에 대한 상기 제1 속성 및 상기 서명을 저장하는 작동
    을 포함하는, 컴퓨터 판독 가능 매체.
  56. 제55항에 있어서, 상기 게놈 데이터의 상기 서브세트의 각각의 k-mer는 하나 이상의 뉴클레오티드의 문자열을 나타내는 k개의 문자들을 포함하는 k-mer인, 컴퓨터 판독 가능 매체.
  57. 제55항 또는 제56항에 있어서, 상기 제1 세트의 값은, 상기 게놈 데이터의 주어진 k-mer가 부모 게놈 데이터 내에서 발생하는 횟수의 표현을 포함하는, 컴퓨터 판독 가능 매체.
  58. 제55항 내지 제57항 중 어느 한 항에 있어서, 상기 제1 세트의 값은 상기 게놈 데이터의 대응하는 k-mer에 기초하여 계산된 해시 값의 표현을 포함하는, 컴퓨터 판독 가능 매체.
  59. 제55항 내지 제58항 중 어느 한 항에 있어서, 상기 서브세트의 주어진 k-mer에 대한 상기 서명을 저장하는 데 사용되는 메모리 할당 크기는 상기 주어진 k-mer를 저장하는 데 사용되는 메모리 할당 크기보다 작은, 컴퓨터 판독 가능 매체.
  60. 제55항 내지 제59항 중 어느 한 항에 있어서, 상기 소프트웨어 가속 게놈 데이터 판독 매핑을 위한 해시 테이블을 생성하는 작동은,
    데이터 패키지로서 상기 해시 데이터 구조에 대응하는 데이터를 제1 디바이스에 전송하는 작동을 더 포함하는, 컴퓨터 판독 가능 매체.
  61. 제60항에 있어서, 상기 제1 디바이스는 메모리 저장 디바이스인, 컴퓨터 판독 가능 매체.
  62. 제60항 또는 제61항에 있어서, 제2 디바이스가 상기 제1 디바이스로부터 상기 해시 데이터 구조에 대응하는 상기 데이터를 판독하고, 상기 제2 디바이스는 상기 해시 데이터 구조에 대응하는 상기 데이터에 기초하여 제2 해시 데이터 구조를 생성하기 위한 일련의 작동을 수행하는, 컴퓨터 판독 가능 매체.
KR1020227044607A 2020-09-15 2021-09-15 소프트웨어 가속 게놈 판독 매핑 KR20230069046A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063078890P 2020-09-15 2020-09-15
US63/078,890 2020-09-15
PCT/US2021/050557 WO2022060910A1 (en) 2020-09-15 2021-09-15 Software accelerated genomic read mapping

Publications (1)

Publication Number Publication Date
KR20230069046A true KR20230069046A (ko) 2023-05-18

Family

ID=78087564

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227044607A KR20230069046A (ko) 2020-09-15 2021-09-15 소프트웨어 가속 게놈 판독 매핑

Country Status (12)

Country Link
US (2) US11521707B2 (ko)
EP (1) EP4214713A1 (ko)
JP (1) JP2023541090A (ko)
KR (1) KR20230069046A (ko)
CN (1) CN116134525A (ko)
AU (1) AU2021344965A1 (ko)
BR (1) BR112022024127A2 (ko)
CA (1) CA3174066A1 (ko)
IL (1) IL298979A (ko)
MX (1) MX2022016018A (ko)
WO (1) WO2022060910A1 (ko)
ZA (1) ZA202304378B (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007131545A2 (en) * 2005-12-09 2007-11-22 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. A method and apparatus for automatic comparison of data sequences
GB0922131D0 (en) 2009-12-18 2010-02-03 Lunter Gerton A system for gaining the dna sequence of a biological sample or transformation thereof
WO2012158621A1 (en) 2011-05-13 2012-11-22 Indiana University Reaserch And Technology Coporation Secure and scalable mapping of human sequencing reads on hybrid clouds
WO2013067542A1 (en) 2011-11-03 2013-05-10 Genformatic, Llc Device, system and method for securing and comparing genomic data
JP2016502162A (ja) * 2012-10-15 2016-01-21 テクニカル ユニバーシティ オブ デンマーク 未加工のシーケンシングデータのデータベースにより駆動される一次解析
US10198454B2 (en) * 2014-04-26 2019-02-05 Bonnie Berger Leighton Quality score compression for improving downstream genotyping accuracy
US20160019339A1 (en) * 2014-07-06 2016-01-21 Mercator BioLogic Incorporated Bioinformatics tools, systems and methods for sequence assembly
US10673826B2 (en) 2015-02-09 2020-06-02 Arc Bio, Llc Systems, devices, and methods for encrypting genetic information
US10068183B1 (en) 2017-02-23 2018-09-04 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on a quantum processing platform
EP3267346A1 (en) * 2016-07-08 2018-01-10 Barcelona Supercomputing Center-Centro Nacional de Supercomputación A computer-implemented and reference-free method for identifying variants in nucleic acid sequences
US10447661B1 (en) 2016-12-23 2019-10-15 Iqvia Inc. System and method for privacy-preserving genomic data analysis
WO2021055972A1 (en) * 2019-09-20 2021-03-25 The Board Of Trustees Of The Leland Stanford Junior University Methods and systems for improved k-mer storage and retrieval

Also Published As

Publication number Publication date
US20230084414A1 (en) 2023-03-16
MX2022016018A (es) 2023-04-12
IL298979A (en) 2023-02-01
CN116134525A (zh) 2023-05-16
ZA202304378B (en) 2023-12-20
JP2023541090A (ja) 2023-09-28
EP4214713A1 (en) 2023-07-26
BR112022024127A2 (pt) 2023-03-28
CA3174066A1 (en) 2022-03-24
US11521707B2 (en) 2022-12-06
WO2022060910A1 (en) 2022-03-24
AU2021344965A1 (en) 2022-10-27
US20220084625A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
Hoffmann et al. Fast mapping of short sequences with mismatches, insertions and deletions using index structures
US10169208B1 (en) Similarity scoring of programs
US20240061843A1 (en) Flexible Seed Extension for Hash Table Genomic Mapping
WO2014132497A1 (ja) データ解析装置、及びその方法
US20180247016A1 (en) Systems and methods for providing assisted local alignment
US20240062853A1 (en) Quality score compression
Guidi et al. BELLA: Berkeley efficient long-read to long-read aligner and overlapper
Kim et al. A review on sequence alignment algorithms for short reads based on next-generation sequencing
CN109390032B (zh) 一种基于进化算法在全基因组关联分析的数据中探索与疾病相关的snp组合的方法
KR20230069046A (ko) 소프트웨어 가속 게놈 판독 매핑
US20200142910A1 (en) Data clustering apparatus and method based on range query using cf tree
CN110019829B (zh) 数据属性确定方法、装置
CN114579580A (zh) 存储数据的方法、查询数据的方法和装置
Chen et al. CGAP-align: a high performance DNA short read alignment tool
Muggli et al. A succinct solution to Rmap alignment
CN113468866A (zh) 非标准json串的解析方法及装置
Esmat et al. A parallel hash‐based method for local sequence alignment
KR101430064B1 (ko) 분류 코드를 제공하기 위한 시스템 및 방법
US20230290443A1 (en) Multi-pass software-accelerated genomic read mapping engine
Zhang Efficient methods for read mapping.
KR102436373B1 (ko) 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법
Aldwairi et al. A classifier system for predicting RNA secondary structure
CN117555485A (zh) 数据存储、读取的方法及装置、电子设备和存储介质
US8812517B1 (en) Watermarking of structured results and watermark detection
CN117194778A (zh) 基于属性图数据的预测规则生成方法、装置、设备及介质