KR20230066426A - 핵산의 시퀀싱에 의한 기록을 위한 시스템 및 방법 - Google Patents

핵산의 시퀀싱에 의한 기록을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20230066426A
KR20230066426A KR1020237012204A KR20237012204A KR20230066426A KR 20230066426 A KR20230066426 A KR 20230066426A KR 1020237012204 A KR1020237012204 A KR 1020237012204A KR 20237012204 A KR20237012204 A KR 20237012204A KR 20230066426 A KR20230066426 A KR 20230066426A
Authority
KR
South Korea
Prior art keywords
nucleic acid
identifier
identifier nucleic
sequence
acid molecule
Prior art date
Application number
KR1020237012204A
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 KR20230066426A publication Critical patent/KR20230066426A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/02Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0014RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material
    • G11C13/0019RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material comprising bio-molecules
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q1/00Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions
    • C12Q1/68Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions involving nucleic acids
    • C12Q1/6844Nucleic acid amplification reactions
    • C12Q1/6853Nucleic acid amplification reactions using modified primers or templates
    • C12Q1/6855Ligating adaptors
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q1/00Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions
    • C12Q1/68Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions involving nucleic acids
    • C12Q1/6869Methods for sequencing
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/30Data warehousing; Computing architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/123DNA computing

Landscapes

  • Life Sciences & Earth Sciences (AREA)
  • Chemical & Material Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Organic Chemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Biophysics (AREA)
  • Zoology (AREA)
  • Wood Science & Technology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Genetics & Genomics (AREA)
  • Biotechnology (AREA)
  • Theoretical Computer Science (AREA)
  • Microbiology (AREA)
  • Immunology (AREA)
  • Analytical Chemistry (AREA)
  • Biochemistry (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Medical Informatics (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Saccharide Compounds (AREA)

Abstract

여기에 기술된 시스템, 장치 및 방법은 기존 방법보다 상업적으로 구현하기 쉽고 비용이 적게 드는 핵산 디지털 데이터 저장 인코딩 및 불러오기 방법을 제공한다. 본 명세서에 기술된 시스템, 장치 및 방법은 핵산 분자에 데이터를 기록하고 핵산 분자로부터 데이터를 판독하기 위한 확장 가능한 방법을 제공한다. 본 개시내용은 5가지 주요 관심 영역을 다룬다: (1) 디지털 정보를 핵산 분자에 기록, (2) 핵산 분자에 저장된 정보를 정확하고 신속하게 판독, (3) 데이터를 핵산 분자에 효율적으로 인코딩하기 위해 데이터 분할, (4) 핵산 분자에 데이터를 인코딩할 때 오류 보호 및 수정, 및 (5) 핵산 분자에 저장된 정보에 대한 효율적인 액세스를 제공하는 데이터 구조.

Description

핵산의 시퀀싱에 의한 기록을 위한 시스템 및 방법
관련 출원에 대한 참조
본 출원은 2020년 9월 8일에 출원된 미국 가특허 출원 번호 63/075,622호의 우선권 및 이익을 주장한다. 상기 언급된 출원의 전체 내용은 참조로 본 명세서에 포함된다.
핵산 디지털 데이터 저장은 자기 테이프 또는 하드 드라이브 저장 시스템보다 더 높은 밀도로 저장되는 데이터로 장기간 동안 정보를 인코딩하고 저장하기 위한 안정적인 접근법이다. 핵산 디지털 데이터 저장을 위한 현재의 방법은 디지털 정보(예: 이진 코드)를 염기별 핵산 서열로 인코딩하는 데 의존하여, 서열의 염기 대 염기 관계가 다단계 화학법을 사용하여 디지털 정보(예: 이진 코드)로 변환된다. 디지털 방식으로 인코딩된 정보의 비트스트림 또는 바이트로 읽을 수 있는 염기별 시퀀스에 저장된 디지털 데이터의 시퀀싱은 오류가 발생하기 쉽고 인코딩하는 데 비용이 많이 들 수 있다. 왜냐하면, 새로운(de novo) 염기별 핵산 합성 비용이 값비싸기 때문이다.
염기별 합성으로 기록된 데이터에 대한 판독 시간 및 비용은 엄청 높을 수 있다. 고밀도로 저장된 정보(염기당 비트 수 기준)는 다시 읽기 위해 높은 정확도와 고해상도 시퀀싱이 필요할 수 있다. 실제로, 이론상 최대 2비트/염기 또는 그 근처의 값으로 저장된 데이터는 게놈 정보와 마찬가지로 시퀀싱에 대한 유사한 엄격성 요건을 갖는다. 이것은 게놈 응용을 위한 최첨단 시퀀서에 대한 혁신의 여지를 거의 남기지 않는다. 참고로 전체 TB의 데이터를 복구하려면 약 450B 읽기를 처리해야 하며, 이를 처리하는 데 수백만 달러와 수천 시간이 소요될 수 있다. 시퀀싱의 한 방법은 나노포어 시퀀싱이다. 나노포어 시퀀싱의 핵심 장애물은 개별 DNA 염기를 시퀀싱하기에 충분히 느린 DNA 전좌(translocation)와 충분히 좁은 포어를 달성하는 것이다.
본 명세서에 기술된 시스템, 장치 및 방법은 기존 방법보다 상업적으로 구현하기 쉽고 비용이 적게 드는 핵산 디지털 데이터 저장 인코딩 및 불러오기 방법을 제공한다. 본 명세서에 기술된 시스템, 장치 및 방법은 핵산 분자에 데이터를 기록하고 핵산 분자로부터 데이터를 판독하기 위한 확장 가능한 방법을 제공한다. 본 개시내용은 5가지 주요 관심 영역을 다룬다: (1) 디지털 정보를 핵산 분자에 기록, (2) 핵산 분자에 저장된 정보를 정확하고 신속하게 판독, (3) 데이터를 핵산 분자에 효율적으로 인코딩하기 위해 데이터 분할, (4) 핵산 분자에 데이터를 인코딩할 때 오류 보호 및 수정, 및 (5) 핵산 분자에 저장된 정보에 대한 효율적인 액세스를 제공하는 데이터 구조.
일 양태에서, 디지털 정보를 핵산 분자에 기록하는 방법은 디지털 정보를 식별자 핵산 서열의 표적 세트에 매핑하는 단계를 포함한다. 이 방법은 복수의 식별자 핵산 분자를 얻는 것을 포함한다. 방법은 나노포어 시스템으로 상기 복수의 식별자 핵산 분자의 식별자 핵산 분자를 시퀀싱하는 것을 포함한다. 방법은 식별자 핵산 분자가 표적 세트의 식별자 핵산 서열에 상응하는지 여부에 기초하여 목적지 챔버로 식별자 핵산 분자를 수용하거나 거부하는 것을 포함한다.
일부 실시예에서, 상기 매핑은 워드를 코드워드에 매핑하는 코드북을 사용하는 것을 포함한다. 일부 실시예에서, 적어도 하나의 식별자 핵산 서열은 코드워드의 비트에 해당한다.
일부 실시예에서, 상기 비트가 1의 비트-값을 갖는 경우, 상기 비트는 표적 세트 내의 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현되고, 비트가 0의 비트-값을 갖는 경우, 상기 비트는 표적 세트에서 상응하는 식별자 핵산 서열의 부재로 표현된다.
일부 실시예에서, 상기 복수의 식별자 핵산 분자는 제품 구성표(product scheme)를 사용하여 다중 구성요소 핵산 분자를 조립함으로써 얻어진다. 일부 실시예에서 제품 구성표는 M개의 레이어들의 세트를 정의하며 각 레이어는 구성 요소들의 세트를 포함한다. 일부 실시예에서, 각각의 식별자 핵산 분자는 M개의 레이어의 세트의 각 레이어로부터의 하나의 구성요소를 함유한다.
일부 실시예에서, 상기 복수의 식별자 핵산 분자는 드 노보 합성으로 다중 올리고뉴클레오티드를 프로그래밍 방식으로 합성함으로써 얻어진다.
일부 실시예에서, 상기 복수의 식별자 핵산 분자는 축퇴 올리고뉴클레오티드 서열을 합성함으로써 얻어진다.
일부 실시예에서, 방법은 공통 프라이머 결합 부위를 복수의 식별자 핵산 분자의 각각의 식별자 분자에 통합하는 것을 포함한다. 일부 실시예에서, 방법은 상기 공통 프라이머 부위에 결합하도록 구성된 PCR 프라이머를 사용하여 폴리머라제 연쇄 반응(PCR)으로 복수의 식별자 핵산 분자를 증폭하는 것을 포함한다.
일부 실시예에서, 방법은 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자에 스페이서 시퀀스를 부가하는 것을 포함한다. 일부 실시예에서, 스페이서 시퀀스는 라이게이션 또는 중첩 연장 PCR 중 하나에 의해 추가된다. 일부 실시예에서, 스페이서 시퀀스는 식별자 핵산 서열 내의 표적 삽입 부위에 삽입된다.
일부 실시예에서, 스페이서 시퀀스는 나노포어 시스템에서 시퀀싱하는 동안 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자의 전좌 시간을 증가시키도록 구성된다.
일부 실시예에서, 나노포어 시스템은 소스 챔버, 멤브레인, 나노포어 및 목적지 챔버를 포함한다. 일부 실시예에서, 식별자 핵산 분자를 수용하는 것은 멤브레인의 나노포어를 통해 소스 챔버로부터 목적지 챔버로 식별자 핵산 분자를 전좌시키는 것을 포함한다. 일부 실시예에서, 식별자 핵산 분자를 시퀀싱하는 것은 임피던스 신호를 검출하고, 임피던스 신호를 다중 임피던스 시그니처 중 하나에 일치시키는 것을 포함한다. 일부 실시예에서, 방법은 별개의 임피던스 신호를 제공하기 위해 복수의 식별자 핵산 분자의 적어도 서브세트의 각각의 식별자 핵산 분자에 작용제를 결합시키는 것을 포함한다. 일부 실시예에서, 결합은 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자에 작용제를 결합시키는 것을 포함한다.
일부 실시예에서, 식별자 핵산 분자는 식별자 핵산 분자가 일치하는 적어도 하나의 임피던스 시그니처에 기초하여 목적지 챔버로 허용되거나 거부된다.
일부 실시예에서, 식별자 핵산 분자를 거부하는 것은 나노포어를 가로지르는 전기장의 극성을 역전시키는 것을 포함한다.
일부 실시예에서, 방법은 목적지 챔버가 오류 정정으로 디지털 정보를 나타내기에 충분한 복수의 식별자 핵산 분자를 포함할 때까지 나노포어 시스템에서 다중 식별자 핵산 분자를 시퀀싱하는 단계를 포함한다.
일부 실시예에서, 매핑은 순방향 오류 정정을 사용하는 것을 포함한다.
일부 실시예에서, 방법은 역방향 오류 정정을 사용하여 시퀀싱 단계 또는 수락 또는 거부 단계 동안 발생하는 임의의 오류를 정정하는 단계를 포함한다.
일부 실시예에서, 목적지 챔버는 제1 목적지 챔버이고, 표적 세트는 제1 표적 세트이다. 일부 실시예에서, 방법은 식별자 핵산 분자가 제2 표적 세트의 식별자 핵산 서열에 대응하는지 여부에 기초하여 식별자 핵산 분자를 제2 목적지 챔버로 수용하거나 거부하는 단계를 추가로 포함한다. 일부 실시예에서, 나노포어 시스템은 소스 챔버, 제1 멤브레인, 제1 멤브레인 내의 제1 나노포어, 제2 멤브레인 및 제2 멤브레인 내의 제2 나노포어를 포함한다. 일부 실시예에서, 제1 멤브레인은 소스 챔버와 제1 목적지 챔버를 분리하고, 제2 멤브레인은 소스 챔버와 제2 목적지 챔버를 분리한다.
일부 실시예에서, 상기 비트가 1의 비트-값을 갖는 경우, 상기 비트는 제1 표적 세트 내의 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현되고, 비트가 0의 비트-값을 갖는 경우, 상기 비트는 제2 표적 세트 내 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현된다.
일부 실시예에서, 방법은 구성요소 핵산 서열의 프로브 세트를 지정하는 것을 포함한다. 일부 실시예에서, 방법은 나노포어 시스템을 사용하여 제1 목적지 챔버 또는 제2 목적지 챔버로부터 프로빙된 식별자 핵산 분자를 시퀀싱하는 것을 포함한다. 일부 실시예에서, 방법은 프로빙된 식별자 핵산 분자가 프로브 세트의 구성 요소 핵산 서열을 함유하는 식별자 핵산 서열에 대응하는지 여부에 기초하여 검색 챔버로 프로빙된 식별자 핵산 분자를 수용하거나 거부하는 단계를 포함한다.
일부 실시예에서, 식별자 핵산 분자를 수용하거나 거부하는 것은 식별자 핵산 분자가 표적 세트의 식별자 핵산 서열을 갖는 경우 목적지 챔버로 식별자 핵산 분자를 수용하는 것을 포함한다. 일부 구현예에서, 방법은 식별자 핵산 분자가 표적 세트의 식별자 핵산 서열을 갖지 않는 경우 목적지 챔버로부터 식별자 핵산 분자를 거부하는 단계를 포함한다.
일부 실시예에서, 식별자 핵산 분자를 수용하거나 거부하는 것은 식별자 핵산 분자가 표적 세트의 식별자 핵산 서열을 갖는 경우 목적지 챔버로 식별자 핵산 분자를 수용하는 것을 포함한다. 일부 실시예에서, 방법은 식별자 핵산 분자가 표적 세트의 식별자 핵산 서열을 갖지 않는 경우 목적지 챔버로부터 식별자 핵산 분자를 거부하는 단계를 포함한다.
전술한 그리고 기타의 목적 및 이점은 첨부된 도면과 함께 다음의 상세한 설명을 고려하면 명백해질 것이며, 동일한 참조 부호는 전체적으로 동일한 부분을 지칭한다:
도 1a 및 도 1b는 객체(구성 요소) 또는 식별자(예를 들어, 핵산 분자)를 사용하여 "주소 데이터"(data at address)로 지칭되는 디지털 데이터를 인코딩하는 예시적인 방법을 개략적으로 도시한다. 도 1a는 식별자를 생성하기 위해 순위 객체(또는 주소 객체)를 바이트-값 객체(또는 데이터 객체)와 결합하는 것을 도시한다. 도 1b는 순위 객체 및 바이트-값 객체 자체가 다른 객체(구성 요소)들의 조합 연결인 주소 데이터 방법의 구현을 도시한다.
도 2a 및 2b는 객체(구성요소) 또는 식별자(예를 들어, 핵산 서열)를 사용하여 디지털 정보를 인코딩하는 예시적인 방법을 개략적으로 도시한다. 도 2a는 순위 객체를 식별자로 사용하여 디지털 정보를 인코딩하는 것을 도시한다. 도 2b는 주소 객체 자체가 다른 객체(구성 요소)들의 조합 연결인 인코딩 방법의 구현을 도시한다.
도 3a 및 3b는 별개의 구성요소(예를 들어, 핵산 서열)를 조합적으로 조립함으로써 식별자(예를 들어, 핵산 분자)를 구성하기 위한 "제품 구성표"로 지칭되는 예시적인 방법을 예시한다. 도 3a는 제품 구성표를 사용하여 구성된 식별자의 아키텍처를 도시한다. 도 3b는 제품 구성표를 사용하여 구성될 수 있는 식별자의 조합 공간의 예를 도시한다.
도 4는 구성요소(예를 들어, 핵산 서열)로부터 식별자(예를 들어, 핵산 분자)를 구성하기 위한 중첩 확장 폴리머라제 연쇄 반응의 사용을 개략적으로 예시한다.
도 5는 구성요소(예를 들어, 핵산 서열)로부터 식별자(예를 들어, 핵산 분자)를 구성하기 위한 스티키 말단 결찰(sticky end ligation)의 사용을 개략적으로 예시한다.
도 6은 구성요소(예를 들어, 핵산 서열)로부터 식별자(예를 들어, 핵산 분자)를 구성하기 위한 재조합 효소 조립체의 사용을 개략적으로 예시한다.
도 7은 구성요소(예를 들어, 핵산 서열)로부터 식별자(예를 들어, 핵산 분자)를 구성하기 위한 주형 지정 결찰(template directed ligation)의 사용을 개략적으로 예시한다.
도 8a-8c는 프로브를 사용하여 다수의 식별자로부터 특정 개수의 식별자에 액세스함으로써 핵산 서열에 저장된 정보의 일부에 액세스하기 위한 예시적인 방법의 개요를 개략적으로 도시한다. 도 8a는 특정 구성요소를 포함하는 식별자에 접근하기 위해 폴리머라제 연쇄 반응, 친화성 태그 프로브 및 분해 표적화 프로브를 사용하기 위한 예시적인 방법을 보여준다. 도 8b는 다중 특정 구성요소를 함유하는 식별자에 접근하기 위해 'OR' 또는 'AND' 연산을 수행하기 위해 폴리머라제 연쇄 반응을 사용하는 예시적인 방법을 보여준다. 도 8c는 다수의 지정된 구성요소를 포함하는 식별자에 액세스하기 위해 'OR' 또는 'AND' 연산을 수행하기 위해 친화성 태그를 사용하는 예시적인 방법을 도시한다.
도 9는 조합 공간에서 식별자를 정렬하는 예를 도시한다. 4개의 레이어와 레이어당 2개의 구성 요소가 있는 조합 공간의 식별자는 먼저 레이어 1의 구성 요소, 레이어 2의 구성 요소, 레이어 3의 구성 요소, 그리고 레이어 4의 구성 요소에 따라 소팅함으로써 정렬된다. 라인 세그먼트가 구성 요소를 나타낸다. 또한 회색 세그먼트는 각 레이어(j, 1)의 제1 구성요소를 나타내고, 검은색 세그먼트는 각 레이어(j, 2)의 제2 구성요소를 나타내며, 여기서 j는 레이어이다. 하단의 복합 라인 세그먼트는 전체 식별자를 나타낸다. 예를 들어, 여기에서 각 식별자에 대한 구성 요소의 물리적 순서는 구성 요소가 파생된 레이어의 논리적 순서와 동일하지만 일반적으로 반드시 그럴 필요는 없다.
도 10은 6비트 워드를 8choose4 식별자(8의 그룹에서 선택된 4개의 식별자)로 구성된 코드워드로 매핑하는 코드북을 사용하여 12비트 디지털 스트링을 식별자 풀로 변환하는 예를 도시한다. 이 특정 예에서 6비트 스트링 010010은 코드워드 01011100에 매핑되고 6비트 스트링 111011은 코드워드 11001001에 매핑된다. 식별자들은 도 9에 설명된 바와 같이 정렬된다.
도 11은 3개의 레이어와, 레이어당 2개의 구성요소를 갖는 조합 공간에서의 식별자를 나타내며, 여기서 서로 다른 길이의 식별자가 공간에 포함된다. 식별자는 포함된 레이어 수에 따라 먼저 소팅함으로써 정렬된다. 그런 다음 레이어 1의 구성 요소, 레이어 2의 구성 요소, 레이어 3의 구성 요소, 레이어 4의 구성 요소 순으로 하위 소팅된다. 라인 세그먼트는 구성 요소를 나타낸다. 회색 세그먼트는 각 레이어의 제1 구성 요소를 나타내고 검은색 세그먼트는 각 레이어의 제2 구성 요소를 나타낸다. 복합 라인 세그먼트는 전체 식별자를 나타낸다. 서로 다른 길이의 식별자 시퀀스가 식별자 공간에 포함된다.
도 12는 2개의 식별자 시퀀스가 동일한 위치에 매핑되도록 서로 다른 패턴 채우기(pattern fills)의 직사각형으로 표현되는 식별자 시퀀스가 논리적으로 정렬되는 방식을 도시한다. 한 쌍의 시퀀스 중 어느 하나의 시퀀스의 식별자 분자의 존재는 주어진 위치에서 식별자 시퀀스의 존재를 의미한다.
도 13은 멤브레인의 나노포어를 통과하는 구성요소(검은색 및 회색 선분으로 나타냄)으로 구성된 식별자 시퀀스를 예시한다. 시퀀스가 통과함에 따라 임피던스 신호가 컴퓨터에서 측정되고, 가능한 구성 요소 시그너처 데이터베이스에 대한 참조로 사용된다.
도 14a는 코드워드를 인코딩하기 위해 식별자 공간이 어떻게 사용되는지를 예시하는데, 여기서 비트 값 0은 풀로부터 대응하는 식별자 시퀀스의 배제에 의해 표현되고, 비트 값 1은 풀에서 대응하는 시퀀스의 포함에 의해 표현된다. 도 14b는 나노포어 장치가 코드워드를 기록하는 방법을 예시한다. 소스 챔버는 식별자 공간의 모든 식별자 시퀀스를 포함한다. 코드워드에서 1의 비트 값에 해당하는 식별자 시퀀스만 목적지 챔버로 전달될 수 있다.
도 15a는 먼저 식별자를 벡터에 삽입한 다음, 절단 부위에서 식별자 시퀀스를 절단함으로써 스페이서가 식별자 시퀀스에 어떻게 삽입되는지를 예시한다. 식별자 시퀀스는 전체 식별자 시퀀스를 결정하는 데 식별자 시퀀스의 절반을 시퀀싱하는 것으로 충분하도록 설계된다. 도 15b는 나노포어 시스템이 식별자 분자를 수용할지 또는 거부할지를 결정하기 위해 적절한 시간을 스페이서가 허용하는 메커니즘의 예를 보여준다.
도 16a는 나노포어 장치가 코드워드를 기록하는 방법을 예시한다. 소스 챔버는 식별자 공간의 모든 식별자 시퀀스를 포함한다. 코드워드에서 비트 값 1에 해당하는 식별자 시퀀스만 비트 값 "1" 목적지 챔버로 전달될 수 있다. 코드워드에서 비트 값 0에 해당하는 식별자 시퀀스만 비트 값 "0" 목적지 챔버로 전달될 수 있다. 도 16b는 나노포어 장치가 코드워드를 기록하는 방법을 예시한다. 비트 값 "1" 목적지 챔버에는 비트 값이 1인 식별자 공간의 모든 식별자 시퀀스가 포함된다. 구성 요소의 서브세트가 정보 검색을 위한 프로브로 지정되면 라이브러리가 시퀀싱되고 프로브 시퀀스가 있는 식별자만 새 챔버(이 경우 소스 챔버)로 이동한다.
도 17은 예시적인 구현에 따른 프린터-피니셔 시스템의 베이스 모듈을 도시한다.
도 18a는 프린터 엔진 랙을 나타낸다. 도 18b는 예시적인 구현에 따른 프린트 헤드의 위치 설정의 개략도이다.
도 19는 예시적인 구현에 따라, 일련의 식별자에 따라 구획으로 용액을 분배하는 도면을 도시한다.
도 20은 예시적인 구현에 따른 풀링 서브시스템을 도시한다.
도 21은 예시적인 구현에 따른 아카이벌 정보 시스템을 도시한다.
도 22는 예시적인 구현에 따른 레이어에 의해 조직화된 운영 체제의 시스템도를 도시한다.
도 23은 예시적인 구현에 따른, 3개의 레이어 및 8개의 구성요소의 구성요소 라이브러리를 갖는 레이어화된 제품 생성자의 시스템도를 도시한다.
도 24는 예시적인 구현에 따라, 해시를 부가함으로써, 오류 보호와 함께 핵산 분자에 디지털 정보를 저장하기 위한 흐름도를 도시한다.
도 25는 예시적인 구현에 따라 해시를 별도로 저장함으로써 디지털 정보를 오류 보호와 함께 핵산 분자에 저장하기 위한 흐름도를 도시한다.
도 26은 예시적인 구현에 따라 분할 방식을 사용하여 핵산 분자에 디지털 정보를 저장하기 위한 흐름도를 도시한다.
도 27은 예시적인 구현에 따른 균일 가중치 코드의 시스템도를 도시한다.
도 28은 예시적인 구현에 따른 디코딩 스택의 시스템도를 도시한다.
도 29는 예시적인 구현에 따라 핵산 서열에 저장된 정보를 판독하기 위한 흐름도를 도시한다.
도 30은 예시적인 구현에 따른 PCR 증폭 방식을 도시한다.
도 31a 및 31b는 예시적인 구현에 따른 신호 이벤트를 갖는 식별자 핵산 분자를 도시한다.
도 32는 예시적인 구현에 따른 아카이벌 동작의 시스템도를 도시한다.
도 33은 예시적인 구현에 따라 데이터를 기록하는 시스템도를 도시한다.
도 34는 예시적인 구현에 따라 컨테이너에 데이터 블록을 저장하기 위한 흐름도를 도시한다.
본 명세서에 기술된 시스템, 방법 및 장치의 전반적인 이해를 제공하기 위해, 특정한 예시적인 실시예가 기술될 것이다. 본 명세서에 설명된 실시예 및 특징은 핵산 기반 데이터 저장과 관련하여 사용하기 위해 구체적으로 설명되었지만, 아래에 설명된 모든 구성요소 및 기타 특징은 임의의 적합한 방식으로 서로 조합될 수 있고, 다른 유형의 데이터 저장 및 핵산 기술에 적응 및 적용될 수 있음을 이해할 것이다.
기존 방법보다 저렴하고 상업적으로 구현하기 쉬운 핵산 디지털 데이터 저장 인코딩 및 검색 방법이 필요하다. 본 명세서에 기술된 시스템, 장치 및 방법은 핵산 분자에 데이터를 기록하고 핵산 분자로부터 데이터를 판독하기 위한 확장 가능한 방법을 제공한다. 본 개시내용은 4개의 주요 관심 영역을 다룬다: (1) 핵산 분자에 저장된 정보를 정확하고 신속하게 판독, (2) 데이터를 핵산 분자에 효율적으로 인코딩하기 위한 데이터 분할, (3) 데이터를 핵산 분자에 인코딩할 때 오류 방지 및 수정 (4) 핵산 분자에 저장된 정보에 대한 효율적인 액세스를 제공하는 데이터 구조.
식별자는 디지털 정보를 인코딩하는 핵산 서열이다. 예를 들어 식별자는 심볼 스트링의 심볼을 나타낼 수 있다. 식별자는 프로브에 결합하도록 구성될 수 있는 구성 요소 핵산을 포함할 수 있다. 우리는 "어드레서블 구성 요소"와 같이 구성된 구성 요소 핵산 서열을 참조할 수 있다. 본 명세서에 기술된 모든 구성요소는 어드레서블 구성요소일 수 있다. 본원에서 사용되는 용어 "프로브"는 일반적으로 식별자 핵산 분자 상의 표적 서열에 결합하는 작용제를 지칭한다. 표적 서열은 구성요소의 일부일 수 있다. 프로브는 표적 서열과 일치하거나 상보적인 서열을 포함할 수 있다. 프로브는 상기 표적 서열을 포함하는 모든 식별자 핵산 분자를 분리하기 위해 추가로 사용될 수 있다. 예를 들어, 프로브는 표적 서열을 포함하는 모든 식별자 핵산 분자를 강화하는 PCR 반응에서 프라이머일 수 있다. 또는 프로브는 상기 올리고뉴클레오티드에 상응하는 서열을 갖는 모든 식별자 핵산 분자를 선택하는 데 사용될 수 있는 친화성 태그가 붙은 올리고뉴클레오티드 분자를 포함할 수 있다. 예를 들어, 프로브는 상보적 표적에 결합하고 후속적으로 스트렙타비딘 비드 또는 컬럼에 의해 포획되는 비오티닐화된 올리고일 수 있다. 음수 선택에도 프로브를 사용할 수 있다. 예를 들어, 친화성 태그 프로브를 사용하여 특정 표적 서열을 포함하는 모든 식별자를 제거할 수 있다. 또는 대안적으로 프로브는 특정 표적 서열을 포함하는 모든 식별자를 절단하거나 분해하는 Cas9와 같은 활성 뉴클레아제를 포함할 수 있다.
도 1 및 도 2는 구성요소를 포함하는 식별자가 디지털 정보를 인코딩할 수 있는 방법의 예를 도시한다. 도 3은 구성요소로부터 식별자를 구성하기 위한 "제품 구성표"라고 하는 예시적 구성을 도시하며, 여기서 구성요소는 레이어로 분할되고 식별자는 각 레이어로부터 하나의 구성요소를 조립함으로써 구성된다. 조합 공간 또는 식별자 공간은 특정 구성표에서 형성될 수 있는 모든 가능한 식별자 세트이다. 이 공간의 서브세트는 디지털 정보를 인코딩하도록 구성된다. 이 서브세트를 식별자 라이브러리 또는 풀이라고 한다. 도 4-7은 제품 구성표를 실행하기 위한 예시적인 화학법을 도시한다. 도 8은 식별자 라이브러리로부터 식별자의 특정 서브세트에 액세스하기 위해 프로브를 사용하는 예를 도시한다.
일부 실시예에서, 식별자는 전적으로 어드레서블 구성 요소로 구성될 수 있다. 어드레서블 구성요소는 식별자를 형성하기 위해 조립될 수 있거나, 빼기 또는 대체 접근법을 통해 식별자 시퀀스에 도입될 수 있다. 대안적으로, 그것들은 de novo 합성에 의해 핵산 식별자에 통합될 수 있다. 쓰기 방법에 따라 속도와 비용이 다르다. 또한 식별자에 통합될 수 있는 가능한 구성 요소의 수가 다를 수 있다. 식별자 구성, 데이터를 식별자에 매핑, 프로브를 사용하여 특정 식별자 세트에 액세스, 식별자 판독을 위한 기술들이 2017년 12월 21일 출원된 "NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 특허 번호 10,650,312(DNA에서의 디지털 정보 인코딩을 설명함); 2019년 5월 16일에 제출되고 미국 공개 번호 2019/0362814로 공개된 "SYSTEMS FOR NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 출원 번호 16/461,774(DNA 기반 데이터 저장을 위한 인코딩 방식을 설명함); 2019년 5월 16일에 출원된 "COMPOSITIONS AND METHODS FOR NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 출원 번호 16/414,758; 2019년 8월 5일에 출원된 "SYSTEMS AND METHODS FOR STORING AND READING NUCLEIC ACID-BASED DATA WITH ERROR PROTECTION"이라는 제목의 미국 출원 번호 16/532,077(DNA 인코딩을 위한 데이터 구조 및 오류 보호 및 수정 설명); 및 2020년 5월 11일에 출원된 "DATA STRUCTURES AND OPERATIONS FOR SEARCHING, COMPUTING, AND INDEXING IN DNA-BASED DATA STORAGE"라는 제목의 미국 출원 번호 16/872,129(액세스, 순위 및 검색을 위한 데이터 구조 및 연산 설명)에 기재되어 있고, 이들 각각의 내용은 전체가 참조로 여기에 포함된다.
비트를 식별자로 인코딩
조합 공간의 각 식별자는 고정된 수의 N 구성요소를 포함할 수 있으며, 여기서 각 구성요소는 N 레이어 세트의 별개의 레이어에서 나오고, 상기 레이어의 다수의 가능한 구성요소 세트 중 하나이다. 각 구성 요소는 좌표(j, Xj)로 지정할 수 있다. 여기서 j는 레이어의 라벨이고, Xj는 레이어 내 구성 요소의 라벨이다. N 레이어가 있는 상기 체계의 경우, j는 세트 {1, 2, …, N}의 요소이고 Xj는 세트 {1,2, …, Mj)의 요소이다. 여기서 Mj는 레이어 j의 구성 요소 수이다. 레이어에 대한 논리적 순서를 정의할 수 있다. 또한 각 레이어 내의 각 구성 요소에 대한 논리적 순서를 정의할 수 있다. 이 라벨링을 사용하여 조합 공간에서 가능한 모든 식별자에 대한 논리적 순서를 정의할 수 있다. 예를 들어, 먼저 레이어 1의 구성 요소 순서에 따라 식별자를 소팅한 다음, 도 9에 도시된 바와 같이 레이어 2의 구성 요소 순서에 따라, 등등으로 소팅할 수 있다.
식별자의 논리적 순서는 디지털 정보를 할당하고 순서화하는 데 더 사용될 수 있다. 디지털 정보는 각 식별자를 포함하는 핵산으로 인코딩되거나 식별자 자체의 존재 또는 부재로 인코딩될 수 있다. 예를 들어, 4개의 식별자가 연속적으로 그룹화될 때마다 4비트의 정보를 인코딩하는 코드북을 만들 수 있다. 이 예에서, 코드북은 4개의 식별자의 고유한 조합에 4비트의 각 가능한 스트링을 매핑할 수 있다(4개의 식별자의 가능한 조합이 16개 있으므로 최대 log2(16) = 4비트의 데이터를 저장할 수 있음). 또 다른 예로, 8개의 식별자로 구성된 모든 인접 그룹에서 6비트의 데이터를 인코딩하는 코드북을 만들 수 있다. 이 예에서 코드북은 6비트의 각 가능한 스트링을 8개의 식별자 중 4개의 고유한 서브세트에 매핑할 수 있다(8 choose 4 = 70개의 이러한 서브세트가 있으므로 floor(log2(70)) = 6비트의 데이터까지를 저장할 수 있다). 우리는 이러한 식별자 조합을 코드워드라고 부를 수 있고 이들이 인코딩하는 데이터를 워드로 부를 수 있다. 데이터 내의 인접한 워드는 논리적으로 정렬된 식별자 중 인접한 코드워드에 저장될 수 있다. 도 10은 6비트 워드를 8choose4 식별자(8의 그룹에서 선택된 4개의 식별자)로 구성된 코드워드로 매핑하는 코드북을 사용하여 12비트 디지털 스트링을 식별자 풀로 변환하는 예를 보여준다. 코드워드는 모든 비트 위치가 정렬된 식별자에 해당하는 비트 스트링으로 상징적으로 표현될 수 있고, 여기서와 비비트 값은 코드워드에 해당 식별자가 없음을 나타내고, '1'의 비트 값은 코드워드의 해당 식별자가 있음을 나타낸다.
임의의 길이 및 시퀀스 구성의 식별자 시퀀스를 포함하도록 이 인코딩 체계를 일반화할 수 있다. 예를 들어, 도 11에 도시된 바와 같이, 상이한 수의 구성요소를 포함하는 식별자 시퀀스를 허용하고, 주어진 시퀀스의 식별자가 접두사인 모든 식별자 시퀀스에 논리적으로 선행하도록, 식별자 시퀀스를 사전순으로 정렬할 수 있다. 이것은 영어 사전에서 워드가 정렬되는 방식과 유사하다. 또한 구성 요소를 기본으로 정의할 수 있다. 예를 들어, 4개의 자연 염기 A, G, C, T를 염기의 위치에 의해 주어진 레이어 내에서 4개의 개별 구성 요소로 사용할 수 있다. 이러한 방식을 사용하고 가능한 모든 기본 위치에 대해 가능한 레이어를 지정하면, 가능한 모든 DNA 서열을 식별자로 포함할 수 있다. 예를 들어 가능한 모든 DNA 서열의 순서는 A, C, G, T, AA, AC, AG, AT, CA, CC, CG, CT, GA, GC, GG, GT, TA, TC, TG, TT, AAA, AAC, AAG, AAT, ACA, ACC, ACG, ACT 등일 것이다. 다른 실시예에서, 우리는 이 식별자 순서를 보존할 수 있지만 식별자 공간을 이들 시퀀스의 고정된 서브세트로 제한하도록 선택할 수 있다. 예를 들어 식별자 공간을 50개에서 100개 사이의 염기가 있는 모든 시퀀스로 제한할 수 있다. 또는 특정 위치에 특정 염기가 있는 모든 시퀀스로 식별자를 제한할 수 있다. 더 일반적으로, 우리는 임의의 시퀀스 세트를 식별자 공간으로 선택하고, 임의의 사전을 사용하여 순서를 정의할 수 있다. 일부 실시예에서 다수의 식별자 시퀀스는 논리적으로 정렬된 동일한 위치에 매핑될 수 있다. 일 예가 도 12에 도시되어 있다. 여러 시퀀스가 동일한 것처럼 취급되므로 이를 "축퇴 인코딩 체계"라고 한다.
시퀀싱-별 쓰기
전술한 인코딩 체계를 사용하여, 보다 큰 식별자 공간으로부터 식별자 시퀀스의 서브세트에 대응하는 식별자 분자의 물리적 풀을 생성함으로써 디지털 정보를 핵산에 기록할 수 있다. 식별자 풀을 생성하는 시스템은 보강형일 수 있다. 즉, 서브세트 내에서 각 식별자 시퀀스를 구성하고 서브세트에 없는 각 식별자 시퀀스의 구성을 제외하는 것이다. 다른 접근 방식은 감산형일 수 있다. 즉, 식별자 공간의 모든 식별자 시퀀스를 생성한 다음, 서브세트에 속하지 않는 모든 식별자 시퀀스를 선택적으로 제거하는 것이다. 여기서 우리는 나노포어 시퀀싱이 시퀀스 선택을 수행하는 데 사용되는 감산형 접근법을 설명한다.
나노포어 시퀀싱은 전해액에 전기장이 인가되는 시스템과, 소스 챔버 및 목적지 챔버의 두 챔버를 분리하는 적어도 하나의 나노포어 채널을 포함할 수 있다. 일부 실시예에서, 나노포어 채널은 고체 상태 멤브레인 내에 형성된다. 일부 실시예에서, 나노포어 채널은 알파-헤몰리신(αHL) 또는 마이코박테리움 스메그마티스 포린 A(MspA)로부터 형성된다. 나노포어 시퀀싱 동안 소스 챔버의 식별자 분자는 나노포어 채널을 통해 전좌되며, 채널 전체의 임피던스가 측정된다. 각 식별자 시퀀스에는 해당하는 고유한 임피던스 시그너처가 있으므로 나노포어가 가로질러 이동할 때 나노포어의 임피던스 값을 사용하여 식별할 수 있다. 식별자의 나노포어 시퀀싱의 예가 도 13에 도시되어 있다. 식별자 시퀀스가 구성 요소로 구성된 경우 식별자의 각 구성 요소는 해당 고유 임피던스 시그너처를 가질 수 있으므로, 측정된 임피던스 값을 고유 임피던스 시그너처와 비교하여 구성 요소 ID를 결정할 수 있다.
그러한 임피던스 시그니처는 데이터베이스에 저장될 수 있고, 식별자 분자가 나노포어를 가로질러 전좌함에 따라 실시간으로 참조 임피던스 값에 매칭될 수 있다. 이 매칭 프로세스에 기초하여, 목적지 챔버로 계속 전좌하기 위해 분자를 수용하거나, 분자를 거부하고 분자가 소스 챔버에 남아 있도록 전좌를 역전시키는 결정이 이루어질 수 있다. Oxford Nanopore TechologiesTM 사의 minIONTM, GridIONTM 및 PromethIONTM 시퀀서는 이 프로세스에 사용할 수 있는 시퀀서의 예이다. 그러나, 나노포어에 걸쳐 극성을 반전시킴으로써 실시간 선택적 시퀀싱이 가능한 나노포어 기술을 포함한, 다른 나노포어 시퀀싱 기술이 사용될 수 있다. 때로 "읽을 때까지"라고 지칭되는 이 선택적 기술은 게놈 응용 분야에서 입증되었으나(Edwards, H.S., et al. "Real-Time Sequencing with RUBRIC: Read When with Basecall and Reference-Informed Criteria." Sci Rep. 2019; 9: 11475., 이는 전체 내용이 참조로 여기에 포함됨), 여기에 설명된 대로 디지털 정보를 DNA에 기록하는 데 적용되지 않고 있다. 소스 챔버의 전체 식별자 공간에 해당하는 식별자 분자를 로드한 다음, 실시간 선택적 시퀀싱을 사용하여 표적 서브세트의 식별자 시퀀스에 해당하는 분자가 목적지 챔버로 나노포어를 통과하고, 표적 서브세트 내 식별자 시퀀스에 해당하지 않는 식별자 시퀀스는 목적지 챔버에 들어가는 것이 거부됨을 보장한다. 충분한 시간이 지나면 최종 목적지 챔버는 위에서 설명한 인코딩 체계에 따라 디지털 정보를 저장하는 식별자 풀에 해당한다. 기록 프로세스의 예는 도 14에 도시되어 있다. 그런 다음 식별자 풀은 PCR로 증폭되어 컴퓨팅, 임의 액세스 또는 판독과 같은 다운스트림 프로세스에 사용될 수 있다.
일부 실시예에서, 나노포어 간에 인가된 전기장은 100mV 이상의 차동 전좌를 생성한다. 이 높은 차동 전좌는 식별자가 예를 들어 100mV 미만의 전좌를 사용하는 속도와 비교하여 상대적으로 높은 속도로 나노포어 채널을 통과할 수 있게 한다. 예를 들어, 식별자의 전좌가 초당 1,000 염기보다 큰 속도로 발생할 수 있다. 특히, 전좌율은 초당 1,000,000 염기일 수 있다. 또한, 쓰기 처리량을 증가시키기 위해 다중 나노포어를 병렬로 사용할 수 있다.
일부 실시예에서, 작용제는 전좌 이전에 식별자에 바인딩된다. 예를 들어, 작용제는 화학적 모이어티, 단백질, 효소, 염기 유사체, 접합된 핵산, 헤어핀이 있는 핵산 또는 메틸 그룹일 수 있다. 일부 실시예에서, 작용제가 화학적 모이어티인 경우, 메틸트랜스퍼라제와 같은 효소는 화학적 부분을 적어도 하나의 식별자 핵산 분자에 결합시킨다. 일부 실시예에서, 작용제가 염기 유사체이고 작용제가 폴리머라제와 같은 효소를 사용하여 결합되는 경우, 효소는 복제 동안 적어도 하나의 식별자 핵산 분자에 염기 유사체를 결합시킨다.
작용제는 판독하는 동안 식별자의 시퀀스를 결정하는 데 도움이 될 수 있는 작용제 시그너처와 연관된다. 적어도 하나의 식별자 핵산 분자에 작용제를 결합시키는 것은 식별자의 구성요소 상의 알려진 위치에서 발생하여, 알려진 위치에서의 작용제 시그너처가 전좌 동안 임피던스 값의 알려진 이동을 초래한다. 따라서 작용제의 존재는 식별자에 대해 과장된 "프로필"을 생성할 수 있으므로, 읽는 동안 신호 대 잡음비가 증가한다. 이를 통해 읽기 및 쓰기 중에 정확도를 유지하면서 전좌 속도를 높일 수 있다.
예를 들어 옥스포드 나노포어 테크놀로지(Oxford Nanopore TechnologiesTM)로부터의 현재의 나노포어 시퀀서 플로우 셀은 며칠 내에 최대 200 기가베이스 이상의 DNA를 시퀀싱할 수 있다. 각 식별자가 약 200개의 염기인 경우 이러한 플로우 셀에서 실행되는 시퀀싱은 최종 식별자 풀의 멤버십에 대해 질의된 총 약 10억 개의 식별자 시퀀스를 생성한다. 이러한 방법은 최대 1기가비트의 정보를 인코딩하는 데 사용할 수 있다. 그러나 시퀀싱은 무작위 프로세스이고 일부 시퀀스는 여러 번 시퀀싱되는 반면 다른 시퀀스는 전혀 시퀀싱되지 않기 때문에, 인코딩된 정보에서 코드워드 삭제 또는 오류가 발생한다. 이러한 삭제 또는 오류의 발생률은 예를 들어 1기가비트 정보 대신 100메가비트 정보를 인코딩하기 위해 약 10억 개의 시퀀스 읽기를 사용하여 시퀀싱 적용 범위를 늘림으로써 줄일 수 있다. 오류 및 삭제의 나머지 기회는 오류 수정으로 수정할 수 있다. 이러한 오류 정정은 정보를 특정 임계값까지 오류 허용 오차로 인코딩하는 Reed-Solomon 코딩과 같은 순방향 오류 정정이거나 쓰기 프로세스 중에 발생하는 오류를 추적하고 이후에 수정하는 역방향 오류 정정 방법일 수 있다.
읽기 및 쓰기가 동시에 발생하기 때문에 역방향 오류 정정을 수행하는 능력은 이 쓰기 방법에 고유하다. 이를 통해 시스템은 최종 식별자 풀에 있어야 했지만 포함되지 않은 모든 식별자 시퀀스 또는 반대로 최종 식별자 풀에 포함되지 않아야 했지만 실수로 포함된 모든 시퀀스를 추적할 수 있다. 이러한 메타데이터는 인코딩된 정보와 함께 기존 방식이나 별도의 식별자 풀에 저장할 수 있다. 이러한 메타데이터는 전체 데이터보다 크기가 훨씬 작을 가능성이 높다.
보다 일반적으로, 기록된 식별자 시퀀스를 판독함으로써 기록된 식별자 시퀀스를 확인하는 능력은 이 방법에 고유하다. 이를 통해 역방향 오류 수정이 가능할 뿐만 아니라, 쓰기와 읽기가 서로 다른 두 단계로 발생하는 다른 방법에 비해 보다 엄격한 품질 관리가 가능하다. 예를 들어, 쓰기 프로세스 도중에 실패했거나 낮은 품질의 실행이 결정될 수 있으며, 이 경우 시스템은 프로세스를 종료하고 종료를 보고하고 시스템과 시약을 재설정한 다음 다시 시작할 수 있다. 이것은 읽기가 쓰기에 접선적으로 발생하고 교정 읽기에 사용될 수 있는 전통적인 정보 쓰기 프로세스와 더 유사하다. 이것은 또한 동일한 시스템을 사용하기 때문에 읽기 및 쓰기 프로세스가 함께 개선될 수 있는 기술 개발 생태계를 만든다. 나노포어 시퀀서의 속도, 처리량, 정확도 및 편의성이 DNA에서 정보를 읽는 데 향상됨에 따라 정보를 DNA에 쓰는 데도 향상된다. 이 접근 방식의 또 다른 이점은 시스템의 공간이다. 예를 들어, Oxford Nanopore TechnologiesTM의 MinIONTM과 같은 Nanopore 시퀀서는 핸드헬드가 가능하며 스마트폰에서도 실행할 수 있다.
소스 챔버로 들어가는 식별자 시퀀스의 전체 공간은 대량으로 생성될 수 있고 다수의 기록 인스턴스를 위해 재사용될 수 있다. 이러한 식별자 시퀀스를 빠르고 저렴하며 안정적으로 생성하기 위해 여러 전략을 사용할 수 있다. 일 실시예에서, 식별자 시퀀스는 제품 구성표를 사용하여 구성요소 부품으로부터 조립을 통해 생성될 수 있다. 예를 들어, 도 15에 예시된 바와 같이, 모든 레이어의 모든 구성요소 분자는 대규모 다중 조립 반응에서 함께 혼합될 수 있다. 예를 들어, 10억 시퀀스의 식별자 공간은 각각 10개 구성요소의 9개 레이어를 함께 혼합함으로써 구성될 수 있다. 모든 구성 요소가 유사한 효율성으로 조립되고 모든 구성 요소가 유사한 화학량론에서 대규모 반응에 로드되는 한, 결과 제품 풀에서 모든 식별자 시퀀스의 비교적 균일한 분포를 얻을 것으로 예상할 수 있다. 로드할 구성 요소 분자 수를 결정할 때 식별자 공간의 다양성을 고려해야 한다. 예를 들어 전체 식별자 시퀀스의 조립 효율이 1%이고 공간에 총 10억 개의 식별자 시퀀스가 있는 경우 각 구성 요소 레이어의 최소 1000억 개의 분자가 대규모 반응에 추가되어야, 식별자 공간 내 각 식별자 시퀀스의 적어도 하나의 분자를 만들 수 있다.
다른 실시예에서, 공간의 모든 가능한 식별자 시퀀스는 구성 요소 염기로부터 새로이(de novo) 프로그래밍 방식으로 합성될 수 있다. 이러한 프로그래밍 가능한 합성은 어레이 합성에 의해 높은 처리량으로 수행될 수 있으며, 여기서 다중 올리고는 칩에서 병렬로 합성된 다음, 칩에서 제거되고 함께 풀링된다. 이러한 풀링된 올리고 라이브러리는 여러 공급업체에서 사용할 수 있으며 일반적으로 최대 200 염기 길이의 10K-1M개의 올리고의 범위를 가진다. 이러한 방법은 예를 들어 각각 150개 염기에서 최대 1M 식별자 시퀀스의 식별자 공간을 생성할 수 있다. 추가 처리 단계는 더 많은 시퀀스를 생성할 수 있다. 예를 들어, 150-염기 식별자 시퀀스는 엔도뉴클레아제를 사용하여 각각 약 50개 염기의 더 작은 세그먼트로 절단될 수 있도록 설계될 수 있다. 그런 다음 식별자 공간은 50개 염기의 3M 식별자 시퀀스로 변환될 수 있다. 이 프로그래밍 가능한 de-novo 합성 방법은 앞서 언급한 구성 요소 조립 방법에 비해 처리량이 비교적 낮지만 기본 해상도에서 식별자 시퀀스를 설계할 수 있다. 정보가 DNA에 기록된 후 시퀀스는 다운스트림 데이터 애플리케이션에서 특히 잘 작동하도록 설계될 수 있다. 예를 들어, 전체 식별자 시퀀스를 녹인 다음, 다시 함께 혼성화해야 하는 모든 형태의 계산은 각 식별자 시퀀스를 열역학적 상호 작용 측면에서 다른 모든 식별자 시퀀스와 최대로 직교하도록 설계하는 기능으로부터 이점을 얻을 수 있다.
다른 실시예에서, 공간의 모든 가능한 식별자 시퀀스는 축퇴 올리고 합성을 통해 생성될 수 있다. 축퇴 올리고 합성에서는 올리고 합성 과정에서 A, G, C, T 염기의 동일한 혼합물을 입력함으로써 올리고의 특정 위치에서 가능한 모든 염기 조합이 생성된다. 이 합성 방식은 각 올리고를 개별적으로 합성할 필요가 없으며 프로그래밍 가능한 de novo 합성 방식에 비해 훨씬 더 다양한 식별자 시퀀스를 합성할 수 있다. 예를 들어, 올리고의 20개 서로 다른 위치에 있는 축퇴 염기를 지정할 수 있어 단일 풀에서 420개(1조 개 이상)의 가능한 식별자 시퀀스의 다중화 형성이 가능하다. 이 방법은 많은 DNA 서열을 생성할 수 있다는 점에서 프로그래밍 가능한 합성보다 유리하지만 서열 설계 능력에는 한계가 있다. 예를 들어, 이 프로세스에서 생성된 모든 식별자 DNA 시퀀스는 항상 여러 다른 식별자 시퀀스에서 떨어진 하나의 염기 돌연변이이다. 편집 거리에 있는 식별자 간의 이러한 근접성은 쓰기, 저장 및 읽기 프로세스 중에 여러 오류를 유발할 수 있다. 이 위험은 유사한 식별자 시퀀스를 하나로 취급하는 축퇴 인코딩 방식에 의해 상쇄될 수 있다(도 12 참조).
식별자 공간의 식별자 시퀀스가 구성되면, 각 말단에 공통 프라이머 결합 영역을 갖도록 또는 각 말단에 공통 프라이머 결합 서열을 추가하는 능력을 갖도록 설계할 수 있다. 이러한 공통 영역은 식별자 시퀀스의 전체 라이브러리를 무한정 증폭하는 데 사용될 수 있다. 즉, 전체 식별자 공간이 구성되면 정보를 쓰는 여러 인스턴스에서 사용할 수 있는 여러 복사본을 생성하기 위해 복제될 수 있다.
본원에 기술된 시퀀싱에 의한 기록 방법은 분자가 나노포어를 가로질러 이동하는 동안 식별자 분자가 식별자 시퀀스의 표적 서브세트에 속하는지 여부를 결정할 수 있는 시스템에 의존한다. 분자가 목적지 챔버로 완전히 이동한 후에 결정이 내려지면 소스 챔버로 선택적으로 되돌릴 수 없다. 이를 방지하고 분자가 여전히 전좌하는 동안 식별자 분자에 대한 수락 또는 거부 결정이 내려질 가능성을 높이기 위해, 식별자 분자의 관련 부분이 나노포어를 통과한 후 더 오랜 시간 동안 전좌되도록 식별자에 스페이서 시퀀스를 인위적으로 삽입할 수 있다. DNA 분자가 한쪽 끝에서만 시퀀싱될 수 있는 나노포어 시스템에서, 스페이서 시퀀스는 식별자의 반대쪽 끝에 추가되기만 하면 된다. 이는 결찰 또는 중첩 확장 PCR과 같은 다양한 조립 방법을 통해 달성될 수 있다. DNA 분자가 동일한 확률로 양쪽 끝에서 시퀀싱될 수 있는 나노포어 시퀀스에서 스페이서 시퀀스는 식별자 시퀀스에 삽입되어야 하며 식별자 시퀀스의 삽입 지점은 결과 시퀀스 정보가 한쪽 끝에서 스페이서는 반드시 다른 쪽 끝에 있는 서열 정보를 의미하므로 식별자 시퀀스의 어느 한 쪽 끝을 읽는 것이 전체 식별자 시퀀스를 재구성하는 데 충분하다. 이는 스페이서 시퀀스를 선형 식별자 시퀀스에 삽입할 수 있는 인테그라제(intergrases)를 사용한 삽입 방법을 사용하여 달성할 수 있다. 또 다른 구현예에서, 선형 식별자 시퀀스는 스페이서 시퀀스를 포함하는 원형 벡터에 삽입된 후, 식별자 시퀀스 내의 표적 부위에서, 예를 들어 엔도뉴클레아제로, 절단될 수 있다. 생성된 분자는 각 말단에 고유한 식별자 시퀀스를 갖게 되며, 둘 중 하나는 나노포어를 먼저 통과하고 분자의 나머지 부분이 계속 수송될 때 수용 또는 거부 결정을 내리는 데 사용될 수 있다. 이 방법의 예시가 도 15에 도시되어 있다. 스페이서 시퀀스의 길이는 시퀀스 결정 잠복기 및 전좌 속도와의 호환성을 위해 프로그램될 수 있다. 예를 들어, 결정 프로세스에 최대 3초가 필요하고 전좌 속도가 초당 300 염기인 경우, 스페이서 시퀀스는 길이가 900염기 이상이어야 한다. 기록 과정이 완료된 후, 스페이서 시퀀스는 예를 들어 엔도뉴클레아제 분해 또는 관련 식별자 시퀀스의 PCR-ing에 의해 분자로부터 제거될 수 있다.
기록 프로세스를 더욱 턴-키 방식으로 만들기 위해, 시작 식별자 라이브러리(필요한 경우 스페이서 포함됨)는 시퀀싱을 위해 사전 준비되고 소스 챔버에 사전 로드될 수 있다. 이 준비를 통해 시퀀싱에 의한 쓰기 프로세스는 사전 시약 처리 없이 현장에서 주문형으로 발생할 수 있다. 사용자는 단순히 시스템에 데이터를 보내고 쓰기 인스턴스를 실행할 수 있다.
시작 식별자 라이브러리의 복잡성을 줄임으로써 초기 쓰기-시퀀싱 단계의 효율성을 개선하기 위해 추가 챔버가 사용될 수 있다. 나노포어 시퀀싱에서 더 많은 시간이 소요되는 단계 중 하나는 핵산을 나노포어와 연결하는 데 필요한 시간이다. 예를 들어 비트 값이 "0"인 식별자와 같이 특정 핵산이 시퀀싱되고 나노포어에서 거부되는 경우, 식별자의 시작 풀은 비트 값이 "0"인 식별자에 대해 계속 농축될 것이다. 이 농축으로 인해 비트 값이 "1"인 식별자를 찾을 가능성이 줄어든다. 나노포어로 분리된 여러 챔버를 사용하면 이러한 농축을 완화할 수 있다. 하나의 예가 도 16a에 도시되어 있다. "0"의 비트 값에 해당하는 식별자는 제1 목적지 챔버로 소팅되고 "1"의 비트 값에 해당하는 식별자는 제2 목적지 챔버로 소팅된다. 각각의 목적지 챔버는 별개의 나노포어 또는 나노포어 세트에 의해 제어될 수 있다. 각각의 목적지 챔버로의 소팅은 소스 챔버가 "0" 및 "1"의 각각의 비트-값에 대응하는 식별자의 대략 일정한 농축을 유지하도록 병렬로 수행될 수 있다. 유사하게, 이 다중 챔버 접근법은 특정 정보 조각을 시퀀싱하고 디코딩하기 위해, 인코딩된 라이브러리(도 16b)로부터 식별자의 서브세트를 선택하는 데 사용될 수 있다. 마지막으로, 분리된 모든 식별자를 결합하여 원본 라이브러리를 재구성할 수 있다. 즉, 나노포어 변조를 통해 인코딩된 정보를 효과적으로 "삭제"할 수 있다.
본 명세서에 기술된 판독 방법은 임의의 핵산 서열을 판독하는 데 사용될 수 있지만, 본 개시내용의 판독 방법은 식별자 핵산 분자(본원에서는 간단히 "식별자" 또는 "식별자 분자"라고도 함)에 데이터 또는 정보를 기록하는 인코딩 방법을 사용하여 상기 서열에 기록된 핵산 서열에 저장된 정보를 판독할 때 특히 유리하다. 각 식별자 분자의 핵산 서열은 심볼 스트링(예: 비트 스트림)에서 특정 심볼 값(예: 비트 또는 일련의 비트), 해당 심볼의 위치(예: 순위 또는 주소) 또는 두가지 다에 해당한다. 예를 들어, 식별자 분자의 존재 또는 부재는 각각 1 또는 0의 비트 값을 신호할 수 있다(또는 그 반대). 식별자 핵산 분자는 구성 요소 핵산 분자(본원에서 간단히 "구성 요소" 또는 "구성 요소 분자"라고도 함)의 조합 배열을 포함한다. 일부 실시예에서, 구성 요소의 핵산 서열은 레이어가라고도 하는 고유한 세트로 분리된다. 식별자 분자는, 각 레이어에서 선택된 구성 요소 분자 하나씩, 여러 구성 요소 분자를 함께 결찰(또는 조립)하여 조립된다. 가능한 식별자 시퀀스 세트는 구성 요소 시퀀스의 다양한 가능한 조합적 결합에 해당한다. 예를 들어, M개의 레이어로 분리된 C개의 구성요소 시퀀스의 경우, ci는 각 i번째 레이어의 구성요소 시퀀스의 수를 나타내며, 형성될 수 있는 가능한 식별자 시퀀스의 수는 c1×c2×….×cM으로 나타낼 수 있다. 예를 들어, 각각 10개의 구성 요소 시퀀스를 포함하는 12개 레이어의 인코딩 체계는 1012개의 서로 다른 고유 식별자 시퀀스를 생성할 수 있다. 각 식별자 시퀀스가 비트 스트림의 하나의 비트에 해당하는 경우 이 인코딩 체계는 1Tb의 데이터를 나타낼 수 있다. 디지털 정보를 핵산 분자에 쓰는 다양한 방법의 예로 2017년 12월 21일에 출원되고 미국 특허 공개 번호: 2018/0137418로 공개된 "NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 출원 번호: 15/850,112; 2019년 5월 16일 출원된 "SYSTEMS FOR NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 출원 번호 16/461,774; 및 2019년 5월 16일에 출원된 "COMPOSITIONS AND METHODS FOR NUCLEIC ACID-BASED DATA STORAGE"라는 제목의 미국 출원 번호: 16/414,758 가 있으며, 이들 각각은 참고자료로 본 명세서에 포함된다.
핵산 분자를 시퀀싱하거나 판독하는 것은 종종 뉴클레오티드 간 구별의 어려움으로 인해(예를 들어 불량한 신호 대 잡음비로 인해) 오류가 발생하기 쉽다. 상기 기술된 방법을 사용하여 인코딩된 심볼은 선험적으로 알려진 구성요소 분자 세트로부터 형성된 식별자 핵산 분자로 표현되기 때문에, 그 안에 인코딩된 정보를 결정하기 위해 주어진 분자의 서열을 판독하는 것은 해당 시퀀스의 모든 각각의 단일 염기의 정확한 판독을 필요로 하지 않는다. 대신에, 본 명세서에 개시된 판독 방법은 상대적으로 높은 오류율을 허용할 수 있고 여전히 핵산 분자로부터 디지털 정보를 정확하게 해독할 수 있다. 그렇게 하기 위해, 읽은 시퀀스의 일부는 대략적인 스트링 매칭 기술을 사용하여 알려진 구성 요소 시퀀스 세트에 매칭되어, 심볼 스트링에서 어느 심볼이 관찰(또는 판독) 식별자 분자로 나타날 가능성이 가장 높은지 결정할 수 있다. 일부 실시예에서, 구성요소 시퀀스는 각각의 구성요소 시퀀스가 적어도 최소 개수의 기본 차이(예를 들어, 최소 해밍 거리 또는 레벤슈타인 거리)에 의해 서로 구성요소 시퀀스로부터 분리되도록 설계된다. 이러한 방식으로 구성요소 시퀀스가 서로 떨어지도록 요구하면 시퀀스를 매칭시킬 때 구성요소 분자의 한 시퀀스가 다른 구성요소 시퀀스로 오인될 가능성이 줄어든다. 따라서 본 개시내용의 판독 시스템은 견고하고(예를 들어, 염기 오류에 덜 민감함), 식별자 분자는 도 28 또는 도 29를 참조하여 하기에서 더 상세히 설명되는 바와 같이 전통적인 시퀀싱보다 더 빠른 속도로 더 적은 오류로 판독될 수 있다.
핵산 분자에 저장된 데이터를 읽을 때 오류에 대한 내성을 개선하는 한 가지 방법은 데이터를 인코딩할 때 오류 보호 심볼 및 오류 수정 체계를 포함하는 것이다. 이를 달성하기 위해 소스 데이터(예: 심볼 스트링)가 블록으로 분할되고 각 블록에 대한 해시가 계산되며 각 블록의 끝에서 해시가 소스 데이터에 추가되어 수정된 심볼 스트링을 얻고, DNA에 기록된다. 이러한 해시 중 하나에 해당하는 수정된 심볼 스트링의 일부가 DNA에서 판독되면 해당 블록의 판독된 심볼에서 계산된 해시와 비교된다. 판독된 해시와 계산된 해시 사이의 불일치는 판독 오류를 나타낸다. 예를 들어, 핵산 분자에서 추출된 정보가 소스 데이터와 일치하지 않는다. 핵산 분자에 저장된 데이터를 읽을 때 오류에 대한 내성을 더 향상시키기 위해 리드-솔로몬 코드와 같은 오류 보호 코드를 소스 데이터, 또는 해싱된 소스 데이터를 나타내는 위에서 수정된 심볼 스트링에 적용할 수 있다. 리드-솔로몬 코드는 도 24-25를 참조하여 아래에서 더 상세히 설명되는 바와 같이, 데이터를 읽을 때 잘못된 요소와 요소 삭제 모두에 대해 오류 허용 오차를 증가시킨다.
데이터를 핵산 분자에 기록하기 전에 데이터에 균일한 가중치 코드를 적용하면 핵산 분자로부터 해당 데이터를 다시 판독하는 효율도 증가할 수 있다. 다중 식별자 분자는 고체, 액체 또는 분말 형태를 갖는 풀에 위치할 수 있다. 예를 들어, 식별자 분자는 별도의 구획에 형성될 수 있으며, 그 후 구획이 통합되어 풀을 형성할 수 있다. 균일한 가중치 코드는 각 구획에 특정 수의 식별자 분자가 있음을 보장한다. 데이터는 워드로 분리된 다음, 각각의 결과 코드워드가 특정 유형의 동일한 수의 심볼을 갖도록 보장하는 방식으로 코드워드를 형성하도록 변환될 수 있어서(예: 심볼이 비트일 때 모든 코드워드는 1의 값을 갖는 동일한 수의 비트를 가질 수 있음), 동일한 "가중치"를 갖는 코드워드가 생성된다. 예를 들어, NchooseK 인코딩 체계에서 각 코드워드는 하나의 구획에 형성된 식별자로 표시될 수 있으며, 각 구획은 N개의 가능한 시퀀스들의 정확히 K개 식별자 시퀀스를 포함할 것이다(풀 또는 구획에는 개별 식별자 분자의 복사본이 포함되며, 여기서 식별자 분자의 각 복제본은 동일한 식별자 시퀀스를 갖는다. 본원에서 사용된 바와 같이, 풀 또는 구획 내의 "다수의 식별자 시퀀스" 또는 "다수의 식별자"는 개별 식별자 분자의 다수의 복제본을 지칭하며, 각각의 복제본은 동일한 식별자 시퀀스에 대응한다). 해당 풀 또는 구획을 시퀀싱할 때, 코드워드를 나타내는 N개의 가능한 시퀀스에 대해 K개 미만의 식별자 시퀀스가 읽히거나 관찰되는 경우, 이는 코드워드 값을 해석하기에 데이터가 충분하지 않음을 나타낸다. 이러한 이벤트를 코드워드 소거(codeword erasure)라고 한다. 한편, 시퀀싱 중에 K개의 식별자 시퀀스(코드워드를 나타내는 N개의 가능한 시퀀스에 대해)를 읽으면, 시퀀싱 프로세스가 중지될 수 있으므로, 시퀀싱 시간이 줄어들고 코드워드를 해석하는 데 필요한 효율성이 향상될 수 있다. 일부 예에서, 코드워드를 나타내는 N개의 가능한 시퀀스에 대해 K개보다 많은 식별자 시퀀스가 판독되면, 코드워드는 가장 높은 복제본 수를 갖는 K개의 식별자 시퀀스로부터 해석될 수 있다. 일부 예에서, 관찰된 K개보다 많은 시퀀스로부터의 K개의 식별자 시퀀스의 모든 조합은 가능한 코드워드 값들의 보다 제한된 세트를 결정하기 위해 고려될 수 있다. 올바른 값은 예를 들어 해싱을 사용하여 추가 다운스트림 처리에서 결정될 수 있다.
DNA로부터 정보를 판독하는 효율을 향상시키는 한 가지 방법은 데이터 스트링의 데이터 블록 위치를 유지하기 위해 데이터 구조를 사용하는 것을 포함한다. 예를 들어 큰 데이터 스트링을 분리하여 두 개 이상의 컨테이너에 저장할 수 있다. 사용자가 액세스하려는 정보가 포함된 컨테이너를 결정하기 위해, 시스템은 해당 위치(예: 컨테이너 번호 또는 배치)를 보유하는 B-트리 또는 트라이(trie) 구조에 액세스할 수 있다. 이를 통해 사용자는 데이터 스트링이 포함된 각 컨테이너의 정보를 읽는 대신 편리한 방식으로 찾고 있는 정보에 액세스할 수 있다. 또한, 사용자가 접근하고자 하는 정보는 컨테이너에 포함된 식별자의 총 개수보다 작은 복수의 식별자만을 포함할 수 있다. 그러한 경우에, 컨테이너에 존재하는 가능한 식별자의 전체 공간보다는 표적 복수를 포함하는 가능한 식별자의 작은 서브세트만을 액세스하고 판독하는 것이 더 효율적이고 비용이 덜 들 것이다. 따라서 B-트리 또는 트라이 구조에 포함된 위치 정보는 컨테이너 외에 복수의 표적 식별자에 대한 정보를 포함하도록 또한 구성될 수 있다.
따라서 본 명세서에 기재된 시스템 및 방법은 비용을 감소시키고 핵산 분자에 정보를 기록하는 처리량을 증가시키는 여러 기회를 제공한다. 첫째, 일련의 구성 요소를 재사용하고 재결합하여 새로운 디지털 정보 패킷을 작성할 수 있다. 따라서 각각의 새로운 쓰기 작업에 대해 염기별 합성을 사용하는 데 드는 비용이 많이 드는 요건은 여러 쓰기 작업에 걸쳐 상각될 수 있는 일회성 염기별 합성 비용으로 대체된다(예: 10μmol 스케일에서 224개의 30-염기 올리고를 이용하여 860테라비트 패킷을 기록). 둘째, 인코딩된 정보는 DNA 구성 요소의 시퀀스에서 분리되어, 쓰기, 저장, 복사, 질의 및 읽기 작업에 최적화될 수 있는 대규모 시퀀스 설계 공간을 사용할 수 있다. 셋째, 본원에 기술된 핵산 분자 인코딩 방식은 향상된 오류 정정을 포함하고 최적화된 작동 속도를 제공한다.
다음 설명은 핵산 분자의 데이터 인코딩에 대한 개요로 시작하여, 도 17 내지 도 21과 관련하여 설명된 바와 같이 인코딩된 핵산 분자를 인쇄하고 저장하도록 구성된 기록 및 아카이브 시스템에 대한 설명으로 이어진다. 본 개시는 도 22-27과 관련하여 다양한 인코딩 방법을 설명하며, 오류 보호, 효율적인 인코딩 및 "가중치 최소화"를 위해 설계된 체계를 포함한다. 그 다음 설명은 도 28 내지 도 31의 디코딩 시스템 및 방법을 설명한다. 설명은 도 34의 핵산 분자로부터 특정 정보의 검색에 사용될 수 있는 데이터 구조를 소개한다. 도 32는 아카이브 동작의 개요를 도시하고, 도 33은 핵산 분자에 데이터를 기록하는 시스템도를 보여준다.
본원에 기술된 방법을 사용하여 핵산 분자에 정보를 기록하는 것은 일련의 심볼을 식별자 시퀀스로 인코딩하는 것을 포함하며, 여기서 각 심볼의 위치 및 값은 식별자 시퀀스로 표시된다. 일부 실시예에서, 각각의 식별자 분자는 정의된 레이어를 기반으로 정렬된, 결찰된 미리 만들어진 DNA 구성 요소 분자로 구성된다. 각 레이어 내에서, 여러 고유한 DNA 구성요소 서열을 선택하여 식별자 시퀀스를 만들 수 있다. 해당 식별자 시퀀스에 대한 심볼의 일대일 매핑은 해당 구성 요소의 효율적으로 계산된 함수인 식별자 순서에 의해 설정된다. 특정 예로서, 이용가능한 식별자 시퀀스 세트는 15개의 레이어를 포함할 수 있고, 그 중 14개의 레이어는 각각 6개의 고유한 DNA 구성요소 서열을 포함한다. 15번째 레이어는 또한 통합될 28개의 DNA 구성요소 서열(6개가 아닌)을 포함하는 다중레이어일 수 있다. 따라서 각 식별자는 전체 길이 식별자 핵산 분자에 15개의 구성 요소(각 레이어에 하나의 구성 요소)를 포함할 수 있다. 쓰기 과정에서, 구성 요소 분자는 반응 구획에서 함께 조립되어 식별자 분자를 형성한다. 일부 실시예에서는 "다중 레이어"(multiplex layer)의 여러 구성 요소만 동일한 반응 구획으로 결합된다.
예로서, 86400초(24시간)에 1테라바이트를 기록하기 위해, 약 8E+11개의 식별자 분자가 조립될 필요가 있을 수 있거나(식별자당 10비트의 정보가 인코딩된다고 가정), 또는 약 5.7E+10개의 액적 반응 구획이 필요할 수 있다. 각 반응은 가능한 28개의 식별자 세트에서 14개의 식별자를 조합할 수 있다. 14개의 구성 요소(각각 6개의 가능한 구성 요소가 있는 14개의 레이어 각각으로부터 하나씩)는 식별자의 "염기"를 지정하고 조합한다. 다중 레이어의 28개 가능한 구성 요소 중 나머지 14개 구성 요소는 조립할 14개의 식별자(28개 가능성 중)를 지정한다. 따라서 각 반응 구획에는 28개의 DNA 구성 요소와 리가아제 또는 기타 반응 믹스처가 필요할 수 있다.
본 명세서에 기술된 방법은 아래에 기술된 바와 같이 기록 시스템을 사용하여 구현될 수 있다. 기록 시스템은 2019년 5월 16일자로 출원된 미국 출원 번호: 16/414,752, 제목이 Printer-Finisher System for Data Storage in DNA에 설명된 것과 같은 프린터-마무리 시스템일 수 있으며, 이는 참조로 본 발명에 포함된다. 기록기 시스템은 기질 상의 개별 위치(예: 반응 구획)에 DNA 구성 요소를 분배하고, 결찰 마스터 믹스를 분배하고, 결찰 반응을 위한 최적 조건을 제공하고, 라이브러리를 구성하는 모든 DNA 식별자를 풀링할 수 있다. 기록 시스템은 도 18 내지 21과 관련하여 아래에서 설명되는 바와 같이 기본 기기, 인쇄 엔진, 인큐베이터 및 풀링 서브시스템의 4개의 모듈식 구성요소를 포함할 수 있다.
본 명세서에 기술된 기록 시스템은 식별자를 구성하기 위한 결찰 반응의 높은 처리량, 병렬 인쇄를 실행할 수 있다. 반응은 롤러 위로 이동하는 유연한 시트(웨빙 또는 기질이라고도 함)에 인쇄된 피코리터(pL) 규모 액적에서 수행될 수 있다. 기록 시스템은 적합한 기성품 프린트 헤드, 드라이버 및 기계 인프라를 사용하여 디지털 잉크젯 인쇄 및 웹 처리와 같은 기술을 통합할 수 있다. 여기에 기술된 시스템 및 방법은 저장 용량 및 기록 처리량을 달성하기 위해 웹 속도, 프린트 헤드 분배 속도, 액적 크기 및 결찰 화학법과 같은 요인들의 최적화를 포함한다. 이를 위해, 잠재적인 화학법 및 하드웨어 오류에 대한 데이터 허용 오차를 보장하기 위해, 여기에 설명된 시스템 및 방법에는 데이터를 인코딩하고 인쇄 지침을 개발하는 구성이 포함되며, 여기에는 DNA 구성 요소 서열을 레이어로 분할하는 방법과 각각의 인쇄 반응에서 구성해야할 식별자 분자의 수에 대한 사양이 포함된다. 예를 들어, 이러한 구성에는 기록 시스템과 통신하고 성능을 추적하는 컴퓨터 시스템이 포함될 수 있다.
도 17은 본 명세서에 기술된 방법을 실행하도록 구성된 기록 시스템의 기본 모듈(102)을 도시한다. 베이스 모듈(102)은 기록 시스템을 통해 웨빙(104)을 이동시키는 풀림/되감기 구성요소를 포함하여, 구성요소가 그 위에 축적될 수 있도록 한다. 웨빙(104)(기판이라고도 함)은 액적 반응 구획을 형성하기 위해 액적이 분배될 재료이다. 예를 들어, 웨빙은 폴리에틸렌 테레프탈레이트(PET) 또는 폴리프로필렌과 같은 결합력이 낮은 플라스틱일 수 있다. 기본 모듈(102)은 릴-투-릴 기계이다. 예를 들어 기본 모듈(102)은 연구 및 라벨 제조 산업을 위해 개발된 Werosys Compact 시스템일 수 있다.
기록 시스템은 또한 인쇄 엔진을 포함한다. 인쇄 엔진의 두 가지 주요 구성 요소는 잉크 관리 시스템과 액적 분사용 프린트 헤드이다. 잉크 관리 시스템에는 진공 펌프, 밸브/튜브, 및 액체 위 헤드스페이스의 진공 압력을 로컬 제어하기 위한 온보드 소프트웨어/전자 장치가 포함된다. 예를 들어, 잉크 관리 시스템은 Megnajet 시스템일 수 있다. 잉크 저장소는 최대 1m 떨어진 곳에 위치할 수 있으며 Meteor 4색 컨트롤러 카드를 사용할 수 있다.
도 18a는 프린트 헤드 장착 랙(200)을 도시한다. 랙(200)은 프린트 헤드 고정 지점(202-204)에 최대 6개의 프린트 헤드를 고정한다. 랙(200)은 구성요소를 웨빙 상에 배치하는데 사용되는 프린트 헤드와, 프린트 엔진을 통과하는 웨빙 사이의 인터페이스이다. 랙(200)은 웨빙을 닫는 프린트 헤드를 유지한다. 예를 들어 프린트 헤드는 웹에서 약 0.5mm, 1mm, 2mm 또는 3mm 위에 고정될 수 있다. 랙(200)은 캔트에 프린트 헤드를 고정하여, 특정 프린트 헤드가 액적 오버프린트 능력을 제한하는 오정렬된 노즐 배열을 가지고 있기 때문에, 반응 구획에서 오버 프린팅을 위해 프린트 헤드 노즐을 적절하게 정렬한다. 캔트 각도는 노즐이 오버프린트 액적에 정렬되도록 노즐 플레이트의 법선 벡터에서 약간 회전한 것이다. 캔트 각(cant angle)은 예를 들어 1도, 2도, 4도, 8도, 10도, 20도 또는 임의의 적합한 각도일 수 있다. 예를 들어, 4개의 서로 다른 노즐 행의 오버프린트를 달성하기 위해, 프린트 헤드는 8.7°의 각도로 회전할 수 있다. 액적 분배의 정확도는 원하는 간격, 웹의 액적 직경(접촉각에 따라 다름) 및 분사의 반복성에 의해 좌우된다. 이러한 파라미터는 사용 가능한 하드웨어 구성 요소로 충족할 수 있지만 개발 중에 일부 사용자 지정이 필요할 수 있다.
도 18b는 4개행의 프린트 헤드 노즐(212, 214, 216, 218)을 도시한다. 각각의 행(212, 214, 216, 218)은 상이한 구성요소를 분사할 수 있다. 기판(222)(화살표 219로 표시된 선으로부터 오른쪽으로 대각선 위쪽으로 연장됨)은 노즐(212, 214, 216, 218)이 있는 프린트 헤드 아래에서 선형으로 이동한다. 프린트 헤드의 8.7도 회전으로 인해 기판(222) 상의 좌표(224)는 라인(217)을 따라 행(212, 214, 216, 218)의 노즐 바로 아래를 통과하여, 각 노즐이 좌표(224) 상에 구성요소를 증착할 수 있다.
프린트 헤드는 오버프린트를 허용하는 프린트 헤드(4개)당 여러 "색상"을 분배할 수 있다. 프린트 헤드의 각 노즐에 의해 분배되는 액적 부피는 1pL, 2pL, 3pL, 7pL, 10pL, 20pL 또는 임의의 다른 적합한 양일 수 있다. 일부 실시예에서 액적의 부피가 조정될 수 있다. 액적 부피의 유연성은 이 파라미터가 증발 속도 및 결찰 배양 조건에 영향을 미치기 때문에 도움이 된다. 프린트 헤드와의 호환성을 용이하게 하기 위해 구성 요소 잉크에 첨가제를 추가할 수 있다. 예를 들어 트리스와 같은 용질을 첨가하여 전도성을 높일 수 있다. 예를 들어, 습윤제 또는 계면활성제(예: 글리세롤)를 첨가하여 토출 품질 및 프린트 헤드 노즐 수명을 개선할 수 있다.
일부 실시예에서, 프린트 헤드는 MEMS(micro-electro-mechanical system) 장치이다. 예를 들어, 프린트 헤드는 Ricoh MH5420 프린트 헤드일 수 있다. 프린트 헤드는 DNA 식별자의 무결성을 손상시킬 수 있는 많은 열전사 프린트 헤드와 관련된 위험 및 불확실성을 피하기 위해 선택된다. 프린트 헤드는 빠르고 저부피의 수성 호환 및 드롭 주소 지정 압전 분배가 가능하다. 프린트 헤드는 스테인리스 스틸 노즐 플레이트를 포함할 수 있다.
노즐 막힘은 프린트 헤드의 일반적인 고장 모드이다. 예를 들어, 정지된 프린트 헤드는 막힘, 건조 위험이 있으므로 재순환이 필요하다. 이러한 이유로 기록 시스템을 사용하면 기록 시스템으로부터 프린트 헤드를 이동하여 불어내고(purging) 닦은 다음, 등록을 유지하면서 교체할 수 있다.
프린팅의 반복성을 돕기 위해, 기록 시스템은 액적 형태, 부피 및 속도를 최적화할 수 있다. 프린트 헤드의 용액은 가시성을 위해 염료를 포함하는 물-Tris 용액을 포함할 수 있다. 예를 들어, 염료는 브로모페놀 블루일 수 있다. 프린트 헤드에 사용되는 솔루션은 점도가 낮고 표면 장력이 높다는 점에서 기존 프린트 헤드 잉크와 다르다. 용액은 본질적으로 물이며 10-11cP의 이상적인 잉크에 비해 ~1cP 수준으로 점도가 낮다. 용액은 본질적으로 물이기 때문에 32mN/m의 이상적인 잉크에 비해 72mN/m의 높은 표면 장력을 갖는다.
최적의 파형으로, 액적 반복성은 액적 형상, 부피 및 속도를 측정함으로써 검증될 수 있다. 개별 액적 부피는 미네랄 오일 용기에 수백만 방울을 분배하고 용기의 질량 변화를 측정하여 확인할 수 있다. 액체 증발을 피하기 위해, 액적은 수성 액적이 잠기도록 오일에 분배될 수 있다. 액적 모양 및 속도는 진행 중인(in-flight) 액적 분배를 캡처하기 위해 CCD 카메라를 사용하는 "드롭 와치(drop watch)" 시스템을 사용하여 측정할 수 있다.
도 19는 트라이(trie)로부터 구축된 식별자 시퀀스에 따라 반응 구획으로 용액을 분배하는 다이어그램을 보여준다. 트라이의 각 레이어는 식별자의 레이어를 나타내고, 각 트라이 레이어의 각 에지는 해당 식별자 레이어 내의 구성 요소를 나타낸다. 트라이의 최종 레이어는 식별자의 다중 레이어를 나타낼 수 있다. 일련의 심볼(300)은 DNA 식별자 핵산 분자에 저장될 코드워드 세트를 나타낸다. 코드워드는 소스 워드라고 하는 소스 알파벳의 특정 심볼 스트링을 나타내는 심볼 스트링이다. 코드는 인코딩이라고 하는 프로세스에서 소스 워드를 코드워드에 매핑한다. 액적(304)은 개별 반응 구획(예를 들어, 구획(306))으로 분배된다. 심볼 스트링(300)은 심볼 값 '1'을 가리키는 최종(다중) 레이어(302)의 리프에 트리의 루트(미도시)를 연결하는 트라이 경로에 의해 표현되는 식별자를 구성함으로써 인코딩된다. 도 19에 도시된 바와 같이, 특히 도 27과 관련하여, 코드워드의 "가중치"는 고르게 분포될 수 있다. 즉, 심볼 스트링(300)은 5비트의 각 스트링이 반응 구획에서 인코딩되도록 분할되고, 5비트의 각 스트링이 정확히 3개의 '1' 값을 가지므로 각 구획이 3개의 식별자를 형성하기 위해 멀티플렉스 레이어로부터 3개의 구성요소를 수신한다. 예를 들어, 반응 구획(306)은 베이스 레이어로부터의 구성요소(다중 레이어까지의 트라이의 경로를 구성하는 구성요소 - 구성요소 7, B, D, …) 및 멀리플렉스 레이어로부터의 구성요소 0, 2, 4(각각 멀티플렉스 레이어에서 표시되고 심볼 "10101" 스트링의 위치에 해당)의 고유한 조합을 갖는 식별자를 포함할 것이다. 각각의 '1' 값에 대해, 해당 심볼 위치에 해당하는 식별자 분자(그 위치로 이어지는 경로를 구성하는 구성 요소로 구성됨)가 반응 구획에 축적될 것이다.
프린트 헤드가 구성 요소를 반응 구획에 배치한 후, 반응 구획은 프린트 엔진에서 인큐베이터 모듈로 이동된다. 인큐베이터는 최적의 결찰 효율에 필요한 온도와 액적 증발 방지에 필요한 습도를 제어하기 때문에 결찰 반응에 매우 중요하다. 인큐베이터 모듈은 일련의 롤러를 사용하여, 결찰 반응 기간 동안 웨빙의 많은 부분(예: 10m, 20m, 40m, 100m 또는 임의의 적합한 길이)을 챔버에 유지한다. 롤러의 수와 위치에 따라 배양 시간이나 웨빙 속도를 변경할 수 있다. 인큐베이터 모듈에 있는 동안 반응 구획의 액적 내 용질 농도는 최대 결찰 효율을 유지하기 위해 일정하게 유지되어야 한다. 이러한 이유로 인큐베이터의 주요 기능은 증발로 인한 부피 손실을 최소화하는 습도 수준을 유지하는 것이다. 액적의 증발 속도에 영향을 미치는 요인은 (1) 필요한 결찰 시간보다 훨씬 짧은 시간(<1s)에 액적의 완전한 증발을 방지하기 위해 리가제 액체 내에 보습제(글리세롤일 가능성이 있음)가 필요할 수 있고, (2) 리가제 내의 글리세롤 농도는 필요한 습도 수준 및 습도 허용 오차에 크게 영향을 미친다는 것이다.
도 20은 웨빙(416)으로부터 인쇄된 액적을 제거하기 위해 스프레이 세척(414) 및 풀링 완충제(408)에의 침지를 사용하는 풀링 서브시스템을 나타낸다. 풀링 서브시스템은 이동하는 웹(416)으로부터 DNA 분자를 제거하고 이를 DNA 결합 컬럼으로 옮긴다. 웨빙(416)은 롤러(402, 404, 406)를 통과한다. DNA 분자는 (1) 풀링 버퍼를 사용하는 이동 웹의 분무 세척(414) 및 (2) 풀링 챔버 내의 풀링 버퍼(408)로의 이동 웹의 침지의 두 가지 메커니즘의 조합을 사용하여 웨빙(416)으로부터 제거된다. 일부 실시예에서, 두 가지 메커니즘 중 하나만 사용되거나 이 메커니즘들이 다른 DNA 분자 제거 수단과 조합되어 사용된다.
웨빙(416)으로부터 제거된 후, DNA 분자는 전체 길이 DNA 식별자(410)를 수집하기 위해 결합 컬럼을 통과한다. 이어서 컬럼(410)은 저장에 적합한 용기 내에 DNA 용출 및 수집을 포함하는 다운스트림 처리를 위해 기록 시스템으로부터 제거된다.
본원에 기술된 시스템 및 방법은 분자 데이터를 해독하기 위해 나노포어 시퀀싱을 기반으로 하는 완전히 자동화 가능한 작업 흐름을 제공한다. 워크플로에는 물리적 DNA 저장 시스템 검증, PCR 기반 데이터 액세스 방법 개발, 나노포어 시퀀싱 기술 개선(변경된 샘플 준비, 의도적으로 설계된 DNA 구성 요소 시퀀스, 및 화학적으로 변형된 핵산), 여러 장치에서의 대규모 병렬 시퀀싱을 위한 시퀀싱 시스템 및 워크플로 최적화가 포함된다. 여기에 설명된 방법을 사용하여 생성된 DNA 기반 정보는 전략적으로 최적화된 나노포어(또는 전자 채널) 시퀀싱 방법에 의한 검색에 고유하게 적합하다. 나노포어 시퀀서의 주요 장애물은 단일 염기 분해능으로 시퀀싱하기에 충분히 느린 DNA 전좌와 충분히 좁은 포어를 달성하는 것이다. 여기에 설명된 방법에 의해 인코딩된 DNA 구성 요소는 각 구성 요소 분자의 시퀀스 신호를 동시에 증폭하고, 구성 요소 시퀀스 간의 구별을 증가시키도록 설계될 수 있다. 신호 대 잡음비를 향상시키기 위해 화학적으로 변형된 염기를 통합하는 옵션과 함께, 이러한 기능을 통해 나노포어 기술은 인공 DNA 정보의 재현 가능한 TB 규모 복구를 달성할 수 있다. 본 명세서에 기술된 시스템 및 방법은 DNA를 위한 구성 및 저장 시스템의 개발, DNA 라이브러리에 접근하기 위한 프로토콜의 개발, 인코딩된 DNA의 향상된 판독 능력을 위한 샘플 준비 프로토콜의 수정, 및 나노포어 기술의 발전을 제공하여 시퀀싱 기기의 판독 능력을 높일 수 있게 한다.
상술한 바와 같이 일련의 심볼을 쓰는 과정으로부터의 출력은 장기 저장 및 간헐적 액세스를 요구할 수 있는 암호화된 DNA(식별자)의 라이브러리이다. 생성된 암호화된 DNA 풀에는 각 식별자 시퀀스의 수십만 분자가 포함될 수 있다. 그램 단위로, 생산된 재료의 총량은 마이크로그램 단위일 수 있다. 풀은 도 30과 관련하여 아래에 설명된 바와 같이 중복(redundancy), 보관(archiving) 및 액세스를 위해 충분한 자료가 존재하도록 PCR로 증폭될 수 있다.
증폭 후, 풀은 다수의 용기에 할당되고 상이한 위치에 저장될 수 있다. 풀은 다양한 핵산 저장 및 보관 시스템에 저장될 수 있다. 예를 들어, DNA는 Eppendorf 튜브, 냉동고, 액체 질소에서 저온 보존 또는 Tris-EDTA에 저장할 수 있다. DNA의 저장 수명은 다양한 온도와 같은 가속화된 안정성 조건에 노출된 물질을 판독하여 평가된다. 본 문서에 설명된 시스템 및 방법에는 저장된 DNA의 장기 보관 및 무작위 액세스를 모두 허용하는 자동 샘플 관리 시스템이 포함될 수 있다.
일부 실시예에서, 운영 체제(OS)는 쓰기, 읽기, 엑사바이트 크기로 확장 가능한 아카이브의 검색 가능한 질의, 또는 이들의 임의의 조합을 조정할 수 있다. 특히, 일부 실시예에서 OS는 위에서 설명한 읽기/쓰기 플랫폼에 최적화된 코덱을 통해 의미론적으로 주석이 추가되고 인덱싱된 블록의 트리를 읽고 쓸 수 있도록 하는 것을 목표로 한다. OS에는 인제스트 API를 포함할 수 있는 변환 스택과, 장기적이지만 세분화된 데이터 질의 및 검색을 위해 데이터를 구성하고 형식을 지정하는 모듈이 포함되어 있다. OS의 이러한 측면은 모든 쓰기, 읽기 또는 액세스 방법에 광범위하게 적합할 수 있다. OS의 다른 측면은 정보 쓰기, 액세스 및 읽기 방법을 특별히 최적화하도록 설계할 수 있다. 여기에는 데이터를 압축하고 오류를 방지하는 모듈과, 데이터를 구성하고 위에서 설명한 기록 시스템으로 보내는 모듈이 포함된다. 위의 방법으로 DNA 분자에 기록된 데이터를 모든 시퀀서로 읽을 수 있지만 구체적인 읽기 방법은 아래에 설명되어 있다. OS에는, 예를 들어, 엑사바이트의 정보를 지원할 수 있는 저장 컨테이너의 시스템에 DNA를 할당, 이로부터 DNA에 액세스, 그리고 DNA를 보충함으로써, 기록기와 판독기 사이의 DNA 기반 정보 처리를 중재하는 자동화 소프트웨어 및 작업 흐름을 또한 포함될 수 있다.
도 21은 OS용 아카이브 정보 시스템을 나타낸다. 중앙 모듈은 수집, 데이터 관리, 액세스 및 아카이브 저장 모듈을 포함한다. 데이터 관리 및 아카이브 저장 모듈은 수집 및 액세스 모듈과 통신한다. 설명 정보는 수집 모듈에서 데이터 관리 모듈로 전달된다. 그러면 설명 정보가 데이터 관리 모듈에서 액세스 모듈로 전달된다. 아카이브 정보 패키지는 수집 모듈에서 아카이브 저장 모듈로 전달된 다음 액세스 모듈로 전달된다. 중앙 모듈은 수집 모듈을 통해 제출 정보 패키지와 같이, 생산자로부터 정보를 가져온다. 중앙 모듈은 또한 액세스 모듈을 통해, 질의를 입력하고 응답을 전송함으로써, 소비자와 통신한다. 예를 들어, 질의 및 응답은 배포 정보 패키지에 보관될 수 있다. 데이터 관리 및 기록 보관 장치는 보존 계획 및 관리 모듈과도 상호 작용한다.
도 22는 7개의 기능 레이어로 구성된 OS에 의해 관리되는 기능의 레이어화된 구성을 보여준다. 각 레이어는 아래 레이어에서 제공하는 서비스를 사용한다. 7개의 레이어는 다음의 설계 및 구성을 포함하는 6개의 개발 영역으로 변환된다:
(1) 코덱: 작성자별 최적화가 있는 인코더/디코더 파이프라인;
(2) 화학 인터페이스: 비트 연산에서 화학 연산으로의 변환기;
(3) 자동화 인터페이스: 자동화 장치에 대한 인터페이스 및 변환기;
(4) 블록 추상화: 블록 기반 인터페이스 및 지원 핵심 데이터 구조;
(5) 검색 및 인덱싱: 시맨틱 주석 및 인덱싱을 위한 인프라;
(6) 아카이브 애플리케이션: OS를 시연하는 아카이브 애플리케이션.
여기에 설명된 인코딩 방식 및 OS의 이점에는 쓰기 속도, 쓰기 비용, 읽기 비용 또는 액세스 비용에 대해 최적화된 인코딩 방식을 선택할 수 있는 기능; 디코딩된 풋프린트를 최소화하기 위해 인덱스 데이터를 블록에 매핑하는 것을 최적화하는 기능; 큰 블록으로부터 단일 비트에 이르기까지 모든 규모의 정보를 조작하고 기본적으로 데이터 구조를 모델링하는 기능; 데이터 및 관계에 대한 보관, 질의 및 추론을 가능하게 하는 현재 보관 표준 및 관행과의 긴밀한 통합이 포함될 수 있다.
코덱은 정보에 대한 인코더/디코더로서 기능한다. 상위 레이어가 코덱을 필요로하고 아래 레이어가 없으면 의미 있는 테스트가 불가능하기 때문에, 코덱의 적절한 작동이 매우 중요하다. 코덱은 소스 비트 스트림을 수신하고 화학적 방법을 사용하여 쓰기에 적합한 형식으로 변환하는 작업을 담당한다. 도 22에 도시된 바와 같이, 코덱은 3개의 레이어, 즉 고정 레이어, 잉여 레이어 및 인코딩 프로세스를 처리하는 조합 레이어를 포함한다.
고정 레이어에서, 소스 비트 스트림은 패킷으로 분할되며, 여기서 모든 패킷은 고정된 크기이다. 패킷은 독립적으로 처리될 수 있으며 병렬 처리를 위한 단위 역할을 할 수 있다. 패킷은 하나 이상의 블록으로 구성된다. 블록은 아카이브에서 가장 작은 할당 단위이며 아카이브의 조합 공간은 블록이라고 하는 일련의 연속적인 비트 스트링으로 나뉜다. 고정 레이어는 MD5, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 또는 SHA-512/256과 같은 표준 암호화 해싱 알고리즘을 사용하여 블록 해시를 계산하는 역할을 하며, 이 해시는 상위 블록에 포함된다. 블록이 디코딩되면 해시를 다시 계산하고 상위 블록을 통해 확인하여 무결성을 확인할 수 있다.
리던던시 레이어에서, 해시된 블록은 최대 2개, 3개 또는 그보다 많은 오류 보호 기술이 적용되는 리던던시 레이어로 전달된다. 특정 기록 시스템의 잡음에 대한 민감성을 알 수 없기 때문에 높은 중복 컨벌루션 코드가 사용될 수 있다. 쓰기 중에 발생하는 오류는 주로 두 가지 유형이 있다: (1) 누락된 식별자에 기인, 예를 들어, 프린트 헤드 노즐 악화 또는 저효율 조립 반응 때문, 또는 (2) 의도하지 않은 식별자의 조립, 예를 들어, 인접한 반응 사이의 분배 튐 또는 오염. 기록 시스템의 이미징 기반 품질 관리 방법은 프린트 헤드 막힘 및 식별자 누락으로 인한 오류를 완화할 수 있다. 오류를 수정하기 위해, 블록은 슬라이스(예: 일반 구성에서 223바이트 길이)로 분할되고, 255개 심볼의 산술 필드를 사용하는 리드 솔로몬 코드가 각 슬라이스에 대해 계산되어, 바이트 오류(예: 16바이트)를 수정할 수 있는(여기서 오류가 있는 각 바이트에는 임의의 수의 비트 오류가 있을 수 있음) 오류 보호 바이트(예: 32)가 생성된다. 이러한 오류 보호 파라미터는 구성 가능하고, 아카이브에 기록되며, 예를 들어 코드워드당 10-4개 오류의 기록 시스템 오류 비율을 허용하도록 구성된다. 위에서 정의한 대로, 코드워드는 소스 워드라고 하는 소스 알파벳의 특정 심볼 스트링을 나타내는 심볼 스트링이다. 코드는 인코딩이라고 하는 프로세스 중에 소스 워드를 코드워드에 매핑한다.
소스 워드가 3개의 소스 바이트를 포함하는 방식을 가정하면, 255바이트의 보호된 슬라이스는 255/3 = 85 코드워드로 매핑될 것이다. 독립적인 오류를 가정하면 16바이트 이상에 오류가 있을 확률은 5개 이상의 코드워드에 오류가 있을 확률이며 대략 4.3 x 10-16이다. 필드 크기 또는 계산된 오류 방지 바이트를 변경하면 필요에 따라 이 확률을 낮출 수 있다. 위에서 설명한 것과 같은 정밀 프린트 헤드가 있는 기록 시스템은 이 예상 오류율을 준수할 수 있지만 코덱은 더 높은 컴퓨팅 비용에도 불구하고 필요한 경우 더 높은 보호율을 처리할 수 있다. 또한, 더 큰 필드(예: 65,535)가 더 높은 보호를 제공할 수 있다. 의도하지 않은 식별자 분자의 영향을 완화하기 위해, 리던던시 레이어는 비트의 순서를 바꾸는 선택적인 인터리버를 도입하여, 동일한 오류 보호 바이트 세트로 보호되는 소스 비트가 인접한 반응 구획에 도달하지 않도록 하며, 따라서, 수정할 수 있는 것보다 보다 큰 버스트 오류에 빠질 가능성이 낮다.
도 24-25와 관련하여 기술된 방법으로부터 형성된 오류-보호된 심볼과 같은 심볼은 소스 심볼(예: 일련의 비트)로 구성된 소스 워드로부터 핵산 라이브러리의 정보를 인코딩하기 위한 여러 조합 방법의 코드워드로 매핑될 수 있다. 일부 실시예에서 이 인코딩은 코덱에 의해 수행되거나 오케스트레이션된다. 특정 인코딩 방식의 예가 도 23에 도시되어 있다. 도 24는 식별자를 설계하고 정렬하기 위한 LPCCC(Layered Cartesian Product combinatorial construction)의 시스템도를 보여준다. 제품 생성자에는 3개의 레이어(M=3)와 8개의 구성 요소 시퀀스(C=8)의 구성 요소 라이브러리가 있다. 레이어당 {3,3,2} 구성 요소 시퀀스가 있는 조합 파티션 구성표가 표시된다. 가능한 모든 식별자 시퀀스의 공간은 조합 공간을 형성한다. 도 26과 관련하여 아래에서 더 상세히 설명되는 바와 같이, 조합 체계의 범위라고 할 수 있는 구성 요소 라이브러리로부터 구성 가능한 조합 개체의 총 수는 단일 식별자 풀에 기록 가능한 비트 스트림의 길이를 결정한다. 이 특정 체계의 범위는 18이다. 조합 객체는 구성 요소 시퀀스의 순위를 이들로부터 구성된 식별자로 확장하여 조합 공간에서 사전순으로 정렬된다. 이 순서 정보는 식별자에 내재되어 있고, 조합 공간에서 위치를 식별하며, 소스 심볼 스트림에서 식별자로 인코딩된 심볼의 위치를 식별하는 데 사용될 수 있다. 예를 들어, LCPCC는 바이너리 알파벳을 인코딩하는데 사용될 수 있고, 구성된 식별자에 의해 인코딩된 심볼을 "1"로 정의할 수 있다. "0" 심볼은 해당 식별자를 구성하지 않음으로써 나타낼 수 있다. 소스 비트 스트림은 해당 비트 스트림에 고유한 특정 식별자 세트(즉, 식별자 라이브러리)를 구성하여 인코딩될 수 있다.
도 24-25는 디지털 정보를 오류 보호와 함께 핵산에 저장하기 위한 흐름도(800, 900)를 보여준다. 단계(802)에서 정보는 길이 L의 심볼 스트링으로 수신된다. 전술한 바와 같이, 심볼은 비트, 바이트, 임의 길이의 비트 스트링, 수문자, 임의 길이의 문자 스트링 또는 임의의 다른 적합한 심볼일 수 있다. 일부 실시예에서 심볼 스트링은 비트 스트림으로 변환된다. 예를 들어, 심볼 스트링은 6개의 심볼 "LETTER"로 구성될 수 있다. 영숫자 스트링 "LETTER"는 이진수로 변환되어 48비트가 된다("01001100 01000101 01010100 01010100 01000101 01010010"). 이 예에서 L은 48일 것이다. 일부 실시예에서 심볼 스트링의 정보는 개별적으로 수신된다. 즉, 심볼은 개별적으로 또는 임의의 조합으로 수신될 수 있다. 그런 다음 심볼 또는 심볼 그룹은 연결되거나 결합되어 심볼 스트링을 형성할 수 있다. 예를 들어, 8비트의 10개 블록이 개별적으로 수신된 다음 함께 연결되어 80비트 길이의 심볼 스트링을 형성할 수 있다.
흐름도(800)는 수신된 정보를 인코딩하는 세 단계를 포함한다: (1) 단계 804-808과 관련하여 설명된 바와 같은 해싱; (2) 단계 810-814와 관련하여 설명된 바와 같이 오류 보호 심볼의 추가; 및 (3) 단계 816-820과 관련하여 설명된 바와 같이 코드워드 결정. 도 24가 이들 3개의 단계를 모두 표시하지만, 이 단계들이 개별적으로 또는 임의의 조합으로 수행될 수 있다. 예를 들어, 흐름도(800)가 단계 802에서 단계 816(코드워드 단계의 시작)으로 직접 진행하도록, 단계 804-814(해싱 및 오류 보호 심볼 추가)를 우회할 수 있다. 단계는 임의의 순서로 수행할 수 있다.
해싱 단계는 단계(804)에서 시작하는데, 여기서 심볼 스트링은 블록으로 분리된다. 일부 실시예에서, 각 블록은 동일한 길이 B를 가지며, 여기서 B는 L(심볼 스트링의 길이)을 블록 수로 나눈 값과 같다. 예를 들어, 심볼 스트링은 1,000비트일 수 있다. 1,000비트는 각각 200비트로 구성된 5개의 블록; 각각 10비트로 구성된 100개의 블록; 각각 100비트로 구성된 10개의 블록; 또는 이러한 조합처럼, 임의의 길이의 블록으로 분리될 수 있다. 일부 실시예에서 블록의 길이는 동일하지 않다. 예를 들어, 1,000비트 스트링의 경우, block1은 500비트; block2는 100비트; block3은 300비트; 및 block4는 400비트로 구성될 수 있다. 일부 실시예에서, 블록은 목표 길이에 도달하기 위해 임의의 심볼로 채워질 수 있다.
단계(806)에서, 길이 H의 해시가 각 블록에 대해 계산된다. 일부 실시예에서 해시는 MD5, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 또는 SHA-512/256 중 하나를 사용하여 계산된다. 계산된 각 해시는 해당 블록에 추가되어 해시 블록을 형성한다. 이를 통해 일련의 심볼과 해시를 핵산에 함께 저장할 수 있다. 해시를 심볼 스트링과 별도로 저장하는 것을 포함하는 대안적인 구현예가 도 25와 관련하여 아래에서 설명된다.. 각 블록의 길이가 B인 경우 해시를 추가한 후 해시된 블록의 길이는 H + B이다. 예를 들어 심볼 스트링은 1,000비트로 구성될 수 있으며 이는 각각 100비트의 10개 블록으로 분리된다(B= 100). 각 블록의 해시는 10비트 길이(H=10)일 수 있다. 추가 후 해시된 블록은 110비트(원래 100비트 + 10비트 해시)로 구성된다.
단계(808)에서, 해싱된 블록은 연결되어 길이가 L2인 제2 심볼 스트링을 형성한다. 상기 예에서, 10개의 해시된 블록의 각 해시된 블록이 110비트를 포함하는 경우, 심볼 스트링은 1,100비트(단계 802에서 수신된 원래의 1,000비트에 단계 806에서 계산된 100개의 해시 비트를 더한 것)와 동일할 것이다.
단계(810)에서, 제2 심볼 스트링이 슬라이스로 분리된다. 일부 실시예에서, 각각의 슬라이스는 동일한 길이 S를 가지며, 여기서 S는 L2(해싱된 블록으로부터 단계 808에서 형성된 제2 심볼 스트링의 길이)를 슬라이스 수로 나눈 값과 같다. 예를 들어, 제2 심볼 스트링은 1,100비트로 구성될 수 있다. 1,100비트는 각각 110비트로 구성된 10개의 슬라이스; 각각 11비트로 구성된 100개의 슬라이스; 220비트의 5개 슬라이스 또는 이러한 조합와 같이 임의의 길이의 슬라이스로 분리될 수 있다. 일부 실시예에서 슬라이스는 동일한 길이가 아니다. 예를 들어, 1,100비트 스트링의 경우, slice1은 500비트; 100비트의 슬라이스2; 300비트의 슬라이스3; 및 200비트의 slice4로 구성될 수 있다. 일부 실시예에서, 해싱 단계(단계 804-808)는 우회된다. 따라서, 단계 810에서 심볼 참조의 제2 스트링은 단계 802에서 수신된 심볼 스트링과 동일할 것이다. 일부 실시예에서, 블록은 L2를 형성하기 위해 결코 다시 함께 연결되지 않고, 오히려 각각의 블록은 개별적으로 슬라이스로 처리된다.
단계(812)에서, 각 슬라이스에 대해 에러 방지 심볼이 계산된다. 각 슬라이스에 대해 임의 개수의 오류 방지 심볼을 계산할 수 있다. 단계(812)에서, 에러 보호 심볼은 그들이 계산된 슬라이스에 첨부되어, 에러 보호된 슬라이스를 형성한다. 일부 실시예에서, 각각의 오류 보호 슬라이스가 S + P 비트 길이가 되도록, 동일한 수 P의 오류 보호 심볼이 각 슬라이스에 대해 계산된다. 예를 들어 제2 스트링이 각각 1,100바이트(1000 소스 바이트 + 100바이트 해시)인 연결된 블록으로 구성된 경우, 각각 220바이트로 구성된 5개의 슬라이스로 나눌 수 있다. 그런 다음 각 슬라이스에 40바이트의 오류 보호를 추가하여 각각 260바이트로 구성된 오류 보호 슬라이스를 생성할 수 있다.
일부 실시예에서, 에러 보호 심볼은 리드-솔로몬 코드를 사용하여 결정된다. Reed-Solomon 코드는 블록 기반 오류 정정 코드이다. P개의 오류 보호 심볼(또는 바이트)가 리드 솔로몬 코드를 사용하여 계산되는 경우, P/2개의 오류 심볼(또는 바이트)이 보호된 슬라이스에서 허용될 수 있다. 예를 들어, P가 260바이트 보호 슬라이스에 대해 40바이트인 경우 260바이트 중 20바이트는 260바이트의 처리에 부정적인 영향을 미치지 않으면서 올바르지 않을 수 있다. P 오류 보호 바이트가 Reed-Solomon 코드를 사용하여 계산되는 경우 P 소거 바이트가 허용될 수 있다. 예를 들어, P가 260바이트 보호 슬라이스에 대해 40바이트와 같으면 260바이트 중 40바이트는 해당 260바이트의 처리에 부정적인 영향을 미치지 않고 소거될 수 있다.
단계(814)에서, 에러-보호된 슬라이스는 연결되어 길이 L3을 갖는 제3 심볼 스트링을 형성한다. 블록 당 5개의 오류 보호 슬라이스의 각 오류 보호 슬라이스가 260바이트를 구성하는 위의 예에서, 심볼의 제3 스트링은 블록 당 1,300바이트(단계 802에서 수신된 원래 1,000바이트 + 단계 806에서 계산된 100해시 바이트 + 단계 812에서 결정된 총 200 에러 보호 바이트)로 구성된다. 일부 실시예에서, 흐름도(800)는 오류 보호 단계(단계 810-814)를 우회하여 단계 808에서 단계 816으로 진행한다. 따라서, 단계(814)의 제3 심볼 참조 스트링은 단계(808)에서 형성된 제2 심볼 스트링과 동일할 것이다. 일부 실시예에서, 흐름도(800)가 단계(802)에서 단계(816)으로 바로 진행하도록 해싱 및 오류 보호 단계를 모두 우회한다. 이 경우에, 제3 심볼 스트링은 단계 802에서 수신된 심볼 스트링과 동일할 것이다. 일부 실시예에서, 제3 심볼 스트링은 각각의 블록에 대해 개별적으로 계산 및 처리된다.
단계(816)에서, 제3 스트링은 복수의 워드로 분리되며, 각각의 워드는 길이 W를 갖는다. 예를 들어, 각각의 워드는 8비트 길이일 수 있다. 단계 818에서, 적어도 하나의 코드북을 사용하여 각 워드에 대한 코드워드가 결정된다. 일부 실시예에서 각 코드워드는 해당 워드와 정확히 일치한다(즉, 심볼의 세 번째와 제4 스트링 사이에 아무 것도 변경되지 않음). 그러나 일부 실시예에서 코드워드는 해당 워드와 다를 수 있다. 예를 들어, 코드워드가 워드와 길이가 다를 수 있다.
코드워드는 인코딩 또는 디코딩 동안 화학적 및 기구 조건에 대해 최적화될 수 있다. 상술한 바와 같이, 식별자의 존재는 특정 심볼 위치에서 '1'을 나타낼 수 있는 반면, 해당 위치에 대한 식별자의 부재는 '0'을 나타낼 것이다. 일부 실시예에서, 코드워드를 결정하는 것은 모든 코드워드가 동일한 수의 '1'(단계 824에서 구성될 식별자)을 가짐을 보장하도록 제3 심볼 스트링에 (가령, 도 27과 관련하여 기술된 바와 같이) 균일한 가중치 코드를 적용하는 것을 포함한다. 따라서 위의 예에서 W=8인 경우 8비트를 인코딩할 수 있는 코드워드를 선택해야 한다. 이렇게 하면 각 코드워드가 동일한 "가중치"(구성될 식별자 수)를 가질 수 있도록 추가 비트가 효과적으로 추가된다.
도 23과 관련하여 기술된 바와 같이, NchooseK 방식의 조합 공간으로부터 코드워드가 결정될 수 있다. Nchoosek 방식에서는 N개의 정렬된 식별자마다 k개의 식별자가 구성된다. 예를 들어, 11choose4 방식에서는 11개의 식별자마다 정확히 4개가 생성된다. 대표 코드워드는 길이 N=11비트, 가중치 k=4일 것이다. 11choose4 체계는 Log2(11choose4)>8이기 때문에 각 코드워드에서 8비트를 인코딩하기에 충분한 비트를 제공한다.
단계(820)에서, 길이 L4를 갖는 제4 심볼 스트링은 코드워드를 연결함으로써 형성된다. 제4 심볼 스트링은 (L3*N)/W 심볼로 구성된다. 예를 들어, 블록당 1300바이트의 스트링(예를 들어, 단계 814에서 형성된 심볼의 제3 스트링)에 대해 각 워드가 8비트이고 11choose4 방식이 사용되면 L4는 블록당 1787.5바이트, 또는 각 바이트는 8비트인 경우 14300 비트일 것이다. 일부 실시예에서, 제4 심볼 스트링은 각각의 블록에 대해 개별적으로 계산 및 처리된다.
단계 822에서, 제4 스트링의 각 심볼은 개별 식별자 시퀀스에 매핑된다. 매핑 단계(822)는 디지털 정보를 오류 보호가 있는 핵산으로 인쇄하기 위한 방식을 생성한다. 복수의 식별자 핵산 분자의 개별 식별자 핵산 분자는 제4 심볼 스트링의 개별 심볼에 해당한다. 개별 식별자는 대응하는 복수의 구성요소를 포함하며, 여기서 복수의 구성요소의 각 구성요소는 별개의 핵산 서열을 포함한다. 예를 들어, 구성요소는 전술한 바와 같이 M개의 레이어에서 선택될 수 있다.
단계(824)에서, 개별 식별자 분자는 상응하는 구성요소를 축적(또는 공동 배치) 및 조립함으로써 구성된다. 예를 들어, 도 17-21과 관련하여 전술한 프린터/피니셔 시스템을 사용하여, 구획 내에 상응하는 구성요소를 배치하고 조립함으로써 개별 식별자를 구성할 수 있다. 일부 실시예에서, 복수의 프린트 헤드를 사용하여 복수의 구성요소를 포함하는 복수의 용액을 기판 상의 좌표 상에 분배한다. 복수의 구성요소를 물리적으로 연결하기 위해, 또는, 복수의 구성요소를 물리적으로 연결하는 데 필요한 조건을 제공하기 위해, 또는 양자 모두를 위해, 반응 혼합물이 기판 상의 좌표 상에 분배될 수 있다.
코드워드 단계에 기초하여, 프린터 명령 세트가 개발되어 프린터-피니셔 시스템으로 전송될 수 있다. 인쇄 오류 가능성을 줄이거나 인쇄 효율성을 높이도록 프린터 명령을 구성할 수 있다. 예를 들어, 코드워드 스테이지는 복수의 구획의 각각의 구획이 통계적 확실성 내에서 각 식별자 핵산 서열의 동일한 수의 카피를 함유하도록 식별자를 분배하도록 설계될 수 있고, 따라서 구획 전체에 걸쳐 식별자의 균일한 풍부함을 제공한다. 추가적인 오류 방지를 제공하기 위해, 일부 실시예에서, 코드워드는 기록 기기로 전송되기 전에 (서로에 대해) 순열되거나 인터리브되어, 심볼 스트링에서 인접한 심볼을 나타내는 식별자 핵산 분자가 인접한 귀획에서 구성되지 않게 된다. 이렇게 하면 기록 기기의 버스트 오류로 인해 수정할 수 없는 오류나 삭제가 발생할 가능성이 줄어든다. 예를 들어, 인쇄 실수에 따라 잘못된 좌표에 줄무늬가 인쇄되거나 구획 사이에 번짐으로 인해 감지할 수 없는 오류가 발생할 가능성이 줄어든다. 또는 기록 기기의 버스트 오류로 인해 정정할 수 없는 오류나 삭제가 발생할 가능성을 줄이기 위해 인접한 심볼이 아닌 이질적인 심볼에 대해 오류 보호를 계산할 수 있다.
단계(826)에서, 개별 식별자는 풀에 수집된다. 예를 들어, 풀은 단계 802-822에서 인코딩된 수백 개의 심볼에 해당하는 수백 개의 식별자를 보유할 수 있다. 일부 실시예에서, 풀 내의 식별자의 존재 또는 부재는 심볼 스트링 내의 대응하는 각각의 심볼 위치의 심볼 값을 나타낸다.
흐름도(900)는 해시를 첨부하는 대신 해시를 저장하는 것을 제외하고는 동일한 단계를 따른다. 단계 902, 904, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926은 단계 802, 804, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826과 각각 동일하다. 단계 906에서, 해시는 각 블록에 대해 계산되지만 추가되지는 않는다. 대신 해시가 별도로 저장된다. 예를 들어, 해시가 핵산의 블록보다 더 빠르고 쉽게 액세스되도록 하기 위해, 해시를 하드 드라이브에 저장할 수 있다. 해시는 핵산 분자, 자기 저장 장치, 플래시 메모리 장치, 클라우드 저장소 또는 기타 적절한 위치에 저장될 수 있다.
일련의 심볼을 인코딩할 때, 구성될 수 있는 별개의 식별자 시퀀스의 수는 사용되는 인코딩 체계의 파라미터 및 인코딩될 심볼 스트링에 따라 다르다. 주어진 심볼 스트링에 대해, 키 리소스(예를 들어, 식별자를 구축하는 데 사용되는 레이어 또는 구성 요소의 수)를 최소화하는 최적화된 방식을 생성하는 것이 유리할 수 있다. C개의 구성 요소 세트는 B(C)개의 고유한 방식으로 분할될 수 있고, 여기서 B(C)는 C번째 벨 번호이고 C에 따라 계승적으로 증가한다. L개의 레이어에 각각 c1, c2, ..., cL 구성 요소가 포함되어 있으면, 구성 가능한 고유 식별자의 총 수는
Figure pct00001
이며
Figure pct00002
이다. (도 23과 관련하여 언급된 바와 같이) 조합 체계의 범위로 지칭될 수 있는 구성 요소 라이브러리로부터 구성 가능한 조합 객체의 총 수는 식별자의 단일 풀에 기록 가능한 비트 스트림의 길이를 결정한다. 따라서, 주어진 비트 스트림 길이 및 구성 요소 라이브러리 크기에 대해, 레이어 수를 최소화하면서 비트 스트림을 인코딩하기에 충분히 큰 스팬을 갖는 분할 방식이 유리할 수 있다. 각각의 추가 레이어는 화학법에 추가적인 효율성과 시간 제약을 부과한다. 따라서 더 적은 수의 레이어가 있는 파티션 구성표가 바람직하다. 레이어를 최소화하기 위한 파티션 방식의 예가 도 26과 관련하여 아래에서 설명된다. 비트 스트림 길이의 소인수 분해로부터 가능한 분할 공간에 대한 분기 경계 탐색이 제시된다.
코덱 또는 임의의 인코딩 시스템은 다중화 가능한 반응 세트를 계산하기 위해 여러 전략을 사용할 수 있다. 첫째, 다중 값 논리 합성에서 차용한 전략은 비트 스트림과 같은 심볼 스트링의 전체 또는 일부를 부울 함수로 취급하고 휴리스틱을 사용하여 함수의 최소 표현을 추출하려고 시도할 수 있다. 최첨단 논리 합성 도구는 ~106개의 행 진리표가 있는 함수를 처리할 수 있는 것으로 나타났다. 소스 스트림이 이미 엔트로피 압축된 경우 간결한 표현을 찾기 어려울 수 있으므로 이 접근 방식이 실패할 수 있다. 압축된 스트림의 경우, 로컬 그리디 접근 방식은 스트림을 Z개의 인접 식별자 시퀀스의 반응 워드로 나누고 다중화 레이어에 적어도 Z개의 구성 요소 시퀀스가 있는 구성 요소 분할 체계를 사용하는 것이다. 이렇게 하면 Z 식별자가 동일한 프리픽스를 공유하고, 단일 반응 구획에서 조립이 용이해진다. (예를 들어, 도 23에서 Z=2). 역으로, 관심 있는 또 다른 성능 척도는 반응당 인코딩된 비트의 수이다. 반응 구획을 최소화하면 단일 반응에서 기록되는 심볼의 수가 증가하므로 기록 시스템에서 주어진 심볼 스트링을 기록하는 데 필요한 기록 시간과 전체 기판 길이가 최소화된다.
또 다른 주요 리소스는 소스 비트를 인코딩하기 위해 구성될 수 있는 식별자의 수이다. 기본적으로 LCPCC 체계는 고유한 식별자 시퀀스로 심볼 스트링의 각 심볼 위치를 인코딩한다. 심볼 스트링이 식별자의 존재를 '1'로 나타내고 부재를 '0'으로 나타내는 비트스트림인 경우, 비트스트림을 작성하기 위해 조립할 수 있는 식별자의 수는 소스 비트 스트림의 '1' 비트 값 수에 비례한다. 비트 스트림 길이가 주요 척도인 인 실리코 압축과 달리, 여기서는 필요한 쓰기 시간 또는 반응 구획을 정의할 수 있는 비트 스트림의 가중치("1" 비트 값의 수)이다.
식별자(예를 들어, 도 26의 단계 1008에 설명된 식별자)를 조립하는 것은 모든 필요한 구성요소 및 시약이 반응 시간에 배치되는 구획에서 화학 반응을 수행할 것을 요구할 수 있다. 필요한 이러한 구획의 수는 최소화할 수 있는 중요한 리소스이다. 반응 구획 수를 최소화하는 한 가지 전략은 각 구획에서 여러 반응을 실행하는 것이다. 그러나 모든 반응이 상호 결합 가능한 것은 아니다. LCPCC(도 23과 관련하여 위에서 설명됨)는 인접한 식별자 시퀀스가 구성 요소 시퀀스의 공통 프리픽스를 공유하도록 조합 공간을 생성한다. 도 23의 예의 경우 식별자 시퀀스 0과 1은 공통 구성 요소 시퀀스 프리픽스를 공유한다. 식별자 시퀀스 0에는 구성 요소 시퀀스 0, 3, 6이 있고 식별자 시퀀스 1에는 구성 요소 시퀀스 0, 3, 7이 있다. 이는 식별자 0과 1의 구성이 0, 3, 6 및 7의 4개 구성요소가 함께 배치된 단일 반응 구획에서 실행되는데, 이는 구성요소 6 및 7이, 구성에 의해, 상호 불활성이기 때문이다. 단일 구획에서 여러 반응을 실행하는 이러한 전략은 다중화라고 할 수 있으며, 다중 구성 요소가 취해진 레이어가 다중화 레이어이다.
도 26은 분할 방식으로 디지털 정보를 핵산으로 인코딩하는 단계를 개략적으로 설명하는 흐름도(1000)를 보여준다. 분할 방식은 쓰기 하드웨어 구성(예: 프린터에서 사용할 수 있는 잉크의 수)과 같은 제약 하에서, 핵산의 디지털 정보를 인코딩하려는 의도로 설계될 수 있다. 흐름도(1000)는 단계 1002에서 시작한다. 전술한 도 24-25의 단계(802, 902)에서처럼, 단계(1002)에서 디지털 정보는 길이 L을 갖는 일련의 심볼로서 수신된다. 일부 실시예에서, 심볼의 스트링을 길이 B의 비트 스트링으로 변환하기 위한 추가 단계가 흐름도(1000)에 통합될 수 있다.
주어진 제한 내에서 인코딩하기 위해, 단계 1004에서 분할 방식이 결정된다. 분할 체계는 일련의 C개의 개별 구성 요소 시퀀스를 사용하여 심볼 스트링을 인코딩하는 규칙 세트를 정의한다. 구체적으로, 분할 방식은 C개의 별개의 구성요소 시퀀스를 배열하기 위한 다수의 M개의 레이어를 정의하고, i번째 레이어에 ci개의 구성요소 시퀀스가 있도록 각 레이어에서 구성요소 시퀀스 번호를 정의한다. 일부 실시예에서, 각 레이어의 구성요소 시퀀스의 수는 균일하지 않다(즉, c1이 c2와 같지 않음, 등). 레이어의 수와 구성 요소 시퀀스의 수는 심볼 스트링을 인코딩하는 데 필요한 레이어의 수를 최소화하도록 구성될 수 있으므로 전체 디지털 정보를 인코딩할 수 있는 충분한 식별자 시퀀스 가능성을 유지하면서 식별자 분자를 형성하는 화학법을 단순화할 수 있다. 심볼 스트링을 인코딩할 수 있는 충분한 식별자 시퀀스 가능성을 보장하려면, 구성 요소 시퀀스 번호의 프로덕트 ci (
Figure pct00003
)가 심볼 스트링의 길이(비트 단위로 측정됨)보다 크거나 같아야 하며, 구성 요소 시퀀스 번호의 합
Figure pct00004
은 개별 구성 요소 시퀀스의 수 C보다 작거나 같아야 한다. 일부 실시예에서, 식별자는 가능한 식별자 시퀀스의 조합 공간의 서브세트를 나타내며, 각각은 M개의 레이어 각각으로부터의 하나의 구성요소를 포함한다. 간단한 예로서, L이 1,000비트(예를 들어, 단계 1002에서 수신된 비트 스트림의 1,000비트)이고 C가 70(예를 들어, 인쇄될 수 있는 70개의 프린터 잉크)이면, 레이어 당 10개의 구성요소 시퀀스를 갖는 3개의 레이어(M=3)이 데이터를 인코딩하는 데 사용될 수 있다. 그러나 사용 가능한 70개의 구성 요소 시퀀스를 가장 잘 활용하려면 제1 레이어에 50개의 구성 요소 시퀀스, 제2 레이어에 20개의 구성 요소 시퀀스가 있도록 두 개의 레이어(M=2)를 사용하여 데이터를 인코딩하는 것이 더 효율적일 수 있다.
일부 실시예에서, 심볼 스트링이 길이 B의 심볼 스트링으로 변환된 경우, 구성요소 시퀀스 번호 ci의 프로덕트는 비트로 변환된 길이 B의 심볼 스트링의 길이보다 크거나 같아야 한다. 예를 들어, 변환된 심볼 스트링이 "LETTER"인 경우, B는 6이지만 각 문자가 8비트로 인코딩된 경우 동등한 비트 스트링은 48비트(B는 48)로 구성된다. 따라서 "LETTER"를 인코딩하는 데 필요한 M개의 레이어 및 C개의 구성요소 시퀀스의 수는
Figure pct00005
이 되어야 한다.
단계(1006)에서, 제1 식별자는 예를 들어 프린터-피니셔 시스템을 이용하여 (i) M개의 레이어 각각으로부터 하나의 구성요소를 선택하고, (ii) M개의 선택된 구성요소를 구획으로 침착시키고, (iii) 선택된 구성 요소를 물리적으로 조립함으로써, 형성된다. 일부 실시예에서, 선택된 구성요소는 결찰에 의해 조립된다. 일부 예에서, M개의 레이어는 상이한 우선순위 레벨과 연관된다. 예를 들어, 제1 레이어가 가장 높은 우선순위를 가질 수 있고, 제2 레이어가 두 번째로 높은 우선순위를 가질 수 있다.
단계 1008에서, 추가 식별자가 형성된다. 추가 식별자는 인코딩할 디지털 정보를 나타내는 심볼 스트링의 각 심볼 위치에 해당한다. 심볼 스트링 내의 각 심볼 위치는 해당하는 다른 식별자를 가질 수 있다. 일단 필요한 양의 식별자가 형성되면, 식별자는 단계 1010에서 풀에 수집된다. 일부 측면에서, 정보는 핵산 서열로부터 판독된다. 일부 실시예에서는 식별자 풀을 얻는다. 풀의 식별자는 길이가 L인 심볼 스트링으로부터 디지털 정보를 저장한다. 식별자 풀은 길이가 L인 심볼 스트링을 인코딩할 수 있는 식별자 라이브러리의 식별자 시퀀스 서브세트에 해당한다. 풀 내의 각각의 개별 식별자는 심볼 스트링에서 심볼 값과 심볼 위치에 해당한다. 각각의 개별 식별자는 복수의 구성 요소를 포함하므로, 특정 시퀀스의 인스턴스이다. 일부 실시예에서, 풀은 유전자-, 펩티드- 또는 RNA-암호화 DNA를 포함한다.
도 27은 각 워드를 고정 가중치를 갖는 코드워드로 변환하기 위한 균일 가중치 코드를 보여준다. 균일 가중치 코딩은 디코딩을 개선하고 기록 시스템의 구성을 단순화할 수 있다. 이에 대한 한 가지 접근 방식은 가능한 모든 소스 워드와 가능한 모든 코드워드에 대한 매핑의 완전한 이분 그래프를 구성하는 것이다. 완전한 이분 그래프의 각 에지는 코드워드에 의해 도입된 '1' 비트 값의 수에 의해 가중된다. 선형 프로그래밍 기반 다항식 시간 알고리즘이 존재하는 문제인 최소 가중치 매칭을 선택함으로써, 비트 스트림 가중치를 최소화하는 매핑을 찾을 수 있으며, 이를 작성하는 데 필요한 총 식별자 시퀀스 수를 효과적으로 "압축"할 수 있다. 이러한 코드를 가중치 최소화 코드라고 할 수 있다. 더 긴 코드워드를 사용하여 소스 비트 스트림을 레코딩함으로써 "1" 비트 값의 수를 최소화할 수 있다. 도 27에서, 3비트의 워드를 인코딩하는데 필요한 길이 5의 코드워드의 최소 가중치는 가중치 2이다. 그러나 3비트 워드는 평균적으로 1.5의 가중치를 갖기 때문에 이 코드워드 체계는, 길이가 5인 코드워드에 대한 가중치가 최소이지만, 실제로는 메시지의 전체 가중치를 증가시킨다. 예를 들어 코드워드의 길이가 8로 확장되면 3비트를 인코딩하는 코드워드 가중치가 1이 될 수 있다. 이 예에서는 메시지의 전체 가중치가 줄어들 것이다. 소스 비트당 필요한 식별자 시퀀스의 수를 줄이기 위해 가중치 최소화 기술이 사용될 수 있다.
시퀀싱에 의해 식별자 라이브러리를 판독하는 것은 별개의 식별자 시퀀스의 다중 카피(다중 핵산 분자)의 분포로부터 샘플링하는 것을 수반한다. 식별자 강화의 불균일성으로 인해 더 낮은 사본 식별자 샘플링이 어려워져 더 큰 샘플이 필요하다. 본원에 기술된 기록 시스템은 다중화를 통해 반응 구획에서 다수의 식별자를 조립하기 때문에, 그리고 각 반응 구획의 식별자 시퀀스의 수가 소스 비트 스트림에 의해 정의되기 때문에, 최종 라이브러리에서 각 식별자의 농축이 달라질 수 있다. 이 문제를 완화하기 위한 하나의 접근법은 균일 가중치 코드를 사용하여 소스 비트 스트림을 재인코딩하는 것인데, 여기서는 도 27에 도시된 바와 같이 모든 코드워드가 "1" 값의 고정 상수를 포함한다. 결과적으로 각 반응 구획은 고정된 수의 식별자를 조립하므로, 표기 시스템을 수정하지 않고도 농축의 편차가 최소화된다. 더욱이, 코드워드 길이를 신중하게 선택함으로써, 균일한 가중치 코드는 비트 스트림의 가중치를 최소화할 수도 있다. 예를 들어 고정 가중치가 13인 37.4 x 106 28비트 코드워드 세트는 모든 25비트 소스 워드를 인코딩할 수 있으므로 25/13 = 1.92비트/식별자가 된다. 또 다른 예로서, 고정 가중치 10의 64.5 x 106 32비트 코드워드 세트는 모든 25비트 소스 워드를 인코딩할 수 있으므로, 25/10 = 2.5비트/식별자가 된다.
균일한 가중치 코딩의 추가적인 이점은 라이브러리가 판독될 때 디코딩된 각 코드워드가 보다 강력한 디코딩 기술의 사용을 가능하게 하는 알려진 고정 개수의 "1" 값을 포함할 것으로 예상된다는 것이다. 이 아이디어를 극단적으로 밀어붙이면 예를 들어 1024비트와 같은 긴 코드워드는 여러 반응에 걸쳐 있을 수 있지만 10비트를 인코딩하는 단일 식별자만 조립해야 할 수도 있다. 이는 매우 적은 수의 식별자를 구성해야 하는 필요성으로 인해 높은 인코딩 속도와, 식별자당 더 높은 비트로 인코딩됨으로 인해 높은 디코딩 속도를 가능하게 하는, 극단적인 "가중치 압축"으로 이어질 수 있다.
전술한 레코딩 기술은 고전적인 리던던시 바이트가 계산된 후 조합 레이어에 적용되기 때문에 오류 보호 성능에 영향을 줄 수 있다. 예를 들어, 25비트 소스 워드가 균일한 가중치 13의 28비트 코드워드에 매핑될 때, 매핑은 아이소메트릭이 아닐 수 있다. 이제 1-코드워드 오류로 인해 소스 워드에서 멀티바이트 오류가 발생할 수 있다. 극단적인 가중치 최소화는 코드의 최소 거리가 줄어들기 때문에 인코딩된 비트의 SNR(신호 대 잡음비)에도 영향을 미칠 수 있다. 이러한 문제를 조사하고 해결하기 위해 소스 워드를 포함하는 가중치 최소화 균일 가중치 코드가 거의 등축으로 코드워드에 내장될 수 있다. 이로 인해 더 긴 코드워드를 사용할 수 있지만 더 나은 오류 성능을 제공할 수도 있다. 이러한 모든 제약 조건에 대해 공동 최적화하는 인코딩 체계를 생성하기 위해, 도구는 레이어를 최소화하고, 스팬을 최대화하며, 반응 구획을 최소화하고, 가중치를 최소화하며, 오류 방지 성능을 유지하는 일정한 가중치 코드워드를 사용하는 코드를 찾아낼 수 있다.
대략 1Mb/s의 처리량은 상술한 바와 같이 인코더에 대한 CPU-스레드당 달성될 수 있다. 예를 들어, 93Mb/s(1TB/일)의 속도는 CPU 32개, - 10TB의 임시 디스크 공간 및 - 3TB의 발신 대역폭으로 구성된 4개의 인스턴스를 사용하여 달성할 수 있으며, 이는 1080개 작업에 대해 상각될 수 있다. 이 인코딩된 정보를 생성하는 비용은 유사한 인프라가 기록 시스템에 로컬로 연결되는 경우 대략 절반이 될 수 있어서, 발신 대역폭 비용을 절약하고 수집이 무료였다고 가정했다. GPU 또는 서버없는 클라우드 기능을 사용하면 소프트웨어 리팩토링 및 플랫폼 의존성을 희생시키면서 이 비용을 더 줄일 수 있다.
아카이브로부터 소스 비트 스트림을 복구하는 것은 위에서 설명한 것과 대략 반대 프로세스를 따른다. 도 28은 일련의 식별자를 디코딩하는 기본 단계를 갖는 시스템도를 보여준다. 시스템은 관심 있는 식별자의 서브세트 풀을 얻는다. 목표는 풀의 적절한 샘플링에서 관찰된 시퀀스를 생성할 가능성이 가장 높은 일련의 식별자 시퀀스를 재구성하는 것이다. 시뮬레이션 모델을 사용하여 불완전한 샘플링의 허용 가능한 작은 확률이 주어지면, 디코딩할 식별자 서브라이브러리에 대한 샘플 크기 추정치가 먼저 계산된다. 컴퓨팅 샘플 크기를 사용하여 식별자 라이브러리를 샘플링하고 시퀀싱하여 관찰된 시퀀스의 스트림 또는 컬렉션을 얻는다.
관찰 시퀀스 s를 고려해보자. 위에서 설명한 아카이브에 저장된 표현 정보에서, 시퀀스는 L개의 레이어가 있는 LCPCC 식별자 라이브러리에서 온 것으로 알려져 있으며 여기서 레이어 i의 j번째 구성 요소는 구성 요소 시퀀스 cij를 포함한다. 따라서 관찰된 시퀀스 s는 먼저 모든 j에 대해 구성 요소 시퀀스 c1j와 비교된다. 정확히 일치하는 항목이 발견되면 일치하지 않는 서픽스 s는 이제 i=2로 동일한 프로세스를 거친다. 정확히 일치하는 항목이 없으면, ASM(근사 스트링 일치 기법) 또는 정렬 기법 또는 n-그램 접근 방식을 사용하여 s의 프리픽스 및 구성 요소 시퀀스 c1j에 대해 빠른 근사 일치 점수가 계산된다. ASM(근사 스트링 일치) 방법은 아래에 설명된 나노포어 시퀀싱 장치에서 예상되는 스트리밍 시퀀스 데이터의 "온라인" 매칭에 대한 적합성을 결정하기 위해 평가될 수 있다.
길이 lc의 구성요소 시퀀스에 대해, 구성요소 시퀀스의 가변 세그먼트만이 식별될 필요가 있다. 구성 요소 시퀀스의 가변 세그먼트는 모든 염기를 해독하려고 노력하는 비트 단위 기록 체계와 달리 1c/3만큼 작을 수 있다. 이 프로세스는 처리되지 않은 s 서픽스로 반복되며 매칭 점수로 가중치가 부여된 정점이 있는 L-partite 그래프가 생성된다. 최상위 가중치 경로는 후보 식별자 시퀀스에 해당하며 각 후보에는 점수가 있다. 식별자 시퀀스는 정렬된 조합 공간에 속하므로 각 후보 식별자 시퀀스는 인코딩된 스트림의 심볼에 해당한다. 일부 후보 식별자 시퀀스는 코드워드 규칙과 모순될 수 있다. 예를 들어, 코드워드는 고정 가중치일 수 있다. 이러한 후보는 낮은 점수에 따라 제거되거나 대체 후보 세트로 저장될 수 있다. 마지막으로, 코드워드의 후보 시퀀스를 얻기 위해 상위 순위 후보를 통한 경로가 구성된다. 그런 다음 이 코드워드 시퀀스를 고정 데이터에 대해 확인하고 가능한 경우 오류 정정 심볼을 사용하여 정정한다. 잡음이나 오류가 심한 경우 이 기술은 후보 식별자를 통해 대체 경로를 역추적하고 선택하여, 올바른 후보 시퀀스를 검색할 수 있다.
일단 코드워드가 획득되면, 에러 보호된 소스 블록을 획득하기 위해 암시적 레머(Lehmer) 코드북을 사용하여 다시 소스 워드로 매핑된다. 그런 다음 이러한 블록을 디코딩하고 확인하여 고정성을 검증한다. 오류가 발견되면 가능한 경우 오류 보호 심볼을 사용하여 가능하다면 오류를 수정하고 소스 블록을 복구한다. 소스 블록은 소스 비트 스트림으로 적절하게 조립되고, 질의 응답 조립, 전달 및 캐싱을 위해 블록 레이어로 전달된다.
도 29는 핵산 서열에 저장된 디지털 정보를 판독하기 위한 단계를 요약한 흐름도(1300)를 보여준다. 단계(1302)에서, 식별자의 풀이 획득된다(예를 들어, 도 30과 관련하여 설명된 방법을 통해). 풀의 식별자는 길이가 L인 심볼 스트링의 디지털 정보를 저장한다. 식별자 풀은 길이가 L인 심볼 스트링을 인코딩할 수 있는 식별자 라이브러리의 식별자 시퀀스 서브세트에 해당한다. 풀 내 각각의 개별 식별자는 심볼 스트링에서 심볼 값과 심볼 위치에 해당한다. 각각의 개별 식별자는 복수의 구성 요소를 포함하므로 특정 시퀀스의 인스턴스이다.
단계 1302와 1304 사이에서, 식별자는 다양한 방식으로 처리될 수 있다. 일부 실시예에서, 식별자는 제2 식별자에 결찰된다. 일부 실시예에서는 식별자의 한 가닥이 저하된다. 예를 들어, 식별자의 한 가닥을 선택적으로 분해하기 위해 가닥 특이적 엑소뉴클레아제를 사용할 수 있다.
단계(1304)에서, 획득된 식별자 중 적어도 하나는 적어도 하나의 식별자의 일부에 대응하는 판독 시퀀스를 획득하기 위해 판독된다. 단계 1304는 화학적 시퀀싱, 사슬 종결 시퀀싱, 샷건 시퀀싱, 브리지 PCR 시퀀싱, 단일 분자 실시간 시퀀싱, 이온 반도체 시퀀싱, 파이로시퀀싱, 합성에 의한 시퀀싱, 조합 프로브 앵커 합성 시퀀싱, 결찰에 의한 시퀀싱, 나노포어 시퀀싱, 나노채널 시퀀싱, 대량 병렬 시그니처 시퀀싱, 폴로니 시퀀싱, DNA 나노볼 시퀀싱, 단일 분자 형광 시퀀싱, 터널링 전류 시퀀싱, 혼성화 시퀀싱, 질량 분석 시퀀싱, 미세 유체 시퀀싱, 투과 전자 현미경 시퀀싱, RNA 폴리머라제 시퀀싱 , 또는 체외 바이러스 시퀀싱과 같은, 임의의 시퀀싱 기술에 의해 실현될 수 있다. 이 경우 식별자인 핵산 풀을 시퀀싱하면 전체 풀에 대한 판독 시퀀스가 생성된다. 그러나 풀의 각 식별자가 읽기 시퀀스에 어떻게 매핑되는지는 알 수 없다. 시퀀싱 방법은 단일 염기 오류가 발생하기 쉬우므로 식별자와 판독 시퀀스의 매칭을 더욱 방해한다.
일부 실시예에서, 단계 1304는 나노포어 시퀀싱을 포함한다. 전해액과 적어도 하나의 나노포어 채널에 전기장이 인가된다. 일부 실시예에서, 적어도 하나의 나노포어 채널은 고체 상태 멤브레인 내에 형성된다. 일부 실시예에서, 나노포어 채널은 αHL(alpha-hemolysin) 또는 MspA(mycobacterium smegmatis porin A)로부터 형성된다. 나노포어 시퀀싱 동안 식별자는 적어도 하나의 나노포어 채널을 통해 전좌되며, 채널 전체의 임피던스가 측정된다. 식별자의 각 구성 요소는 구성 요소 시퀀스의 길이를 따라 해당하는 고유한 임피던스 시그너처를 가지므로, 측정된 임피던스 값을 고유한 임피던스 시그너처와 비교하여 판독 시퀀스의 구성 요소를 결정할 수 있다.
일부 실시예에서, 단계 1304가 나노포어 시퀀싱을 포함할 때, 인가된 전기장은 100mV 이상의 차동 전위를 생성한다. 이 높은 차등 전위는 식별자가 비교적 높은 속도로 나노포어 채널을 통과할 수 있게 한다. 예를 들어, 식별자의 전좌는 초당 1,000 염기보다 큰 속도로 발생할 수 있다. 특히, 전좌율은 초당 1,000,000 염기일 수 있다.
일부 실시예에서, 단계 1304가 나노포어 시퀀싱을 포함할 때, 작용제는 전좌 전에 식별자에 결합된다. 예를 들어, 작용제는 화학적 모이어티, 단백질, 효소, 염기 유사체, 접합된 핵산, 헤어핀이 있는 핵산 또는 메틸 그룹일 수 있다. 일부 실시예에서, 작용제가 화학적 부분인 경우, 메틸트랜스퍼라제와 같은 효소는 화학적 부분을 적어도 하나의 식별자 핵산 분자에 결합시킨다. 일부 실시예에서, 작용제가 염기 유사체이고 작용제가 폴리머라제와 같은 효소를 사용하여 결합되는 경우, 효소는 복제 동안 적어도 하나의 식별자 핵산 분자에 염기 유사체를 결합시킨다.
작용제는 읽는 동안 식별자의 시퀀스를 결정하는 데 도움이 될 수 있는 작용제 시그너처와 연관된다. 적어도 하나의 식별자 핵산 분자에 작용제를 결합시키는 것은 식별자의 구성요소 상의 알려진 위치에서 발생하여, 알려진 위치에서의 작용제 시그너처가 전좌 동안 임피던스 값의 알려진 이동을 초래한다. 따라서 작용제의 존재는 식별자에 대해 과장된 "프로필"을 생성할 수 있으므로 읽는 동안 신호 대 잡음비가 증가한다. 이를 통해 읽는 동안 정확도를 유지하면서 전좌 속도를 높일 수 있다. 특히, 적어도 하나의 식별자 상의 작용제의 존재는 적어도 하나의 핵산 분자에 대한 작용제의 부재 시 원하는 수준의 정확도를 달성하는 제2 최대 전좌율보다 빠른 원하는 수준의 정확도를 달성하는 제1 최대 전좌율을 허용할 수 있다. 판독하는 동안 신호 대 잡음비를 증가시키는 또 다른 방법은 식별자를 복제하여 수정된 염기 또는 염기 유사체를 포함하도록 하는 것이다. 이는 작용제를 식별자에 결합하는 것과 별도로 또는 추가로 수행할 수 있다.
단계(1306, 1308, 1310 및 1312)는 판독 시퀀스를 알려진 식별자 시퀀스 세트(즉, 식별자 라이브러리)에 매칭하는 방법을 설명한다. 단계 1306에서, 판독 시퀀스는 판독 시퀀스에 근접하거나 정확하게 일치하는 구성 요소 시퀀스를 갖는 식별자 라이브러리로부터 후보 식별자 시퀀스 세트를 식별하는 데 사용된다. 예를 들어, 판독 시퀀스(식별자와 정확히 일치하거나 일치하지 않을 수 있음)는 CAGCTG일 수 있다. 후보 식별자 시퀀스 세트는 정확한 일치(CAGCTG) 뿐만 아니라 특정 수의 염기(예를 들어, 1, 2, 3, 10, 20, 100 등)만큼 상이한 식별자 시퀀스처럼, 판독 서열과 유사한 다른 잠재적 일치를 포함할 수 있다. 예를 들어, 후보 식별자 시퀀스 세트에는 CAGATG, AAGCTA 및 CACGTG도 포함될 수 있다. 쉽게 참조할 수 있도록 "잘못된" 뉴클레오티드(즉, 예에서 판독 시퀀스와 일치하지 않음)에 밑줄이 그어져 있다.
일부 실시예에서, 식별자는 각각의 식별자가 판독 오류 허용 오차와 연관되도록 인코딩된다(예를 들어, 동일한 레이어의 구성 요소들 사이의 최소 해밍 또는 Levenshtein 거리를 보장함으로써). 식별자를 읽는 속도를 높이기 위해 허용 판독 오류 허용 오차를 사용할 수 있다. 읽기 속도를 높이는 또 다른 방법은 식별자의 서브세트를 읽는 것이다. 일부 실시예에서, 식별자는 M개의 레이어에 대응하는 M개의 구성요소를 포함한다(도 26과 관련하여 전술한 바와 같음). 일부 구현들에서, 식별자를 읽는 것은 N이 M보다 작은 경우 M개의 구성요소들 중 N만을 읽는 것을 포함한다. 이것은 주어진 시간 동안 판독되는 식별자의 수를 증가시킬 수 있다. 이는 풀에서 인코딩된 데이터의 서브세트에 액세스해야 할 때 유용할 수 있다. 예를 들어, 제1 레이어가 항상 어떤 의미 있는 값을 나타내는 경우 제1 레이어에만 액세스하여 특정 유용한 식별자를 식별할 수 있다. 또는 예를 들어 액세스된 모든 식별자가 처음 4개 레이어에서 동일한 구성 요소를 갖는 경우, 해당 4개 레이어를 읽을 필요가 없다.
단계(1308)에서, 각각의 후보 식별자 시퀀스는 각각의 후보 식별자 시퀀스의 구성요소 시퀀스가 판독 시퀀스와 얼마나 유사한지에 관련된 점수를 할당받는다. 후보 식별자 시퀀스가 판독 서열과 더 잘 일치할수록, 점수가 낮아질(또는 높아질) 수 있다. 점수는 최소 거리 알고리즘, 퍼센트 일치 또는 임의의 다른 적절한 알고리즘을 포함한, 다양한 방식으로 계산될 수 있다. 예를 들어, 읽기 시퀀스 CAGCTG의 경우, 후보 시퀀스 CAGCTG는 0점을 가질 수 있는 반면, 후보 시퀀스 CAGATG는 후보 시퀀스의 제4 염기가 읽기 시퀀스와 일치하지 않기 때문에 1점을 가질 수 있다. 점수는 잘못된 염기의 수 및/또는 잘못된 염기의 배치에 따라 달라질 수 있다. 예를 들어, 서로 인접한 2개의 잘못된 뉴클레오티드가 있는 후보(CACGTG)는 인접하지 않은 2개의 잘못된 뉴클레오티드가 있는 후보(AAGCTA)보다 낮은 점수를 가질 수 있다.
점수 세트는 단계 1304에서 판독(또는 관찰)된 식별자에 대한 잠재적 매치로서 후보 식별자 시퀀스 중 하나를 선택하여 단일 염기 시퀀싱 오류의 영향을 완화하도록 단계 1310에서 결정을 안내한다. 예를 들어, 점수가 가장 낮은 후보 서열이 판독 서열에 가장 근접한 잠재적 일치이기 때문에 선택될 수 있다. 단계(1312)에서, 선택된 후보 식별자 시퀀스는 식별자 라이브러리를 사용하여 심볼 위치 및 심볼 값에 매핑된다. 일부 실시예에서, 단계 1304가 나노포어 시퀀싱을 포함하고 작용제가 식별자에 결합된 경우, 식별자에서 서열을 결정하는 것은 전좌 동안 측정된 임피던스 값을 작용제 시그니처와 비교하는 것을 포함한다.
일부 실시예에서, 단계(1306, 1308, 1310 및 1312)는 원하는 디지털 정보가 식별자의 풀(또는 다수의 풀)로부터 완전히 액세스될 때까지 반복된다. 일부 실시예에서, 디코딩된 심볼 스트링이 결정되고 정확도에 대해 테스트된다. 구체적으로, 디코딩된 심볼 스트링의 일부의 해시가 계산된 다음, 단계 1302에서 획득된 심볼 스트링의 대응하는 부분과 연관된 해시와 비교될 수 있다. 해시는 풀에 도 24와 관련하여 기술된 바와 같이 복수의 식별자로서 저장될 수 있고(및 이후에 위에서 도 29의 단계들을 통해 판독될 수 있고), 또는, 도 25와 관련하여 기술된 바와 같이, 원격으로 저장될 수 있다. 해시는 MD5, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, 또는 SHA-512/256 또는 그외 다른 적절한 알고리즘을 통해 계산될 수 있다. 판독된 또는 원래의 해시와 계산된 해시 간의 미스매치는 데이터 판독시 판독 오류가 있었음을 나타낸다. 가령, 핵산 분자로부터 추출된 정보가 소스 데이터와 일치하지 않는다. 계산된 해시가 판독된 원래 해시와 일치하는지 여부에 기초하여, 디코딩된 심볼 스트링의 일부가 단계 1302에서 획득한 심볼 스트링의 일부와 매칭되는 것으로 검증될 수 있다. 해시가 일치하지 않을 경우(또는 디코딩된 스트링이 그외 다른 수단을 통해 획득한 스트링과 일치하지 않는다고 결정될 경우), (단계 1306으로부터의 후보 식별자 시퀀스 세트 중) 상이한 후보 식별자 시퀀스가 선택될 수 있다(가령, 상술한 단계 1310에서처럼). 식별자가 디코딩되고 확인됨에 따라 컴퓨터 시스템은 이 정보를 추적하고 머신 러닝 기술을 사용하여 디코딩된 심볼 스트링이 심볼 스트링과 일치할 가능성을 높일 수 있다. 따라서, 도 29에 개시된 오류 허용 방법이 예를 들어 전술한 바와 같이, 실질적으로 큰 인가 전압에서 나노포어 시퀀싱을 실행하는, 시퀀싱 기술의 비통상적인 개선을 위한 기초를 설정한다.
그램의 관점에서, 주어진 풀에 있는 재료의 총량은 마이크로그램 양일 수 있다. 풀의 분자를 정확하게 판독하기 위해, 중복, 보관 및 액세스를 위해 충분한 물질이 존재하도록 PCR로 증폭될 수 있다. 식별자의 각 가장자리에 있는 구성 요소는 전체 식별자 라이브러리가 하나의 PCR 반응, 등에서 기하급수적으로 복제될 수 있도록 공통 프라이머 바인딩 사이트를 갖도록 설계할 수 있다. 증폭 과정은 두 가지 기본 단계를 포함할 수 있다. (A) 프라이머를 사용한 제1 증폭 단계에서, 원하는 데이터 블록을 선택하고 강화한다. (B) 프라이머가 있는 제2 단계에서는 앰플리콘이 시퀀싱을 위해 준비된다. 제1 단계(A)는 고유한 프라이머와 몇 번의 PCR 사이클만을 사용하여 특정 표적을 선택하는 것이고, 제2 단계(B)는 프라이머를 포함하지 않는 특정 표적의 표적 서열을 증폭하여 시퀀싱을 위해 많은 양의 분자를 생성한다. 증폭을 위한 이 중첩 접근 방식을 사용하면 액세스되는 식별자의 수와 ID가 조정되고 시퀀싱 부담이 줄어든다. 일부 실시예에서 증폭 단계는 라이브러리에서 증폭 편향을 줄이고 시퀀스 풍부도의 균일성을 유지하기 위해 7주기 이하로 제한된다. 프라이머 조합은 증폭 과정의 효율성과 균일성을 입증하기 위해 식별자로 검증될 수 있다. 초기 최적화는 qPCR에 의해 측정된다. 제품 순도 수준은 qPCR 증폭 효율 측정과, 부분 시퀀싱 제품의 존재 시퀀싱에 의해 PCR 정리 요구 사항(예: ExoSAP-IT, ThermoFisher)을 사용하여 결정할 수 있다. 또한 판독 정확도의 속도를 높이기 위해 태그로 분자를 선택적으로 강화하는 것이 유리할 수 있다. 나노포어 시퀀싱에서 더 나은 신호 분해능을 위해 핵산 분자에 태그를 지정할 수 있는 방법과 유사하게, 각 구성 요소 또는 식별자는 단백질 또는 자석 기반 선택 프로토콜과 같은 다른 선택 기술을 허용하는 특정 프로브/어댑터로 태그를 지정할 수 있다. 강화 방법의 예에는 i) 스트렙타비딘 코팅 자기 비드, ii) Ampure XP 크기 선택, iii) Watson-Crick 베이트 서열에 의한 특정 프라이머 포획이 포함된다.
또한, 네스티드 PCR 기반의 화학적 랜덤 액세스 방법을 사용하여 판독용 식별자의 서브라이브러리를 효율적으로 만들 수 있다. 도 30은 보관된 DNA 라이브러리에서 식별자의 서브라이브러리에 액세스하기 위한 중첩된 PCR 증폭 계획의 예를 도시한다. 서브라이브러리는 하나의 데이터 블록, 여러 데이터 블록, 단일 식별자, 여러 식별자 등과 같이 액세스하려는 모든 식별자 그룹이 될 수 있다. 식별자들의 에지 레이어 상의 구성요소들을 결합하는 (A) 프라이머를 가진 제1 증폭 단계에서, 원하는 데이터 블록을 포함하는 식별자 그룹이 선택되고 보강된다. 이 프로세스는 (B) 다음 두 레이어의 구성 요소를 안쪽으로 결합하는 (B) 프라이머로 반복되므로, 식별자 그룹을 원하는 데이터 블록을 포함하는 보다 작은 샘플로 추가로 감소시킨다. 이 프로세스는 불러온(또는 액세스되거나 선택된) 식별자 그룹이 원하는 데이터 블록을 나타내는 모든 식별자로만 구성되거나 거의 구성될 때까지 반복될 수 있으므로, 데이터 블록이 시퀀싱과 함께 효율적으로 다시 읽혀질 수 있다. 중첩(Nested) PCR의 최종 라운드에서, 시퀀싱을 위해 식별자를 동시에 준비할 수 있다. 증폭을 위한 이 중첩 접근 방식을 사용하면 액세스되는 식별자의 수와 ID가 조정되고 시퀀싱 부담이 줄어든다. 일부 실시예에서 증폭 단계는 라이브러리에서 증폭 편향을 줄이고 시퀀스 풍부도의 균일성을 유지하기 위해 7주기 이하로 제한된다. 프라이머 조합은 증폭 과정의 효율성과 균일성을 입증하기 위해 식별자로 검증될 수 있다. 아래에 설명된 대로, 이 액세스 방법은 데이터 구조와 함께 사용되어, 연결된 블록 ID로 데이터 블록을 불러올 수 있다. 중첩된 PCR에 대한 대안으로, 특정 구성 요소를 고유하게 바인딩하는 친화성 태그가 지정된 프로브를 중첩 방식으로 사용하여, 판독을 위해 식별자의 특정 서브라이브러리(예: 데이터 블록을 나타냄)에 액세스할 수 있다.
1304에서 식별자 핵산 분자를 판독하는 것은, 나노포어 시퀀싱을 통해 달성될 수 있다. Nanopore 시퀀싱은 크기와 확장성으로 인해 이점을 제공한다. 나노포어 시퀀싱은 전해액과 나노포어에 전기장을 가하는 것과 관련이 있다. 인가된 전압에서 핵산 분자는 나노포어를 통과하여 전해액의 흐름을 방해하고 측정 가능한 임피던스를 유발한다. 각각의 뉴클레오티드는 고유한 임피던스 값과 연관될 수 있으므로, 핵산 분자에 해당하는 전체 서열은 임피던스 데이터세트를 처리하여 얻을 수 있다. 나노포어는 고체 기판의 채널 또는 단백질에 의해 형성될 수 있다. 단백질은 지질막 또는 금속, 금속 합금 및 고분자 기반 기판과 같은 고체 기판에 내장될 수 있으며, 일반적인 나노포어 단백질에는 αHL(alpha-hemolysin) 및 MspA(mycobacterium smegmatis porin A)가 포함된다. 참고로 Oxford Nanopore의 PromethION 시스템은 크기가 약 1.5제곱피트이며 48시간 내에 12Tb(12.0E+12염기쌍)를 시퀀싱할 수 있다. 여기에 설명된 작성 체계는 충실도가 높은 것으로 확인된 미리 만들어진 DNA 구성 요소를 사용하기 때문에 모든 시퀀스 오류는 샘플 준비 및 시퀀싱 중에만 도입될 가능성이 있다는 점에 유의해야 한다. 또한, 식별자에 있는 구성 요소를 식별하는 데 단일 기본 해상도가 필요하지 않을 수 있다. 이러한 이유로 샘플 준비 프로토콜을 조정하고 압축 기술을 구현하여 시퀀싱 속도를 개선할 수 있다(적어도 아직 압축되지 않은 디지털 정보의 경우).
옥스포드 나노포어 시퀀싱을 위한 표준 주형 준비 체계는 핵산 분자에 대한 어댑터 단백질 복합체의 결찰을 포함한다. 일부 어댑터 단백질은 소수성 밧줄로 작용하여, 핵산 분자가 지질 이중레이어를 표적으로 삼아 나노포어가 비어 있는 시간을 줄인다. α-hemolysin과 같은 또 다른 단백질 또는 모터는 이중 가닥 핵산 분자를 분리하여 단일 가닥이 나노포어에 들어가도록 한다. 그런 다음 이 모터는 나노포어를 통해 단일 가닥 핵산 분자를 래칫(ratchets)하는 데 도움이 된다. 이 프로토콜은 여기에 설명된 식별자 라이브러리 및 앰플리콘 농축 계획과 완전히 호환된다.
시퀀싱 효율을 증가시키기 위해, 증폭된 서브라이브러리에서 식별자를 물리적으로 연결하여 나노포어 시퀀싱을 최적화하는 것이 유리할 수 있다. 나노포어 시퀀싱은 판독 속도에 기여하는 나노포어를 찾기 위해 표적 핵산 분자를 필요로 할 수 있다. 판독 시간을 늘리기 위해 식별자는 결찰에 의해 더 긴 분자로 물리적으로 연결될 수 있다. 시퀀싱된 분자의 길이를 500bp 미만에서 5,000bp(또는 그 이상)로 늘림으로써 기공 점유율을 최대화할 수 있다.
핵산 분자가 나노포어를 통해 이동(전좌)하는 속도가 증가될 수 있다. 현재의 나노포어 시퀀싱 기기는 초당 500 염기쌍의 속도로 나노포어를 통해 핵산 분자를 전좌시킨다. 나노포어 멤브레인을 가로지르는 차동 멤브레인 전좌(예: 100mV 이상)를 설정하면 핵산 분자가 더 높은 속도(예: 초당 ~1,000,000 염기)로 전좌된다. 대부분의 시퀀싱 응용 분야에서 수십만 정도의 속도는 너무 빠르며, 단백질 "모터"를 사용하여 하나의 뚜렷한 염기를 검출하기 위해 기공을 통해 핵산 분자를 래칫할 수 있다. 따라서 "모터" 없이 나노포어 시퀀싱을 실행하려면 단일 가닥 핵산 분자 입력 및 핵산 분자 신호의 증폭을 생성해야 할 수 있다. 반응으로부터 50% 이상의 단일 가닥 핵산 분자를 달성하는 비대칭 PCR을 위한 여러 방법이 존재한다. 프라이머 용융 온도를 조정함으로써 증폭 프라이머는 반응을 한 가닥의 선형 증폭으로 유도하도록 설계할 수 있다. 대안적으로, Lambda 엑소뉴클레아제와 같은 가닥 특이적 엑소뉴클레아제는 5' 인산화된 핵산 분자 가닥에 특이적으로 결합하고 듀플렉스의 한 가닥을 선택적으로 분해하는 데 사용될 수 있다. 프로토콜은 단일 가닥 분자의 90% 이상의 생산을 제공할 수 있다.
신호 증폭과 관련하여, 핵산 분자는 본질적으로 "슈퍼 시그니처(super signature)"를 생성하도록, 신호 대 잡음비를 향상시키는 작용제로 변형될 수 있다. 예를 들어, 작용제는 소분자, 화학 그룹, 염기 유사체, 효소, 단백질, 단백질 복합체, 펩티드 또는 아미노산일 수 있다. 나노포어 신호 향상을 위한 한 가지 방법인 mTAG(활성 그룹의 메틸트랜스퍼라제 지시 전달)는 메틸트랜스퍼라제를 사용하여 비오티닐화된 S-아데노실-L-메티오닌 보조 인자 유사체와 같은 화학 그룹을 시퀀스 모티프의 아데닌 염기의 N6 원자에 추가한다. 작용제가 염기 유사체인 경우, 작용제가 PCR을 통해 식별자 분자에 추가되며, 염기 유사체는 반응 혼합물에 포함되고 복제 중에 식별자 분자의 단일 가닥에 결합된 상보적 가닥에 통합된다. 그런 다음 염기 유사체를 포함하는 식별자 분자의 새로운 혼성체를 시퀀싱할 수 있으며 염기 유사체는 시퀀싱 판독에서 신호 대 잡음비를 개선할 수 있다.
도 31a-b는 신호 이벤트가 있는 DNA 식별자를 보여준다. 특히, 도 31a-b는 시퀀싱 이벤트와 연관된 신호 대 잡음비(SNR)를 증가시키는 신호 증가를 초래하도록 전도도를 감소시키는 작용제로 DNA를 변형시키는 방법을 보여준다. 도 31a에 나타낸 바와 같이, 변형되지 않은 DNA 식별자와 비교할 때, 도 31b에 도시된 바와 같은 더 큰 화학 구조를 갖는 DNA 식별자는 전도도 향상 시퀀스 신호를 감소시킨다. 그래프(1502, 1512)는 각각 시퀀싱 식별자(1500 및 1510)로부터의 신호(예를 들어, 고체 기공으로부터의 대표적인 신호 이벤트)를 보여준다. 단일 및 다중 변형 염기를 사용하여 수정 유형, 수정 수 및 수정 사이의 간격으로 정의된 복잡한 신호 시그너처를 생성할 수 있다. 도시된 바와 같이, 수정된 식별자 읽기의 신호를 보여주는 그래프(1512)는 수정되지 않은 식별자 읽기의 신호를 보여주는 그래프(1502)보다 더 높은 SNR을 보여준다.
일부 실시예에서, 나노포어를 통해 핵산 분자를 전좌시키기 위해 단백질 모터가 사용될 수 있다. 단백질 모터로 전좌 속도를 증가시키기 위해 단백질을 선택할 수 있다. 예를 들어, 전좌는 초당 1,000; 10,000; 100,000; 또는 1,000,000 염기 정도일 수 있다.. 현재 모터 단백질은 증가된 속도에서 더 잘 수행되도록 최적화될 수 있다. 예를 들어, 모터 속도에 대해 발표된 헬리카제 변형에는 다중 변형 구조 합성(상업 DNA 합성 공급업체 사용)이 포함된다.
코어 디코딩 노력은 신호 디코딩 및 에러 복구를 포함한다. 예를 들어, 아카이브가 10개의 풀로 기록되고 각 풀이 각각 5개의 구성 요소 시퀀스로 구성된 17개의 세트와, 28개의 구성 요소 시퀀스로 구성된 1개의 세트로 분할된 113개의 구성 요소 시퀀스로 구성된 구성 요소 라이브러리로 기록되었다고 가정한다. 각 25비트 소스 워드는 가중치 14 식별자 시퀀스의 28비트 코드워드에 매핑된다. 이러한 조합 공간의 범위는 풀당 21.4 x 1012 식별자이며 데이터 인코딩 라이브러리의 크기는 대략 5.82 x 1012 식별자이고 4.16 x 1011 반응이 있다. 각 식별자의 균일한 농축을 가정하고 불완전한 샘플링 확률을 10-6으로 설정하면 샘플 크기 44 x 식별자 풀 크기 5.82 x 1012 의 샘플이 필요하다. 따라서 단일 풀을 시퀀싱하면 256 x 1012 읽기가 발생한다. 각 구성 요소의 길이가 30염기라고 가정하면 각 읽기 길이는 540염기이므로 약 34.6PB(페타바이트) 길이의 시퀀스 스트림이 생성된다. 대신, 코드워드 가중치가 4로 감소하여 각 14비트 소스 워드가 가중치 4의 28비트 코드워드에 매핑되면, 스팬과 필요할 수 있는 구성 요소의 수는 변경되지 않지만 반응 수는 2.97 x 1012로 증가한다. 각 식별자는 이전 체계에서 1.79비트 대신 3.5비트를 인코딩하고, 총 읽기는 128 x 1012로 절반으로 줄어들어 길이 17.2PB의 스트림이 된다. 34.6PB 추정치를 사용하면 약 34.6 x 1015 바이트의 스트림을 24시간 동안 처리할 수 있으며 여기에는 3.2 x 1012b/s의 처리량이 필요할 수 있다. 고성능 Xeon CPU에 연결된 12GB 메모리가 있는 Nvidia GeForce GTX Titan X GPU와 같은 그래픽 처리 장치(GPU)는 텍스트 및 패턴 길이와, 허용된 편집 거리에 따라 0.35 x 1012 ~ 1 x 1012 b/s 사이의 대략적인 스트링 매칭 달성을 위해 사용될 수 있다. Nvidia Tesla V100의 인스턴스 10개와, 클라우드 공급자가 제공하는 GeForce Titan X에 필적하는 GPU를 사용하면 더 높은 신호 디코딩 처리량을 달성할 수 있다.
10-4 코드워드의 쓰기 오류율과 위에서 설명한 인코딩 체계를 가정하면, 매 250000비트 또는 매 122,255바이트 슬라이스마다 대략 25개의 오류 비트가 나타날 것으로 예상된다. 독립적인 균등 무작위 오류를 가정하면 4개의 255바이트 슬라이스마다 비트 오류가 발생할 것으로 예상된다. 따라서 가정된 오류율에서 디코딩된 모든 슬라이스의 최소 75%는 오류가 없다. 오류가 있는 슬라이스를 디코딩하는 데 인코딩보다 3배의 시간이 걸리고 오류가 없는 슬라이스를 디코딩하는 데 인코딩 시간의 1/3이 걸린다면 총 디코딩 시간은 인코딩 시간과 거의 같다.
신호 디코딩 GPU 설정은 클라우드 기반일 수 있다. 이로부터, 그리고 대역폭과 저장 비용을 이중으로 계산하지 않고 위에서 가정한 디코딩을 위한 컴퓨팅 비용만 포함하면, 데이터 읽기 비용이 비트 단위 시퀀싱 프로세스에 필요한 비용보다 훨씬 적을 수 있다. 모든 데이터 저장 및 컴퓨팅이 클라우드가 아닌 로컬에서 발생하는 경우 이 비용을 더 줄일 수 있다.
도 32는 아카이브 작업의 시스템도를 보여준다. 아카이브(CAR)는 부트, 온톨로지, 인덱스 및 콘텐츠 영역으로 분할된다. 부팅 파티션은 외부 메타데이터 없이 디코딩할 수 있는 표준 인코딩 체계를 사용하여 작성될 수 있으며 다른 파티션을 읽는 데 필요한 파라미터, 키 및 주소를 저장할 수 있다. OS는 위에서 설명한 것처럼 저장 매체를 고정 크기 블록의 모음으로 추상화한다. 각 블록은 단일 식별자 라이브러리에 있는 식별자 시퀀스들의 연속 시퀀스이며 단일 식별자 풀로 저장된다(그러나 블록이 내결함성을 위해 여러 풀에서 미러링될 수 있다). OS는 블록 구성, 할당 및 쓰기를 담당할 수 있다. 블록 레이어가 소스 비트 스트림 패킷을 수신하면 블록 인덱스는 패킷을 분할하여 아카이브의 블록에 할당한다. 부트 파티션은 블록 ID를 물리적 주소(컨테이너와 식별자로 구성됨)에 매핑하는 계층구조형 데이터 구조인 블록 인덱스를 포함한다. 블록 인덱스는 사용 가능한/사용된 블록을 추적하고 새 패킷에 블록을 할당한다. 각 블록 ID는 논리적 주소일 수 있으며 분자 아카이브의 물리적 주소로 변환될 수 있다. 이는 도 32에 예시된 블록 인덱스를 순회함으로써 달성된다. 주소 노드라고 불리는 데이터 구조의 각 노드는 B-Tree 데이터 구조와 유사한 일련의 차일드 블록 ID 범위를 포함한다(예를 들어, 도 34와 관련하여 아래에 설명됨). 각 범위는 관심 있는 블록에 대한 경로의 다음 블록을 가리킨다. 이러한 방식으로, 주소 노드의 트리는 실제 데이터를 포함하는 분자 아카이브의 블록을 가리키는 리프 노드에서 절정에 이르게 유지된다. 이렇게 도달한 리프 노드는 블록의 물리적 주소를 식별하는 블록 ID를 보유하고, 블록의 해시도 보유할 수 있다. 내부 노드는 차일드 노드의 해시 연결을 포함하여 해시 트리를 형성할 수도 있다. 블록의 물리적 주소는 위치 코드, 컨테이너 코드 및 여러 식별자를 설명하는 시작 및 끝 식별자로 정의된 식별자 범위로 구성된다. 블록 ID는 내결함성을 활성화하기 위해 하나보다 많은 물리적 주소로 확인될 수 있다. 예를 들어 두 개 이상의 서로 다른 컨테이너 또는 둘 이상의 서로 다른 식별자 범위에 분산될 수 있다.
분자 수준에서, 검색 질의는 2가지 작업의 조합을 사용하여 응답된다: 식별자 서브라이브러리 선택 작업(예를 들어, 위에서 설명한 중첩 PCR 또는 중첩 친화성 태그 액세스 방법 사용) 및 식별자 판독 작업(예를 들어 위에서 설명한 임피던스 기반 방법 또는 합성에 의한 시퀀싱용). 각 작업에는 양의 비용이 있으며 몇 분에서 몇 시간으로 측정되는 양의 시간이 걸린다. 선택 작업에는 구성 요소의 주어진 고정 프리픽스(prefix)를 사용하여 식별자를 재귀적으로 선택하는 여러 순차 PCR이 포함될 수 있다. 길이 lc 염기의 각 구성 요소 시퀀스를 가진 L개의 레이어가 있는 LCPCC의 경우 식별자 라이브러리에서 p 순차 PCR(SPCR)을 수행하면 식별자 라이브러리 다양성이 θp 레이어만큼 감소할 것이며, 여기서 θ는 단일 PCR이 적용되는 레이어 수이다. 따라서 비다중 레이어에서 p개의 SPCR 후 존재하는 식별자는 L - θp 레이어에서 다양하다. 이러한 각각의 식별자는 (L - θp)lc 다양한 염기에 해당한다. 시퀀싱 기술이 최대 길이 6의 분자를 판독할 수 있는 경우 p개의 SPCR 후 식별자를 시퀀싱하는 데 필요한 SPCR의 수 p는 다음과 같은 방식으로 제한된다:
Figure pct00006
. p가 주어진 제약 조건을 만족하는 p개의 SPCR 후, 범위 D 가능 식별자들의 식별자 라이브러리는 D' 식별자를 포함하는 식별자 라이브러리로 잘리며, 여기서
Figure pct00007
이고, cb는 파티션 방식의 임의의 염기 레이어에서 구성 요소의 수이다. L = 15 레이어 및 cb = 6, lc = 30 베이스, σ=300 및 θ = 4인 인코딩 체계를 가정하면, p = 2가 된다. 이 경우, 잘린 식별자 라이브러리 크기
Figure pct00008
식별자이다. 예를 들어, 각 식별자의 완벽하게 균일한 농축의 간단한 모델을 가정하면 모든 식별자를 높은 확률로 샘플링하는 데 필요할 수 있는 샘플 크기는 Coupon Collector 모델을 사용하여 계산할 수 있으며 S≥βD'ln D' 으로 나타나며, 여기서
Figure pct00009
이고 α는 불완전한 샘플의 확률이다. α = 10-6을 설정하면 β = 2가 되고 대략 S≥28×106이 되며, 선택한 서브라이브러리 크기의 28배의 샘플 크기라면 충분할 수 있음을 보여준다. 균일한 농축 가정은 이상적이고 적용 범위가 다소 커야 할 수도 있다(불균일한 쿠폰 수집 분포가 평균 주위에 집중되는 것으로 알려져 있기 때문에 그렇게 특별하지는 않다). 이를 통해 a의 10배에서 100배 더 높은 값의 허용 오차가 허용된다.
필요한 블록 동작의 수는 다음 단계를 통해 계산될 수 있다. 예를 들어, 대략 1엑사바이트인 1019비트 아카이브에서 106비트 크기의 데이터 블록을 고려해보자. 아카이브는 각각 1012비트를 포함하는 107개의 구분된 식별자 라이브러리로 분할된 1013개의 데이터 블록으로 구성된다. 각 식별자 라이브러리에는 106개의 데이터 블록이 포함되어 있다. 각 블록이 순서가 지정된 식별자들의 연속 범위로 표시되는 경우 각 블록은 제1 식별자와 마지막 식별자의 구성 요소 시퀀스로 완전히 정의될 수 있다. C개의 구성 요소들의 구성 요소 라이브러리를 사용하는 L-레이어 체계의 경우 식별자 범위를 포함하는 물리적 블록 주소는 2L[log2C] 비트를 사용하여 인코딩될 수 있다. 따라서 C = 112 및 L = 15이면 식별자 범위는 27바이트로 인코딩될 수 있다. 비슷한 이유로 물리적 컨테이너 주소를 인코딩하려면 최소 3바이트가 필요할 수 있다. 식별자 범위와 물리적 컨테이너 주소를 포함하는 물리적 블록 주소를 인코딩하기 위해 총 64바이트가 할당될 수 있다. 해시를 저장하기 위해 128바이트를 할당할 수 있다. 마찬가지로 소스 비트 스트림의 임의의 블록에 대한 소스 블록 ID에는 64바이트가 필요할 수 있다. 최대 512개의 차일드 노드를 지원할 수 있는 주소 노드에는 511개의 블록 ID 범위 마커와 512개의 포인터가 필요할 수 있으며, 각각은 차일드 블록의 물리적 아카이브 주소(예: 컨테이너 주소 및 식별자 범위)이다. 따라서 주소 노드는 511×64+512×64+128바이트 또는 524,800비트를 필요로 할 수 있다. 오류 수정 바이트를 포함하여 이러한 주소 노드는 106비트 아카이브 블록에서 인코딩할 수 있다. 따라서 106비트 아카이브 블록을 선택하고 읽을 수 있다.
이러한 방식을 사용하면 엑사바이트 규모의 아카이브를 위한 계층구조적 블록 주소 지정 구조는 깊이가 5개 이하일 필요가 있다. 블록의 "콜드" 캐시(즉, 질의된 블록이 없음)에서 시작하여, 블록 ID를 사용한 단일 블록 액세스에는 최대 6개의 선택-판독 작업이 필요할 수 있다. 5개의 선택 -판독 쌍은 (B-트리를 가로지르면서) 관심 대상인 블록의 물리적 주소를 찾고, 하나의 선택-판독 쌍은 데이터 블록을 판독한다. OS는 블록 및 블록 인덱스의 이러한 토대를 이용하여 인덱싱 가능한 아카이브를 구축할 수 있다. 저장의 기본 단위는 블록이며 블록은 블록 인덱스를 사용하여 물리적 주소에 매핑된 블록 ID를 사용하여 다른 블록을 참조한다.
비트 블록에 대한 각각의 높은 수준의 동작은 조정될 화학적 방법 또는 물리적 단계에 의존하는 다수의 물리적 동작에 의존하고 결과를 낳는다. 여기에는 두 가지 유형의 소프트웨어 도구가 포함될 수 있다: 블록 작업을 최적화된 물리적 작업 세트로 변환하는 최적화 도구와, 물리적 작업을 기술자 또는 자동화 장치에 의해 실행될 세부 작업 프로그램으로 변환하는 변환 도구이며, 물리적 및 화학적 작업과 비트 블록에 대한 작업 간에 변환기의 설계 및 구현을 포함할 수 있다.
OS는 또한 병목 현상 리소스(예를 들어 액체 취급 로봇 및 기술자 시간)를 할당하고 쓰기 작업의 메이크 스팬을 최소화하기 위해 다른 쓰기 작업을 스케줄링할 수 있다. 읽기 요청은 패턴 질의(아래 설명됨)에서 발생할 수 있으며 블록 ID로 지정된 블록 범위 읽기를 포함할 수 있다. CAR 인덱스가 B-Tree로 구성되기 때문에(예를 들어, 도 34와 관련하여 아래에 설명된 바와 같이), 각각의 패턴 질의는 인접 블록의 범위에서 인접 워드 범위의 액세스로 변환될 가능성이 높다.
전형적으로, 패턴 질의는 결합(conjunctions) 및 분리(disjunctions)를 수반하고, 판독 풋프린트를 최소화하기 위해 최적화된 조인 연산 시퀀스로 변환된다. 본 명세서에 기술된 시스템 및 방법에서 사용되는 질의 최적화기는 CAR에서 액세스 비용 모델을 충실하게 반영하도록 수정 및 보강될 수 있다. 조인 최적화 후, 결합 및 분리를 포함하는 복잡한 패턴 질의로 인해 블록 세트를 판독해야 한다. OS는 블록 ID를 물리적 주소(컨테이너 및 식별자)로 변환하기 위해 블록 인덱스를 읽는 화학적 단계와, 표적 블록을 읽는 단계를 생성할 수 있다. 표적 블록 세트를 읽으려면 질의 최적화기에서 식별한 순차 PCR 세트를 실행하는 데 필요한 프라이머 세트를 식별해야 한다. OS는 SPCR 및 기타 화학적 방법의 인스턴스를 생성하고, 물리적 샘플 주소와 부피 및 농도같은 방법 파라미터 값으로 완성하여 모든 필수 실험실 도구, 기기 및 기술자를 할당할 수 있다. 전체 프레임워크는 시간 예약, 리소스 할당, 실행 프로그램 컴파일 및 생성의 세 가지 작업을 담당할 수 있다. OS는 jBPM 및 Camunda와 같은 비즈니스 프로세스 모델링 및 자동화 공간으로부터 그리고 Simple Workflow Service 및 Logic Apps와 같은 클라우드 워크플로 도구로부터 현존하는 프레임워크를 프레임워크에 맞게 조정할 수 있다.
OS는 적어도 4개의 자동화 장치, 즉 기록 시스템, 판독 시스템, 액체 취급 로봇, 샘플 및 컨테이너 관리 시스템과 상호 작용할 수 있다. OS는 이러한 장치에서 자동화할 수 있는 물리적 및 화학적 변환기에 의한 워크플로 출력 단계를 장치별 지침으로 변환할 수 있다. 기록 시스템은 배치할 구성 요소 세트에 대해 프로그래밍할 수 있으며 반응 사양 형식의 설계 및 생성이 필요할 수 있다. 도 19는 예시적인 포맷을 예시하고, 비트 스트림을 인코딩하고 반응 사양으로 직렬화하기 위해 조합 공간이 어떻게 사용될 수 있는지를 보여준다. 이 예에서 고정 가중치 3비트의 5비트 코드워드는 소스 워드를 인코딩한다. 코드워드는 코드워드의 비트에 해당하는 4개의 기본 레이어와 5개의 구성 요소를 포함하는 멀티플렉스 레이어의 조합 공간으로 변환된다. 각 코드워드는 단일 반응으로 조립되며 각 반응에는 4개의 기본 구성 요소와 3/5개의 다중 레이어 구성 요소 또는 총 7개의 구성 요소가 포함될 수 있다. 레이어화된 제품 생성자의 조합 공간은 트라이로 시각화할 수 있으며 이 트라이에서 루트로부터 리프까지의 각 경로는 식별자이다. 각 반응에서 조립할 식별자 세트는 하단에 표시된 대로 사후 순서로 트라이를 순회하여 직렬화할 수 있다. 이 반응 세트 사양은 각 쓰기 작업에 대해 OS에 의해 생성되고, 작업 및 블록 설명자 형태의 추가 설명 정보와 함께 패키징된다(도 33 참조).
도 33은 특정 예시적인 실시예에 따른 프린터-피니셔 시스템을 사용한 기록 작업 흐름을 도시한다. 인쇄 작업 지침은 프린트 헤드 컨트롤러 명령 프레임으로 분할되어 개별 프린트 헤드로 전송되며, 각각 최대 4개의 잉크를 인쇄할 수 있으며 각 잉크에는 단일 구성 요소가 포함되어 있다. 기록 시스템에는 노즐 테스트(chirp) 신호를 이미징하는 카메라가 장착되어 있다. OS는 이 이미지 데이터를 오프라인으로 처리하고, 쓰기 오류율을 추정하며, 오류 보호 체계로 오류율을 관리할 수 있을 때까지 잠재적으로 누락된 식별자에 대한 재작성 요청을 생성한다. OS는 또한 컨테이너 관리 시스템으로 하여금 컨테이너를 제출 및 체크아웃하고 컨테이너 바코드 라벨을 생성하도록 지시하는 지침을 생성한다. 엑사바이트 규모 아카이브의 경우, Hamilton Verso 또는 Brooks SampleStore II와 같은 컨테이너 뱅크에서 최대 106개의 식별자 라이브러리를 관리할 수 있다. 이러한 컨테이너 뱅크는 제3자 실험실 정보 관리 시스템(LIMS)과도 통합된다. 예를 들어 Verso API는 LabVantage 8 LIMS 및 Mosaic에서 지원된다. Verso와 Mosaic는 둘 다 OS와의 통합을 위해 RESTful API를 통해 프로그래밍 방식 제어를 지원한다. OS는 또한 시퀀싱 및 SPCR을 위한 샘플 준비를 용이하게 하기 위해 액체 처리기에 대한 "선택 목록" 전송 명령을 생성할 수 있다.
본 명세서에 기술된 시스템 및 방법은 아카이브의 많은 부분을 디코딩할 필요 없이 점진적으로 아카이브의 보존, 발견 및 질의를 제공한다. 아카이브에서 조인 및 기타 구조를 계산할 필요성을 최소화하면서 표적 콘텐츠를 선택적으로 그리고 점진적으로 발견, 질의 및 판독할 수 있어야 한다. 최소화해야 할 주요 메트릭은 일련의 질의를 만족시키기 위해 디코딩된 총 비트 수이다.
도 34는 기록 시스템에 대한 데이터 경로의 예를 도시한다. 데이터 블록의 시맨틱 주석이 제공될 수 있고, 블록 ID를 포함할 수 있으며, 관련 정보가 이들을 연결하고, 간결한 인덱스가 액세스를 위한 블록에 항목을 매핑한다. RDF(Resource Description Framework)는 액세스 비용을 최소화하고 해석 수명을 최대화하면서 인덱싱 및 검색 가능성을 해결하기 위해 검색 레이어를 구현하는 프레임워크일 수 있다. RDF는 엔터티 그래프를 인코딩하는 일련의 SPO(주체-술어-객체) 트리플로 리소스에 대한 정보를 나타내기 위해 World Wide Web 컨소시엄에서 표준화한 공식 메타 언어이다. RDF의 주요 장점은 데이터 블록과 데이터 세트를 상호 연결하는 기능, 도메인별 어휘의 통합, 번역, 인덱싱, 압축 및 마이닝을 위한 도구를 포함하여 활용할 수 있다.
아카이브는 부트업, 온톨로지, 인덱스 및 콘텐츠의 4개 파티션으로 나눌 수 있다. 온톨로지 파티션에는 항목 및 클래스의 어휘와, 아카이브에서 발견된 모든 엔터티의 라벨 목록이 포함된다. 따라서 아카이브 콘텐츠의 분류 체계를 제공하고 디코딩 공간을 최소화하면서 표적 검색을 용이하게 하기 위한 것이다. 온톨로지는 생산자에 의해 제공되거나 도메인별 소프트웨어를 사용하여 수집 중에 구성될 수 있다. 인덱스 파티션은 트리플 스토어로 구성할 수 있다. 예를 들어 패턴 질의를 신속하게 제공하기 위해 사전순으로 정렬된 트리플의 여러 컬렉션(일반적으로 6~18개)을 저장할 수 있다. RDF 질의는 예로서 "선택(select) x1, x2, ... xk, 여기서 {p1 및 p2 및 ... pn}" 형식을 취한다. 여기서 xi는 관심 있는 데이터 속성이고 pi는 주제-술어-객체 패턴이다. 여기서 각각은 변수 또는 리터럴 값이다. 예를 들어, “select name where {author <hasName> name and book <writtenBy> author and movie <basedOn> book and movie <directedBy> dir and dir <hasName> “Kubrick”}”은 "큐브릭" 감독의 영화로 제작된 책의 저자들 모두의 이름을 반환한다. 패턴의 각 요소는 리터럴 또는 변수일 수 있으므로 질의에서 패턴을 만족하는 트리플을 검색하려면 SPO의 6가지 순열 중 어느 하나가 필요할 수 있다. 만족하는 트리플의 수와 함께 모든 단항 및 이진 관계(예: SO, SP, OS 등)를 저장하는 추가 인덱스도 유지 관리될 수 있다. 이들 인덱스는 B-트리 또는 트라이(도 34와 관련하여 아래에 설명된 바와 같이)로 저장되며, 여기서 패턴의 리터럴은 B-트리 또는 트라이를 통해 키 역할을 하고 만족스러운 트리플은 리프 노드에 의해 가리키는 블록에 저장된다. RDF 헤더 사전 트리플 프레임워크는 이 색인 구성 및 직렬화 체계를 구현하는 데 사용될 수 있다. RDF 리터럴은 스트링 URI일 수 있지만 이러한 인덱스에 저장될 때 정수 ID에 매핑된다. 인접한 트리플은 프리픽스 리터럴을 공유할 수 있기 때문에, 압축된 형식의 델타로 저장될 수 있으며 식별자 범위로 직접 변환될 수 있다.
이러한 네이티브 시맨틱 데이터 저장의 장점은 전체 인덱스를 읽고 디코딩하지 않고도 이제 질의가 충족될 수 있다는 것이다. 분석가가 시작하는 아카이브 검색은 부트업 및 온톨로지 파티션의 디코딩으로 이어진다. 이들은 분석가에게 전파되며, 이로부터 분석가가 초기 질의를 구성할 수 있다. 여기에 설명된 소프트웨어와 결합된 RDF 질의 엔진(예: Redland Rasqal)은 이 패턴 질의를 B-Tree 인덱스 및 CAR 블록을 통해 최적화된 스캔 세트로 변환할 수 있다. 결과는 만족스러운 트리플 세트 및/또는 추정된 트리플 카운트 세트일 수 있다. 이러한 결과를 기반으로 분석가는 이미지, 비디오 또는 과학 데이터 세트를 포함하는 긴 형식의 표적 콘텐츠를 디코딩할 수 있는 추가 질의를 제출할 수 있다. 인덱싱은 기본적으로 Applicant 스토리지와 통합되기 때문에, 디코딩된 풋프린트는 질의 최적화기에 의해 최소화될 수 있다.
인덱스에 포함된 각 엔터티는 URI(Uniform Resource Identifier)로 확장되는 정수 ID로 참조된다. 그러나 URI가 참조하는 엔터티는, 선택적으로 추가 압축 인덱스를 가질 수 있는, 콘텐츠 파티션에 저장된다. 압축 인덱스(예: 웨이블릿 트리)는 작은 공간 오버헤드로 다중 해상도 액세스, 다중 체계 쓰기 및 빠른 검색을 가능하게 한다.
도 34는 블록 식별(ID)과 연관된 데이터 블록을 컨테이너에 저장하기 위한 단계를 설명하는 흐름도(1800)를 도시한다. 단계 1802에서, 복수의 블록이 획득된다. 각 블록은 일련의 심볼로 구성되며 블록 ID와 연결된다. 블록 ID는 특정 블록과 관련된 식별 특성 또는 심볼일 수 있다. 예를 들어, 트리플 형태의 시맨틱 주석일 수 있다. 일부 실시예에서 블록 ID는 정수, 스트링, 트리플, 속성 목록 또는 시맨틱 주석이다. 예를 들어, 블록에 포함된 일련의 심볼 중 처음 X개의 심볼은 해당 블록에 대한 숫자 ID를 나타낼 수 있다.
단계 1804에서, 블록(단계 1802에서 수신된 복수의 블록에 속하는 블록 중 하나)이 컨테이너에 할당된다. 컨테이너는 핵산 분자가 저장될 수 있는 빈, 튜브 또는 기타 물리적 저장 매체와 같은 물리적 위치일 수 있다. 컨테이너는 단일 블록 또는 여러 블록에 연결될 수 있다. 예를 들어, 하나의 컨테이너는 정보의 B개의 블록들과 연관될 수 있다. 일부 실시예에서 컨테이너는 다수의 하위 컨테이너를 포함할 수 있다.
단계(1806)에서, 블록은 컨테이너와 연관될 식별자 시퀀스에 매핑된다. 이들 식별자는 식별자 범위 또는 식별자 범위의 다수의 상이한 식별자를 포함할 수 있다. 식별자 범위는 범위 측면에 있는 식별자를 포함하는 구성 요소 시퀀스에 의해 지정될 수 있다. 일부 실시예에서, 각각의 개별 식별자는 식별자 범위가 두 개의 정수로 지정될 수 있도록 별개의 정수와 연관된다. 복수의 식별자 시퀀스의 개별 식별자 시퀀스는 블록에 저장된 심볼 스트링의 개별 심볼에 대응한다. 각각의 식별자 시퀀스는 대응하는 복수의 구성요소 시퀀스를 포함한다. 이들 구성요소 서열 각각은 별개의 핵산 서열을 포함한다.
단계(1808)에서, 복수의 식별자 시퀀스의 개별 식별자가 구성된다. 예를 들어, Q 식별자 시퀀스 세트는 특정 컨테이너와 연관될 수 있다. 이러한 Q 식별자 시퀀스의 서브세트 V는 위에서 설명한 다양한 방법에서 설명한 것처럼 블록의 정보를 나타내도록 물리적으로 구성될 수 있다.
단계 1810에서, 단계 1808에서 구성된 식별자는 할당된 컨테이너에 저장된다. 예를 들어, 할당된 컨테이너는 블록에 저장된 정보를 나타내는 V개의 식별자를 보유할 수 있다. 컨테이너의 신원 및 그와 관련된 복수의 식별자 핵산 서열은 관련 블록 ID를 사용하여 결정되도록 구성된다. 일부 실시예에서, 신원은 연관된 블록 ID를 사용하여 각 컨테이너의 신원에 대한 액세스를 용이하게 하도록 설계된 데이터 구조에 저장된다. 예를 들어, 데이터 구조는 B-tree, 트라이 또는 어레이 중 하나일 수 있다. 일부 실시예에서, 데이터 구조의 적어도 일부는 인덱스에 디지털 정보와 함께 저장된다. 인덱스는 제2 컨테이너와 연관된 제2 복수의 식별자 시퀀스를 포함할 수 있다. 일부 실시예에서 인덱스는 자기 저장 장치, 광학 저장 장치, 플래시 메모리 장치 또는 클라우드 저장소에 저장된다.
인덱스가 B-트리 데이터 구조를 포함하는 경우, B-트리의 각 노드는 제2 복수의 식별자 시퀀스의 별개의 복수의 식별자(즉, 단계 1808에서 구성되는 식별자 세트와 상이함)를 포함할 수 있다. 일부 실시예에서, 별개의 복수의 식별자의 신원을 결정하기 위해, B-트리가 검색될 수 있다. B-트리에서 특정 블록 ID를 검색하는 것은 제1 노드를 포함하는 별개의 복수의 식별자를 선택하는 것과 제1 노드의 값을 읽는 것을 포함할 수 있다. 식별자를 선택하고 노드의 값을 읽는 단계는 후속 노드에서 반복될 수 있다. 후속 노드를 포함하는 별개의 복수의 식별자의 신원은 제1 노드의 값과 관련하여 blockID에 의해 결정된다. 예를 들어, 제1 노드는 B-트리의 루트 노드이며 B-트리의 리프 노드 값을 읽을 때까지 노드를 선택하고(위에서 설명한 랜덤 액세스 방식으로) 읽는 과정이 계속된다. 리프 노드의 값은 블록 ID에 대한 블록이 존재하는지 여부를 통신하도록 구성된다. 블록 ID가 존재하는 경우, 컨테이너의 신원 및 상기 블록을 포함하는 복수의 식별자 핵산 서열의 신원(예를 들어, 식별자 범위)이 사용자 또는 시스템에 전달될 수 있다.
인덱스가 트라이 데이터 구조를 포함하는 경우, 트라이의 각 노드는 제2 복수의 식별자 시퀀스의 별개의 복수의 식별자를 포함할 수 있다. 일부 실시예에서 블록 ID는 심볼 스트링이고 트라이 내 각 노드는 심볼 스트링의 가능한 프리픽스에 해당한다. 블록 ID에 대한 트라이를 통한 경로가 존재하는 경우, 해당 블록의 물리적 주소(컨테이너 및 식별자 범위로 구성)는 해당 경로의 리프 노드에 의해 지정할 수 있다. 트라이의 각 중간 노드는 별도의 복수의 식별자로 표시될 수 있으며 얼마나 많은 도터 노드(daughter nodes)가 있는지, 이러한 도터노드가 나타내는 심볼, 및 해당 도터 노드의 물리적 주소(컨테이너 신원 및 식별자 범위로 구성됨)에 대한 정보를 포함할 수 있다. 그런 식으로 트라이는 위에서 설명한 선택-읽기 작업을 사용하여 B-트리와 유사하게 DNA에서 탐색할 수 있다.
데이터 구조가 어레이인 경우, 어레이의 각 요소는 제2 복수의 식별자 시퀀스의 별개의 복수의 식별자를 포함한다. 일부 실시예에서 배열의 각 요소는 블록 ID에 해당하고 각 요소는 해당 블록 ID의 물리적 주소(컨테이너 ID 및 범위의 식별자 범위로 구성됨)를 포함한다.
일부 실시예에서, 전술한 단계 1810에서 도입된 (컨테이너 및 각각의 블록에 대한 복수의 식별자의) 신원의 인덱스에서의 위치는 기본적으로 블록 ID로 구성된다. 블록 ID는 블록의 물리적 주소를 포함하는 모든 식별자만이 공유하는 복수의 구성 요소에 직접 매핑할 수 있다. 신원을 저장하는 인덱스 내의 복수의 식별자 핵산 분자는 각각이 복수의 구성요소를 포함하는 개별 식별자 핵산 분자로 구성될 수 있다. 일부 실시예에서, 블록 ID는 직접 컨테이너에, 그리고 컨테이너 내의 해당 블록의 모든 식별자만이 공유하는 복수의 핵산 구성 요소에 직접 매핑된다. 일부 실시예에서, 블록 ID는 연관된 블록에 주석을 추가하는 엔터티의 트리플이며, 트리플의 엔터티는 복수의 핵산 구성 요소에 매핑된다. 구성 요소를 포함하는 개별 식별자를 포함하는 인덱스의 복수의 식별자는 엔터티로 주석이 달린 모든 블록의 물리적 주소를 저장할 수 있다. 대안적으로 또는 추가로, 상기 엔터티에 의해 주석이 달린 모든 블록을 포함하는 아카이브의 콘텐츠 내의 복수의 식별자는 상기 엔터티를 나타내는 대응하는 복수의 핵산 구성요소를 배타적으로 포함할 수 있다.
본 명세서에 기술된 임의의 방법(예를 들어, 도 24-26, 34와 관련하여 기술된 방법)에 따라 디지털 정보를 저장하기 위한 시스템은 핵산의 다수의 컨테이너를 저장하기 위한 샘플 관리 시스템을 포함할 수 있다. 시스템은 샘플 관리 시스템으로부터 지정된 컨테이너를 불러오기 위해 자동화 기계를 사용할 수 있다. 일부 실시예에서, 이 샘플 관리 시스템은 도 34와 관련하여 위에서 설명한 DNA 보유 식별자를 포함하면서, 모든 종류의 물리적 또는 컴퓨터 표현 데이터 저장 요소도 포함하는, 모든 종류의 컨테이너에 액세스하는 데 사용된다.
전술한 내용은 단지 본 발명의 원리를 설명하기 위한 것이며, 장치는 설명된 실시예 이외의 다른 방법에 의해 실시될 수 있으며, 이는 설명의 목적으로 제공되며 제한되지 않눈다. 본 명세서에 개시된 방법은 핵산 기반 데이터 저장에 사용하기 위해 제시되어 있지만 데이터 저장을 필요로 하는 다른 애플리케이션의 시스템에 적용될 수 있음을 이해해야 한다.
본 개시 내용을 검토한 후 당업자는 변형 및 수정을 할 수 있을 것이다. 개시된 특징은 본 명세서에 기술된 하나 이상의 다른 특징과 임의의 조합 및 하위 조합(여러 종속 조합 및 하위 조합 포함)으로 구현될 수 있다. 임의의 구성 요소를 포함하여 위에서 설명하거나 예시한 다양한 기능은 다른 시스템에 결합되거나 통합될 수 있다. 또한 특정 기능이 생략되거나 구현되지 않을 수 있다.
설명된 시스템 및 방법은 프린터/피니셔 시스템에서 로컬로 구현될 수 있다. 프린터/피니셔 시스템은 데이터 처리 장치를 포함할 수 있다. 여기에 설명된 시스템 및 방법은 별도의 데이터 처리 장치에서 원격으로 구현될 수 있다. 별도의 데이터 처리 장치는 클라우드 애플리케이션을 통해 프린터/피니셔 시스템에 직접 또는 간접적으로 연결될 수 있다. 프린터/피니셔 시스템은 별도의 데이터 처리 장치와 실시간으로(또는 거의 실시간으로) 통신할 수 있다.
일반적으로, 본 명세서에 기술된 주제 및 기능적 동작의 실시예는 본 명세서에 개시된 구조 및 이들의 구조적 등가물을 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어로 또는 그들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시예는 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행하거나 데이터 처리 장치의 작동을 제어하기 위해 컴퓨터 판독 가능 매체에 인코딩된 하나 이상의 컴퓨터 프로그램 명령 모듈로 구현될 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 구성 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 처리 장치"라는 용어는 예를 들어 프로그래밍 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 장치, 디바이스 및 기계를 포함한다. 장치는 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 생성된 기계 생성 전기, 광학 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려짐)은 컴파일되거나 해석된 언어를 포함하여 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로 또는 모듈, 구성 요소, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위로를 포함한, 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있다. 프로그램은 다른 프로그램이나 데이터(예: 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부에, 해당 프로그램 전용 단일 파일에 또는 여러 조정 파일(예: 하나 이상의 모듈, 하위 프로그램 또는 코드 부분을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 있거나 여러 사이트에 분산되어 통신 네트워크로 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 공정 및 논리 흐름은 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 논리 회로에 의해 수행될 수 있고 장치가 이와 같이 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어 범용 및 특수 목적 마이크로프로세서 둘 다, 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 읽기 전용 메모리나 임의 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 요소는 명령을 수행하는 프로세서와 명령과 데이터를 저장하는 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어 자기, 광자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하기 위해 또는 양자 모두를 포함하거나 작동 가능하게 결합될 것이다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않다.
변경, 대체 및 변경의 예는 당업자에 의해 확인될 수 있고 본 명세서에 개시된 정보의 범위를 벗어나지 않고 이루어질 수 있다. 여기에 인용된 모든 참조문헌은 그 전체가 참고문헌으로 포함되며 본 출원의 일부가 된다.

Claims (28)

  1. 디지털 정보를 핵산 분자에 기입하는 방법으로서,
    디지털 정보를 식별자 핵산 서열의 표적 세트에 매핑하는 단계;
    복수의 식별자 핵산 분자를 얻는 단계;
    나노포어 시스템으로 상기 복수의 식별자 핵산 분자의 식별자 핵산 분자를 시퀀싱하는 단계; 그리고
    식별자 핵산 분자가 상기 표적 세트의 식별자 핵산 서열에 상응하는지 여부에 기초하여 목적지 챔버로 식별자 핵산 분자를 수용하거나 거부하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 매핑은 워드를 코드워드에 매핑하는 코드북을 사용하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 적어도 하나의 식별자 핵산 서열이 코드워드의 비트에 대응하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 비트가 1의 비트-값을 갖는 경우, 상기 비트는 상기 표적 세트 내 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현되고, 비트가 0의 비트 값을 가지면, 상기 비트는 상기 표적 세트 내 상응하는 식별자 핵산 서열의 부재로 표현되는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 복수의 식별자 핵산 분자는 제품 구성표(product scheme)를 사용하여 다중 구성요소 핵산 분자를 조립함으로써 얻어지며, 여기서 제품 구성표는 M개의 레이어의 세트를 정의하고, 각 레이어는 구성요소들의 세트를 포함하고, 각각의 식별자 핵산 분자는 M개의 레이어의 세트의 각 레이러로부터 하나의 구성요소를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 복수의 식별자 핵산 분자는 드 노보(de novo) 합성으로 다중 올리고뉴클레오타이드를 프로그램적으로 합성함으로써 얻어지는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 복수의 식별자 핵산 분자는 축퇴성 올리고뉴클레오티드 서열을 합성함으로써 얻어지는, 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서, 복수의 식별자 핵산 분자의 각각의 식별자 분자에 공통 프라이머 결합 부위를 도입하는 단계를 추가로 포함하는, 방법.
  9. 제8항에 있어서, 상기 공통 프라이머 부위에 결합하도록 구성된 PCR 프라이머를 사용하여 폴리머라제 연쇄 반응(PCR)으로 복수의 식별자 핵산 분자를 증폭하는 단계를 추가로 포함하는, 방법.
  10. 제5항 내지 제7항 중 어느 한 항에 있어서, 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자에 스페이서 시퀀스를 부가하는 단계를 추가로 포함하는, 방법.
  11. 제10항에 있어서, 상기 스페이서 시퀀스는 결찰(ligation) 또는 오버랩 익스텐션 PCR 중 하나에 의해 부가되는, 방법.
  12. 제11항에 있어서, 상기 스페이서 시퀀스가 식별자 핵산 서열 내의 표적 삽입 부위에 삽입되는, 방법.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 스페이서 시퀀스가 나노포어 시스템에서의 시퀀싱 동안 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자의 전좌 시간을 증가시키도록 구성되는, 방법.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 나노포어 시스템이 소스 챔버, 멤브레인, 나노포어 및 목적지 챔버를 포함하는, 방법.
  15. 제14항에 있어서, 식별자 핵산 분자를 수용하는 단계는 식별자 핵산 분자를 소스 챔버로부터 멤브레인의 나노포어를 통해 목적지 챔버로 전좌시키는 단계를 포함하는, 방법.
  16. 제15항에 있어서, 식별자 핵산 분자를 시퀀싱하는 단계는 임피던스 신호를 검출하고 임피던스 신호를 다중 임피던스 시그너처 중 하나에 일치시키는 단계를 포함하는, 방법.
  17. 제16항에 있어서, 별개의 임피던스 신호를 제공하기 위해 복수의 식별자 핵산 분자의 적어도 서브세트의 각각의 식별자 핵산 분자에 작용제를 결합시키는 단계를 추가로 포함하는, 방법.
  18. 제17항에 있어서, 상기 결합이 복수의 식별자 핵산 분자의 각각의 식별자 핵산 분자에 작용제를 결합시키는 단계를 포함하는 방법.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 식별자 핵산 분자는 상기 식별자 핵산 분자에 매칭되는 적어도 하나의 임피던스 시그니처에 기초하여 목적지 챔버로 수용되거나 거부되는 방법.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서, 상기 식별자 핵산 분자를 거부하는 것은, 나노포어 간의 전기장의 극성을 역전시키는 것을 포함하는, 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서, 목적지 챔버가 오류 정정으로 디지털 정보를 나타내기에 충분한 복수의 식별자 핵산 분자를 포함할 때까지 나노포어 시스템에서 다중 식별자 핵산 분자를 시퀀싱하는 단계를 추가로 포함하는, 방법.
  22. 제1항 내지 제21항 중 어느 한 항에 있어서, 매핑은 순방향 오류 정정을 사용하는 것을 포함하는, 방법.
  23. 제1항 내지 제22항 중 어느 한 항에 있어서, 역방향 오류 정정을 사용하여 시퀀싱 단계 또는 수용 또는 거부 단계 동안 발생하는 임의의 오류를 정정하는 단계를 더 포함하는, 방법.
  24. 제1항 내지 제23항 중 어느 한 항에 있어서, 목적지 챔버는 제1 목적지 챔버이고, 표적 세트는 제1 표적 세트이며, 방법은:
    식별자 핵산 분자가 제2 표적 세트의 식별자 핵산 서열에 상응하는지 여부에 기초하여 식별자 핵산 분자를 제2 목적지 챔버로 수용하거나 거부하는 단계를 더 포함하는, 방법.
  25. 제24항에 있어서, 상기 나노포어 시스템이 소스 챔버, 제1 멤브레인, 제1 멤브레인 내의 제1 나노포어, 제2 멤브레인 및 제2 멤브레인 내의 제2 나노포어를 포함하고; 그리고
    상기 제1 멤브레인은 소스 챔버와 제1 목적지 챔버를 분리하고, 상기 제2 멤브레인은 소스 챔버와 제2 목적지 챔버를 분리하는, 방법.
  26. 제24항 또는 제25항에 있어서, 상기 비트가 1의 비트-값을 갖는 경우, 상기 비트는 제1 표적 세트 내의 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현되고, 상기 비트가 0의 비트 값을 갖는 경우, 상기 비트는 제2 표적 세트 내 적어도 하나의 상응하는 식별자 핵산 서열의 존재로 표현되는, 방법.
  27. 제24항 내지 제26항 중 어느 한 항에 있어서,
    구성요소 핵산 서열의 프로브 세트를 지정하는 단계;
    나노포어 시스템을 사용하여 제1 목적지 챔버 또는 제2 목적지 챔버로부터 프로빙된 식별자 핵산 분자를 시퀀싱하는 단계; 그리고
    프로빙된 식별자 핵산 분자가 프로브 세트의 구성요소 핵산 서열을 포함하는 식별자 핵산 서열에 상응하는지 여부에 기초하여 프로빙된 식별자 핵산 분자를 불러오기 챔버(retrieval chamber)로 수용하거나 거부하는 단계를 더 포함하는, 방법.
  28. 제1항 내지 제27항 중 어느 한 항에 있어서, 식별자 핵산 분자를 수락 또는 거부하는 단계는:
    식별자 핵산 분자가 상기 표적 세트의 식별자 핵산 서열을 갖는 경우 식별자 핵산 분자를 목적지 챔버로 수용하는 단계; 그리고
    식별자 핵산 분자가 상기 표적 세트의 식별자 핵산 서열을 갖지 않는 경우 목적지 챔버로부터 식별자 핵산 분자를 거부하는 단계를 포함하는, 방법.
KR1020237012204A 2020-09-08 2021-09-07 핵산의 시퀀싱에 의한 기록을 위한 시스템 및 방법 KR20230066426A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063075622P 2020-09-08 2020-09-08
US63/075,622 2020-09-08
PCT/US2021/049289 WO2022055885A1 (en) 2020-09-08 2021-09-07 Systems and methods for writing by sequencing of nucleic acids

Publications (1)

Publication Number Publication Date
KR20230066426A true KR20230066426A (ko) 2023-05-15

Family

ID=78078388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237012204A KR20230066426A (ko) 2020-09-08 2021-09-07 핵산의 시퀀싱에 의한 기록을 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US20230317164A1 (ko)
EP (1) EP4211689A1 (ko)
JP (1) JP2023546315A (ko)
KR (1) KR20230066426A (ko)
AU (1) AU2021341940A1 (ko)
CA (1) CA3194071A1 (ko)
WO (1) WO2022055885A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023177864A1 (en) * 2022-03-18 2023-09-21 Catalog Technologies, Inc. Combinatorial enumeration and search for nucleic acid-based data storage

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898579B2 (en) * 2015-06-16 2018-02-20 Microsoft Technology Licensing, Llc Relational DNA operations
JP7107956B2 (ja) 2016-11-16 2022-07-27 カタログ テクノロジーズ, インコーポレイテッド 核酸ベースのデータ記憶のためのシステム
US10650312B2 (en) 2016-11-16 2020-05-12 Catalog Technologies, Inc. Nucleic acid-based data storage
US11612873B2 (en) * 2017-05-31 2023-03-28 Molecular Assemblies, Inc. Homopolymer encoded nucleic acid memory
WO2019046768A1 (en) * 2017-08-31 2019-03-07 William Marsh Rice University SYMBOLIC SEQUENCING OF DNA AND RNA BY SEQUENCE CODING
EP3794598A1 (en) * 2018-05-16 2021-03-24 Catalog Technologies, Inc. Compositions and methods for nucleic acid-based data storage
JP2021532799A (ja) * 2018-08-03 2021-12-02 カタログ テクノロジーズ, インコーポレイテッド 誤り保護とともに核酸に基づくデータを記憶および読むためのシステムおよび方法
GB201821155D0 (en) * 2018-12-21 2019-02-06 Oxford Nanopore Tech Ltd Method

Also Published As

Publication number Publication date
AU2021341940A1 (en) 2023-03-30
CA3194071A1 (en) 2022-03-17
JP2023546315A (ja) 2023-11-02
WO2022055885A1 (en) 2022-03-17
US20230317164A1 (en) 2023-10-05
EP4211689A1 (en) 2023-07-19

Similar Documents

Publication Publication Date Title
US20210210165A1 (en) Systems and methods for storing and reading nucleic acid-based data with error protection
US20240013063A1 (en) Systems for nucleic acid-based data storage
Takahashi et al. Demonstration of end-to-end automation of DNA data storage
US20240055075A1 (en) Data structures and operations for searching, computing, and indexing in dna-based data storage
US10566077B1 (en) Re-writable DNA-based digital storage with random access
EP3580675B1 (en) Primer design for retrieval of stored polynucleotides
JPWO2020028912A5 (ko)
US11306353B2 (en) Programs and functions in DNA-based data storage
Roquet et al. DNA-based data storage via combinatorial assembly
US20230317164A1 (en) Systems and methods for writing by sequencing of nucleic acids
Lim et al. A biological camera that captures and stores images directly into DNA
Wei et al. Dna storage: A promising large scale archival storage?
Ezpeleta et al. Robust and scalable barcoding for massively parallel long-read sequencing
EP3830831A2 (en) Systems and methods for storing and reading nucleic acid-based data with error protection
Milenkovic et al. DNA-Based Data Storage Systems: A Review of Implementations and Code Constructions
Sharma et al. Efficiently Enabling Block Semantics and Data Updates in DNA Storage
WO2023168085A1 (en) Dna microarrays and component level sequencing for nucleic acid-based data storage and processing
WO2023187214A1 (en) Biopolymer synthesis
Lemane Indexing and analysis of large sequencing collections using kmer matrices
CN112703256A (zh) 用于测定聚合物序列的方法