KR102574250B1 - Method, program and apparatus for encoding and decoding dna data using low density parity check code - Google Patents

Method, program and apparatus for encoding and decoding dna data using low density parity check code Download PDF

Info

Publication number
KR102574250B1
KR102574250B1 KR1020210104372A KR20210104372A KR102574250B1 KR 102574250 B1 KR102574250 B1 KR 102574250B1 KR 1020210104372 A KR1020210104372 A KR 1020210104372A KR 20210104372 A KR20210104372 A KR 20210104372A KR 102574250 B1 KR102574250 B1 KR 102574250B1
Authority
KR
South Korea
Prior art keywords
length
decoding
ldpc
base sequences
binary
Prior art date
Application number
KR1020210104372A
Other languages
Korean (ko)
Other versions
KR20230022510A (en
Inventor
박성준
정재호
노종선
박호성
김성환
알버트 노
Original Assignee
서울대학교산학협력단
전남대학교산학협력단
울산대학교 산학협력단
홍익대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단, 전남대학교산학협력단, 울산대학교 산학협력단, 홍익대학교 산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020210104372A priority Critical patent/KR102574250B1/en
Priority to PCT/KR2022/011804 priority patent/WO2023018157A1/en
Publication of KR20230022510A publication Critical patent/KR20230022510A/en
Application granted granted Critical
Publication of KR102574250B1 publication Critical patent/KR102574250B1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/001Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used

Abstract

저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법, 프로그램 및 장치가 제공된다. 상기 방법은, 특정 데이터를 기 설정된 제1 길이의 제1 이진수 벡터로 변환하는 단계, 상기 제1 이진수 벡터를 기 설정된 제2 길이의 제2 이진수 벡터로 나누되, 기 설정된 제1 개수로 나누는 단계, 상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬하는 단계, 기 설정된 제3 길이의 패리티를 이용하여 가로 방향으로 LDPC(low density parity check) 부호화를 수행하는 단계, 상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이의 주소 값을 지정하는 단계, 상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트(bit) 당 하나의 DNA로 치환하는 단계 및 상기 DNA로 치환되어 상기 제5 길이의 절반 길이인 상기 제2 개수의 염기 배열 각각에 대해서 천공(puncturing)을 수행하는 단계를 포함한다.
본 발명은 “삼성전자 미래기술육성센터의 지원을 받아 수행된 연구”이다.
A method, program, and apparatus for encoding and decoding DNA data using a low density parity check code are provided. The method includes the steps of converting specific data into a first binary vector having a predetermined first length, dividing the first binary vector into a second binary vector having a predetermined second length, and dividing the first binary vector by a predetermined first number. , aligning the first number of second binary vectors in the vertical direction, performing low density parity check (LDPC) encoding in the horizontal direction using a pre-set parity of a third length, the first number and the assigning an address value of a predetermined fourth length to each of a second number of vertically aligned second binary vectors corresponding to the sum of the third lengths, the sum of the second length and the fourth length replacing each of the vertically aligned second binary vectors having a corresponding fifth length with one DNA per 2 bits, and replacing each of the second binary vectors having a half length of the fifth length with the DNA and performing puncturing on each nucleotide sequence.
This invention is a “research conducted with the support of Samsung Electronics Future Technology Development Center”.

Description

저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법, 프로그램 및 장치{METHOD, PROGRAM AND APPARATUS FOR ENCODING AND DECODING DNA DATA USING LOW DENSITY PARITY CHECK CODE}DNA data encoding and decoding method, program and device using low density parity check code

본 발명은 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법, 프로그램 및 장치에 관한 것이다. The present invention relates to a method, program, and device for encoding and decoding DNA data using a low density parity check code.

디지털 데이터는 실시간으로 기하급수적으로 증가하고 있다. 2025년에는 175 제타바이트의 데이터가 생성된다고 추측되고 있다. 이렇게 증가하는 데이터를 처리하고 저장하기 위해서 새로운 저장 장치의 필요성이 야기되고 있다.Digital data is growing exponentially in real time. It is estimated that 175 zettabytes of data will be created in 2025. In order to process and store such increasing data, a need for a new storage device has arisen.

새로운 저장 장치는 높은 저장 밀도, 긴 저장 시간, 낮은 에너지 비용을 필요로 한다. 하지만 기존의 저장 장치인 자기 테이프, 하드 디스크 드라이브, SDD는 새로운 저장 장치에 적합하지 않다. 이에 따라 DNA가 새로운 저장 장치의 매개체로 떠오르고 있다. 우리는 이것을 DNA 저장 장치라고 부른다. 이는 데이터를 A, C, G, T 네 가지 염기로 치환하여 저장하는 장치이다. New storage devices require high storage densities, long storage times and low energy costs. However, existing storage devices such as magnetic tapes, hard disk drives and SDDs are not suitable for new storage devices. Accordingly, DNA is emerging as a medium for a new storage device. We call this the DNA storage unit. This is a device that stores data after replacing it with four bases A, C, G, and T.

DNA 저장 장치는 현재 매우 활발히 연구가 이루어지고 있는 분야 중 하나이다. 이러한 DNA 저장 장치에는 3 가지 서로 다른 오류가 존재한다: 치환 오류 (substitution error), 삽입 오류 (insertion error), 삭제 오류 (deletion error). The DNA storage device is currently one of the fields in which research is being very actively conducted. There are three different types of errors in these DNA storage devices: substitution errors, insertion errors, and deletion errors.

치환 오류는 말 그대로 본래 전송되어야 하는 염기 대신 나머지 3 가지 다른 염기 중 하나로 바뀌어서 전송되는 오류이다. 삽입 오류는 본래 전송되어야 하는 염기들 사이에 임의의 염기가 추가로 발생하여 전송되는 오류이고, 삭제 오류는 본래 전송되어야 하는 염기가 사라져서 전송되는 오류이다. A substitution error is literally an error in which one of the three other bases is replaced and transmitted instead of the base that should have been originally transmitted. An insertion error is a transmission error in which an additional base is generated between bases that should be originally transmitted, and a deletion error is a transmission error in which a base originally intended to be transmitted is missing.

이 때, 치환 오류는 길이가 그대로이고, 하나의 염기에서만 오류가 생기지만, 삽입/삭제 오류가 생길 경우, DNA의 길이가 달라지고, 전송되는 염기의 위치가 하나씩 밀리는 경우가 발생한다. 따라서 치환 오류에 비해 삽입/삭제 오류가 DNA 저장 장치에서 데이터를 저장하고 읽는데에 매우 치명적인 오류로 작용한다. 이러한 오류들로부터 DNA 저장 장치를 보호하고, 완벽하게 데이터를 저장하고 읽기 위해서는 DNA 저장 장치에 오류 정정 부호를 필수적으로 적용해야 한다. At this time, the length of the substitution error remains the same and an error occurs in only one base, but when an insertion/deletion error occurs, the length of the DNA changes and the position of the transmitted base is shifted one by one. Therefore, compared to substitution errors, insertion/deletion errors act as very fatal errors in storing and reading data in DNA storage devices. In order to protect the DNA storage device from these errors and to perfectly store and read data, an error correction code must be applied to the DNA storage device.

또한 DNA 저장 장치의 오류율은 DNA의 생화학적 구조에 영향을 많이 받는다. DNA를 합성하고, 이를 저장하고 읽는 과정에서, 가장 큰 두 가지 제한이 있다. DNA 내에서 G, C의 비율이 50%에서 멀 때 오류가 많이 생기고, 같은 염기서열이 연속적으로 여러 개 반복되면 오류가 많이 생긴다고 알려져 있다. 따라서 이러한 두 가지의 생화학적 특성을 만족시키는 것이 DNA 저장 장치에서는 오류를 줄이는데 도움을 줄 수 있다.In addition, the error rate of DNA storage devices is greatly affected by the biochemical structure of DNA. In the process of synthesizing, storing and reading DNA, there are two biggest limitations. It is known that a lot of errors occur when the ratio of G and C in DNA is far from 50%, and a lot of errors occur when the same base sequence is repeated several times in succession. Therefore, satisfying these two biochemical characteristics can help reduce errors in DNA storage devices.

등록특허공보 제10-1529360호, 2015.06.10.Registered Patent Publication No. 10-1529360, 2015.06.10.

본 발명이 해결하고자 하는 과제는 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법, 프로그램 및 장치를 제공하는 것이다.An object to be solved by the present invention is to provide a method, program, and apparatus for encoding and decoding DNA data using a low density parity check code.

본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the description below.

상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 장치에 의해 수행되는 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법은, 특정 데이터를 기 설정된 제1 길이의 제1 이진수 벡터로 변환하는 단계, 상기 제1 이진수 벡터를 기 설정된 제2 길이의 제2 이진수 벡터로 나누되, 기 설정된 제1 개수로 나누는 단계, 상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬하는 단계, 기 설정된 제3 길이의 패리티를 이용하여 가로 방향으로 LDPC(low density parity check) 부호화를 수행하는 단계, 상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이의 주소 값을 지정하는 단계, 상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트(bit) 당 하나의 DNA로 치환하는 단계 및 상기 DNA로 치환되어 상기 제5 길이의 절반 길이인 상기 제2 개수의 염기 배열 각각에 대해서 천공(puncturing)을 수행하는 단계를 포함한다.A DNA data encoding and decoding method using a low density parity check code performed by an apparatus according to an aspect of the present invention for solving the above problems includes the steps of converting specific data into a first binary vector having a predetermined first length. , Dividing the first binary vector into second binary vectors having a predetermined second length by a predetermined first number, arranging the second binary vectors of the first number in the vertical direction, and Performing LDPC (low density parity check) encoding in the horizontal direction using parity of length 3, second binary numbers aligned in the vertical direction of the second number corresponding to the sum of the first number and the third length Assigning an address value of a preset fourth length to each vector, each of the second binary vectors aligned in the vertical direction having a fifth length corresponding to the sum of the second length and the fourth length by 2 bits ( replacing with one DNA per bit) and performing puncturing on each of the second number of nucleotide sequences that are substituted with the DNA and are half the length of the fifth length.

본 발명에서, 상기 방법은, 상기 제1 이진수 벡터를 상기 제1 개수의 상기 제2 이진수 벡터로 나누기 전에, 난수를 이용한 XOR 연산을 통해 상기 긴 이진수 벡터를 랜덤화하는 단계;를 더 포함할 수 있다.In the present invention, the method may further include randomizing the long binary number vector through an XOR operation using a random number before dividing the first binary number vector by the first number of the second binary number vectors. there is.

본 발명에서, 상기 주소 값 지정 단계는, 부호화를 위해 필요한 주소 값의 개수를 산출하는 단계, 상기 산출된 주소 값 각각에 대해 RS(Reed-Solomon) 부호를 적용하여 부호화하는 단계 및 상기 부호화된 주소 값 각각을 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각에 순서대로 지정해주는 단계를 포함할 수 있다.In the present invention, the address value designation step includes calculating the number of address values necessary for encoding, encoding each of the calculated address values by applying a Reed-Solomon (RS) code, and encoding the encoded address. A step of assigning each value to each of the second binary vectors aligned in the vertical direction in order may be included.

본 발명에서, 상기 주소 값의 개수를 산출하는 단계는, 상기 주소 값의 비트 수에 기초한 전체 경우의 수 중에서 특정 위치의 복수의 비트가 서로 다른 염기인 경우의 수에 상응하는 개수를 상기 주소 값의 개수로 산출할 수 있다.In the present invention, in the step of calculating the number of address values, the number corresponding to the number of cases in which a plurality of bits at a specific position are different bases among the total number of cases based on the number of bits of the address value is calculated as the address value. can be calculated as the number of

본 발명에서, 상기 주소 값은 짝수 패리티를 포함할 수 있다.In the present invention, the address value may include even parity.

본 발명에서, 상기 치환 단계는, 상기 2 비트는 0 및 1의 개수에 따라 아데닌(A, Adenine), 구아닌(G, Guanine), 시토신(C, Cytosine) 및 티민(T, Thymine) 중 하나로 치환될 수 있다.In the present invention, in the substitution step, the 2 bits are replaced with one of Adenine (A), Guanine (G), Cytosine (C), and Thymine (T) according to the number of 0s and 1s. It can be.

본 발명에서, 상기 천공 수행 단계는, 상기 제2 개수의 염기 배열 중에서, 구아닌(G, Guanine) 및 시토신(C, Cytosine)의 비율이 기준 비율과의 차이가 기 설정된 값보다 큰 염기 배열과 동일한 염기가 기 설정된 횟수 이상 반복되는 염기 배열에 대해서 천공을 수행하는 것일 수 있다.In the present invention, in the puncturing step, the ratio of guanine (G, Guanine) and cytosine (C, Cytosine) among the base sequences of the second number is the same as that of a base sequence in which the difference from the reference ratio is greater than a preset value. Perforation may be performed on a nucleotide sequence in which a base is repeated a predetermined number of times or more.

본 발명에서, 상기 방법은, 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 단계(여기서 N은 자연수) 및 상기 복호화된 결과에 기초하여, 상기 제1 개수의 제2 이진수 벡터를 상기 지정된 주소 값의 순서에 따라 상기 제1 길이의 제1 이진수 벡터로 통합하는 단계를 더 포함하고, 상기 N개의 염기 배열은 서로 다르거나 적어도 두개가 동일하고, 상기 N개의 염기 배열이 서로 다른 경우에 상기 N은 상기 제2 개수보다 작거나 동일하고, 상기 N개의 염기 배열이 적어도 두개가 동일한 경우에 상기 N은 상기 제2 개수보다 클 수 있다.In the present invention, the method includes the steps of extracting N base sequences from among the encoded second number of base sequences and performing first LDPC decoding and second LDPC decoding (where N is a natural number) and the decrypted result based on the sequence, further comprising integrating the second binary vectors of the first number into the first binary vectors of the first length according to the order of the designated address values, wherein the N base sequences are different from each other or at least two is the same, and when the N base sequences are different from each other, N is less than or equal to the second number, and when at least two of the N base sequences are identical, N may be greater than the second number. .

본 발명에서, 상기 제1 LDPC 복호화 및 제2 LDPC 복호화 수행 단계는, 상기 추출된 N개의 염기 배열 각각의 주소 값에 대한 RS 복호화 및 짝수 패리티 복호화를 수행하는 단계, 상기 복호화된 결과에 따라 동일한 주소 값을 가지는 염기 배열을 그룹핑하는 단계, 상기 그룹핑된 염기 배열에서 주소 값을 제거한 후 이진수 벡터로 치환하는 단계, 상기 주소 값에 염기 배열의 존재 여부에 따라 상기 치환된 이진수 벡터 각각에 대해 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출하는 단계, 상기 산출된 로그 우도 비를 상기 주소 값의 순서에 따라 세로 방향으로 정렬하는 단계, 상기 세로 방향으로 정렬된 로그 우도 비를 가로 방향으로 제1 LDPC 복호화 수행하는 단계, 상기 제1 LDPC 복호화된 결과에 기초하여, 제2 LDPC 복호화 수행하는 단계 및 상기 제2 LDPC 복호화된 결과에 기초하여, 상기 최종 복호화의 성공 여부를 판단하는 단계를 포함할 수 있다.In the present invention, the first LDPC decoding and the second LDPC decoding steps include performing RS decoding and even parity decoding on the address values of each of the extracted N base sequences, and the same address according to the decrypted result. Grouping nucleotide sequences having values, removing address values from the grouped nucleotide sequences and replacing them with binary vectors, log likelihood ratios for each of the substituted binary vectors according to the presence or absence of nucleotide sequences in the address values. Calculating (LLR, Log-Likelihood Ratio), arranging the calculated log-likelihood ratios in the vertical direction according to the order of the address values, and arranging the log-likelihood ratios arranged in the vertical direction in the horizontal direction to obtain a first LDPC The method may include performing decoding, performing second LDPC decoding based on the first LDPC decoding result, and determining whether the final decoding succeeds based on the second LDPC decoding result. .

본 발명에서, 상기 제1 LDPC 복호화 수행 단계는, 각 주소 값에 대응하는 염기 배열 각각에 대해, 제1 LDPC 복호화 수행 전과 후의 바뀐 비트 수를 계산하는 단계 및 상기 바뀐 비트 수가 기 설정된 개수 이상인 염기 배열에 대해 상기 로그 우도 비를 0으로 초기화하는 단계를 포함하고, 상기 제2 LDPC 복호화 수행 단계는, 상기 제1 LDPC 복호화에 실패한 가로방향 LPDC 부호어에 대해서만 제2 LDPC 복호화를 수행하는 것으로 결정하고, 상기 최종 복호화의 성공 여부를 판단하는 단계는, 상기 제1 LDPC 복호화된 모든 염기 배열과, 상기 제1 LDPC 복호화 및 상기 제2 LDPC 복호화된 모든 염기 배열에 대한 패리티 검사 행렬을 통해 최종 복호화의 성공 여부를 판단할 수 있다.In the present invention, the first LDPC decoding step may include calculating the number of changed bits before and after performing the first LDPC decoding for each base sequence corresponding to each address value, and a base sequence in which the number of changed bits is equal to or greater than a predetermined number and initializing the log-likelihood ratio to 0 for , wherein the performing of the second LDPC decoding determines that second LDPC decoding is performed only on the horizontal LPDC codewords for which the first LDPC decoding fails, The step of determining whether the final decoding is successful is whether the final decoding is successful or not through a parity check matrix for all the first LDPC-decoded base sequences and all the first LDPC-decoded and second LDPC-decoded base sequences can judge

본 발명에서, 상기 최종 복호화가 실패한 것으로 판단된 경우, 상기 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추가로 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 과정을 반복할 수 있다.In the present invention, when it is determined that the final decoding has failed, the process of additionally extracting N base sequences from among the encoded second number of base sequences and performing first LDPC decoding and second LDPC decoding is repeated. can

본 발명에서, 상기 로그 우도 비 (LLR, Log-Likelihood Ratio)는 아래 수학식을 이용하여 산출될 수 있다.In the present invention, the log-likelihood ratio (LLR, Log-Likelihood Ratio) can be calculated using the following equation.

여기서, K0은 같은 클러스터 내에서 같은 위치에서의 0의 개수, K1은 같은 클러스터 내에서 같은 위치에서의 1의 개수, 는 기 설정된 파라미터 값Here, K 0 is the number of 0s at the same position within the same cluster, K 1 is the number of 1s at the same position within the same cluster, is the preset parameter value

상술한 과제를 해결하기 위한 본 발명의 다른 면에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 장치는, 통신부, 상기 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화를 위한 적어도 하나의 프로세스를 저장하고 있는 메모리 및 상기 프로세스에 따라 동작하는 프로세서;를 포함하고, 상기 프로세서는, 상기 프로세스를 기반으로, 특정 데이터를 기 설정된 제1 길이의 제1 이진수 벡터로 변환하고, 상기 제1 이진수 벡터를 기 설정된 제2 길이의 제2 이진수 벡터로 나누되, 기 설정된 제1 개수로 나누고, 상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬하고, 기 설정된 제3 길이의 패리티를 이용하여 가로 방향으로 LDPC(low density parity check) 부호화를 수행하고, 상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이의 주소 값을 지정하고, 상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트(bit) 당 하나의 DNA로 치환하고, 상기 DNA로 치환되어 상기 제5 길이의 절반 길이인 상기 제2 개수의 염기 배열 각각에 대해서 천공(puncturing)을 수행한다.DNA data encoding and decoding apparatus using a low density parity check code according to another aspect of the present invention for solving the above problems stores a communication unit and at least one process for encoding and decoding DNA data using the low density parity check code. and a processor that operates according to the memory and the process, wherein the processor converts specific data into a first binary number vector having a predetermined first length based on the process, and converts the first binary number vector into a base Divided into second binary vectors of a set second length, divided by a set first number, aligning the first number of second binary vectors in the vertical direction, and horizontally using parity of a set third length LDPC (low density parity check) encoding is performed, and an address value of a fourth length preset in each of the second binary number vectors vertically aligned with the second number corresponding to the sum of the first number and the third length , and each of the second binary vectors aligned in the vertical direction having a fifth length corresponding to the sum of the second length and the fourth length is substituted with one DNA per 2 bits, and the DNA substituted with to perform puncturing on each of the second number of nucleotide sequences having a half length of the fifth length.

본 발명에서, 상기 프로세서는, 상기 제1 이진수 벡터를 상기 제1 개수의 상기 제2 이진수 벡터로 나누기 전에, 난수를 이용한 XOR 연산을 통해 상기 긴 이진수 벡터를 랜덤화할 수 있다.In the present invention, the processor may randomize the long binary vector through an XOR operation using a random number before dividing the first binary vector by the first number of the second binary vector.

본 발명에서, 상기 프로세서는, 상기 주소 값 지정 시, 부호화를 위해 필요한 주소 값의 개수를 산출하고, 상기 산출된 주소 값 각각에 대해 RS(Reed-Solomon) 부호를 적용하여 부호화하고, 상기 부호화된 주소 값 각각을 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각에 순서대로 지정해줄 수 있다.In the present invention, when designating the address value, the processor calculates the number of address values necessary for encoding, applies a Reed-Solomon (RS) code to each of the calculated address values, and encodes them. Each address value may be sequentially assigned to each of the second binary vectors aligned in the vertical direction.

본 발명에서, 상기 프로세서는, 상기 주소 값의 개수를 산출 시, 상기 주소 값의 비트 수에 기초한 전체 경우의 수 중에서 특정 위치의 복수의 비트가 서로 다른 염기인 경우의 수에 상응하는 개수를 상기 주소 값의 개수로 산출할 수 있다.In the present invention, when calculating the number of address values, the processor calculates the number corresponding to the number of cases where a plurality of bits at a specific position are different bases among the total number of cases based on the number of bits of the address value. It can be calculated by the number of address values.

본 발명에서, 상기 주소 값은 짝수 패리티를 포함할 수 있다.In the present invention, the address value may include even parity.

본 발명에서, 상기 프로세서는, 상기 치환 시, 상기 2 비트에 포함된 0 및 1의 개수에 따라 아데닌(A, Adenine), 구아닌(G, Guanine), 시토신(C, Cytosine) 및 티민(T, Thymine) 중 하나로 치환할 수 있다.In the present invention, the processor, during the substitution, adenine (A, Adenine), guanine (G, Guanine), cytosine (C, Cytosine) and thymine (T, Thymine) can be substituted with one of them.

본 발명에서, 상기 프로세서는, 상기 천공 수행 시, 상기 제2 개수의 염기 배열 중에서, 구아닌(G, Guanine) 및 시토신(C, Cytosine)의 비율이 기준 비율과의 차이가 기 설정된 값보다 큰 염기 배열과 동일한 염기가 기 설정된 횟수 이상 반복되는 염기 배열에 대해서 천공을 수행할 수 있다.In the present invention, the processor, when performing the perforation, among the base sequences of the second number, the ratio of guanine (G, Guanine) and cytosine (C, Cytosine) is a base whose difference from the reference ratio is greater than a predetermined value. Perforation may be performed on a nucleotide sequence in which the same base as the sequence is repeated a predetermined number of times or more.

본 발명에서, 상기 프로세서는, 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하고(여기서 N은 자연수), 상기 복호화된 결과에 기초하여, 상기 제1 개수의 제2 이진수 벡터를 상기 지정된 주소 값의 순서에 따라 상기 제1 길이의 제1 이진수 벡터로 통합하고, 상기 N개의 염기 배열은 서로 다르거나 적어도 두개가 동일하고, 상기 N개의 염기 배열이 서로 다른 경우에 상기 N은 상기 제2 개수보다 작거나 동일하고, 상기 N개의 염기 배열이 적어도 두개가 동일한 경우에 상기 N은 상기 제2 개수보다 클 수 있다.In the present invention, the processor performs first LDPC decoding and second LDPC decoding by extracting N base sequences from among the encoded second number of base sequences (where N is a natural number), and based on the decoded result So, the second binary vector of the first number is integrated into the first binary vector of the first length according to the order of the designated address values, the N base sequences are different from each other or at least two are the same, and the N When the number of nucleotide sequences are different from each other, N may be less than or equal to the second number, and when at least two of the N number of nucleotide sequences are identical, N may be greater than the second number.

본 발명에서, 상기 프로세서는, 상기 제1 LDPC 복호화 및 제2 LDPC 복호화 수행 시, 상기 추출된 N개의 염기 배열 각각의 주소 값에 대한 RS 복호화 및 짝수 패리티 복호화를 수행하고, 상기 복호화된 결과에 따라 동일한 주소 값을 가지는 염기 배열을 그룹핑하고, 상기 그룹핑된 염기 배열에서 주소 값을 제거한 후 이진수 벡터로 치환하고, 상기 주소 값에 염기 배열의 존재 여부에 따라 상기 치환된 이진수 벡터 각각에 대해 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출하고, 상기 산출된 로그 우도 비를 상기 주소 값의 순서에 따라 세로 방향으로 정렬하고, 상기 세로 방향으로 정렬된 로그 우도 비를 가로 방향으로 제1 LDPC 복호화 수행하고, 상기 제1 LDPC 복호화된 결과에 기초하여, 제2 LDPC 복호화 수행하고, 상기 제2 LDPC 복호화된 결과에 기초하여, 상기 최종 복호화의 성공 여부를 판단할 수 있다.In the present invention, the processor, when performing the first LDPC decoding and the second LDPC decoding, performs RS decoding and even parity decoding on the address value of each of the extracted N base sequences, and according to the decrypted result Base sequences having the same address value are grouped, address values are removed from the grouped base sequences, and then replaced with binary vectors, and the log likelihood ratio for each of the replaced binary vectors is determined according to whether base sequences exist in the address values. Calculate (LLR, Log-Likelihood Ratio), sort the calculated log-likelihood ratios in the vertical direction according to the order of the address values, and perform first LDPC decoding on the log-likelihood ratios sorted in the vertical direction in the horizontal direction and, based on the result of the first LDPC decoding, second LDPC decoding may be performed, and based on the result of the second LDPC decoding, whether the final decoding is successful or not may be determined.

본 발명에서, 상기 프로세서는, 상기 제1 LDPC 복호화 수행 시, 각 주소 값에 대응하는 염기 배열 각각에 대해, 제1 LDPC 복호화 수행 전과 후의 바뀐 비트 수를 계산하고, 상기 바뀐 비트 수가 기 설정된 개수 이상인 염기 배열에 대해 상기 로그 우도 비를 0으로 초기화하고, 상기 제2 LDPC 복호화 수행 시, 상기 제1 LDPC 복호화에 실패한 가로방향 LPDC 부호어에 대해서만 제2 LDPC 복호화를 수행하는 것으로 결정하고, 상기 최종 복호화의 성공 여부를 판단 시, 상기 제1 LDPC 복호화된 모든 염기 배열과, 상기 제1 LDPC 복호화 및 상기 제2 LDPC 복호화된 모든 염기 배열에 대한 패리티 검사 행렬을 통해 최종 복호화의 성공 여부를 판단할 수 있다.In the present invention, when performing the first LDPC decoding, the processor calculates the number of changed bits before and after the first LDPC decoding is performed for each base sequence corresponding to each address value, and the number of changed bits is greater than or equal to a preset number. The log-likelihood ratio for the base sequence is initialized to 0, and when the second LDPC decoding is performed, it is determined that the second LDPC decoding is performed only on the horizontal LPDC codeword for which the first LDPC decoding fails, and the final decoding When determining the success of the first LDPC decryption, success of final decoding can be determined through a parity check matrix for all base sequences decoded by the first LDPC and all base sequences decoded by the first LDPC and decoded second LDPC. .

본 발명에서, 상기 프로세서는, 상기 최종 복호화가 실패한 것으로 판단된 경우, 상기 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추가로 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 과정을 반복할 수 있다.In the present invention, when it is determined that the final decoding has failed, the processor additionally extracts N base sequences from among the encoded second number of base sequences to perform first LDPC decoding and second LDPC decoding The process can be repeated.

본 발명에서, 상기 로그 우도 비 (LLR, Log-Likelihood Ratio)는 아래 수학식을 이용하여 산출될 수 있다.In the present invention, the log-likelihood ratio (LLR, Log-Likelihood Ratio) can be calculated using the following equation.

여기서, K0은 같은 클러스터 내에서 같은 위치에서의 0의 개수, K1은 같은 클러스터 내에서 같은 위치에서의 1의 개수, 는 기 설정된 파라미터 값Here, K 0 is the number of 0s at the same position within the same cluster, K 1 is the number of 1s at the same position within the same cluster, is the preset parameter value

이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 더 제공될 수 있다.In addition to this, another method for implementing the present invention, another system, and a computer readable recording medium recording a computer program for executing the method may be further provided.

본 발명에 따르면, DNA 저장 장치에 존재하는 3 가지의 오류를 유발하는 생화학적 특정들을 가지고 있는 염기 배열들을 제외하고, 최종 생성된 염기 배열들의 G와 C의 비율과, 연속된 염기의 개수를 확인하여, 기준 조건을 충족하지 않는 염기 배열을들 제외할 수 있다. 이에 따라, 데이터 복호화 시 오류 발생 가능성을 낮추고 보다 정확도 높은 데이터 복원이 가능하다.According to the present invention, the ratio of G and C and the number of consecutive bases of the finally generated base sequences are checked, except for base sequences having biochemical characteristics that cause three types of errors in the DNA storage device. Thus, base sequences that do not satisfy the standard conditions can be excluded. Accordingly, it is possible to reduce the possibility of errors occurring during data decoding and to restore data with higher accuracy.

본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 장치의 개략적인 블록도이다.
도 2는 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 방법의 순서도이다.
도 3은 본 발명에 따른 DNA 데이터 부호화를 설명하기 위한 도면이다.
도 4는 본 발명에 따른 주소 값을 설명하기 위한 도면이다.
도 5는 본 발명에 따른 2 비트를 염기로 치환하는 것을 설명하기 위한 도면이다.
도 6은 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 복호화 방법의 순서도이다.
도 7은 도 6의 단계 S210의 구체적인 방법의 순서도이다.
1 is a schematic block diagram of a DNA data encoding and decoding apparatus using a low density parity check code according to the present invention.
2 is a flowchart of a DNA data encoding method using a low density parity check code according to the present invention.
3 is a diagram for explaining DNA data encoding according to the present invention.
4 is a diagram for explaining an address value according to the present invention.
5 is a diagram for explaining the substitution of 2 bits with a base according to the present invention.
6 is a flowchart of a DNA data decoding method using a low density parity check code according to the present invention.
7 is a flowchart of a specific method of step S210 of FIG. 6 .

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. Advantages and features of the present invention, and methods of achieving them, will become clear with reference to the detailed description of the following embodiments taken in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, only these embodiments are intended to complete the disclosure of the present invention, and are common in the art to which the present invention belongs. It is provided to fully inform the person skilled in the art of the scope of the invention, and the invention is only defined by the scope of the claims.

본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.Terminology used herein is for describing the embodiments and is not intended to limit the present invention. In this specification, singular forms also include plural forms unless specifically stated otherwise in a phrase. As used herein, "comprises" and/or "comprising" does not exclude the presence or addition of one or more other elements other than the recited elements. Like reference numerals throughout the specification refer to like elements, and “and/or” includes each and every combination of one or more of the recited elements. Although "first", "second", etc. are used to describe various components, these components are not limited by these terms, of course. These terms are only used to distinguish one component from another. Accordingly, it goes without saying that the first element mentioned below may also be the second element within the technical spirit of the present invention.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms (including technical and scientific terms) used in this specification may be used with meanings commonly understood by those skilled in the art to which the present invention belongs. In addition, terms defined in commonly used dictionaries are not interpreted ideally or excessively unless explicitly specifically defined.

공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 구성요소와 다른 구성요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 구성요소들의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들어, 도면에 도시되어 있는 구성요소를 뒤집을 경우, 다른 구성요소의 "아래(below)"또는 "아래(beneath)"로 기술된 구성요소는 다른 구성요소의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 구성요소는 다른 방향으로도 배향될 수 있으며, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.The spatially relative terms "below", "beneath", "lower", "above", "upper", etc. It can be used to easily describe a component's correlation with other components. Spatially relative terms should be understood as including different orientations of elements in use or operation in addition to the orientations shown in the drawings. For example, if you flip a component that is shown in a drawing, a component described as "below" or "beneath" another component will be placed "above" the other component. can Thus, the exemplary term “below” may include directions of both below and above. Components may also be oriented in other orientations, and thus spatially relative terms may be interpreted according to orientation.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그렇지만 용어의 설명은 본 명세서의 이해를 돕기 위한 것이므로, 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.Prior to the description, the meaning of the terms used in this specification will be briefly described. However, it should be noted that the description of terms is intended to help the understanding of the present specification, and is not used in the sense of limiting the technical spirit of the present invention unless explicitly described as limiting the present invention.

본 명세서에서 '장치'는 연산처리를 수행하여 사용자에게 결과를 제공할 수 있는 다양한 장치들이 모두 포함된다. 예를 들어, 장치는 컴퓨터 및 이동 단말기 형태가 될 수 있다. 상기 컴퓨터는 클라이언트로부터 요청을 수신하여 정보처리를 수행하는 서버 형태가 될 수 있다. 또한, 컴퓨터에는 시퀀싱을 수행하는 시퀀싱 장치가 해당될 수 있다. 상기 이동 단말기는 휴대폰, 스마트 폰(smart phone), PDA(personal digital assistants), PMP(portable multimedia player), 네비게이션, 노트북 PC, 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)) 등이 포함될 수 있다.In this specification, 'device' includes all various devices capable of providing results to users by performing calculation processing. For example, the devices may be in the form of computers and mobile terminals. The computer may be in the form of a server receiving a request from a client and processing information. Also, a computer may correspond to a sequencing device that performs sequencing. The mobile terminal includes a mobile phone, a smart phone, a personal digital assistants (PDA), a portable multimedia player (PMP), a navigation device, a notebook PC, a slate PC, a tablet PC, and an ultrabook. ), a wearable device (eg, a watch type terminal (smartwatch), a glass type terminal (smart glass), a head mounted display (HMD)), and the like may be included.

본 명세서에서 '올리고(oligo)' 또는 '올리고 리드(oligo read)'는 특정한 염기(아데닌, 구아닌, 시토신 또는 티민)를 포함하는 복수개의 뉴클레오타이드(nucleotide) 단위체가 합성된 중합체를 의미한다.In the present specification, 'oligo' or 'oligo read' refers to a polymer synthesized from a plurality of nucleotide units including a specific base (adenine, guanine, cytosine or thymine).

본 명세서에서 '시퀀스(sequence)'는 특정한 올리고 리드를 순서대로 판독(시퀀싱)하여 읽어낸 염기 서열을 의미한다. 본 명세서에서 '시퀀스'와 '올리고 리드'는 혼용되어 사용될 수 있다. 예를 들어, '스티치된 시퀀스'는 구체적으로 '스티치된 올리고 리드의 시퀀스'를 의미할 수 있다.In the present specification, 'sequence' refers to a base sequence read by sequentially reading (sequencing) a specific oligo lead. In the present specification, 'sequence' and 'oligo lead' may be used interchangeably. For example, 'stitched sequence' may specifically mean 'sequence of stitched oligo leads'.

도 1은 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 장치의 개략적인 블록도이다.1 is a schematic block diagram of a DNA data encoding and decoding apparatus using a low density parity check code according to the present invention.

도 2는 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 방법의 순서도이다.2 is a flowchart of a DNA data encoding method using a low density parity check code according to the present invention.

도 3은 본 발명에 따른 DNA 데이터 부호화를 설명하기 위한 도면이다.3 is a diagram for explaining DNA data encoding according to the present invention.

도 4는 본 발명에 따른 주소 값을 설명하기 위한 도면이다.4 is a diagram for explaining an address value according to the present invention.

도 5는 본 발명에 따른 2 비트를 염기로 치환하는 것을 설명하기 위한 도면이다.5 is a diagram for explaining the substitution of 2 bits with a base according to the present invention.

도 6은 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 복호화 방법의 순서도이다.6 is a flowchart of a DNA data decoding method using a low density parity check code according to the present invention.

도 7은 도 6의 단계 S210의 구체적인 방법의 순서도이다. 7 is a flowchart of a specific method of step S210 of FIG. 6 .

이하에서 도 1을 참조하여, 본 발명에 따른 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 장치(10)에 대해서 설명하도록 한다.Hereinafter, referring to FIG. 1, a DNA data encoding and decoding apparatus 10 using a low density parity check code according to the present invention will be described.

본 발명에 따른 장치(10)는 외부 장치(미도시)로부터 특정 데이터 파일이 입력되면 하나의 긴 이진수 벡터로 표현한 후 네 가지의 염기로 치환하여 부호화하고 이를 저장할 수 있다. When a specific data file is input from an external device (not shown), the device 10 according to the present invention can express it as one long binary number vector, encode it by replacing it with four bases, and store it.

본 발명에 따른 장치(10)는 외부 장치(미도시)로부터 부호화된 특정 데이터에 대한 복원이 요청되면 염기 배열로 저장된 데이터를 다시 이진수 벡터로 복호화하여 입력된 데이터의 형태로 다시 복호화하여 제공할 수 있다.When restoration of specific encoded data is requested from an external device (not shown), the device 10 according to the present invention decodes the data stored in the nucleotide sequence into a binary number vector, decodes it again in the form of input data, and provides it. there is.

이때, 장치(10)는 데이터를 부호화하고 복호화함에 있어서, 저밀도 패리티 체크 부호(LDPC, low density parity check)를 이용하여 복원된 데이터의 정확도를 높일 수 있다.In this case, in encoding and decoding data, the apparatus 10 may increase the accuracy of restored data by using a low density parity check (LDPC).

본 발명에 따른 장치(10)는 데이터를 DNA로 치환하여 저장하는 DNA 저장 장치일 수 있다.The device 10 according to the present invention may be a DNA storage device that stores data by replacing it with DNA.

이러한 장치(10)는 연산처리를 수행하여 사용자에게 결과를 제공할 수 있는 다양한 장치들이 모두 포함될 수 있다. The device 10 may include all of various devices capable of providing results to users by performing calculation processing.

여기서, 장치(10)는 컴퓨터의 형태가 될 수 있다. 보다 상세하게는, 상기 컴퓨터는 연산처리를 수행하여 사용자에게 결과를 제공할 수 있는 다양한 장치들이 모두 포함될 수 있다. Here, the device 10 may be in the form of a computer. More specifically, the computer may include all of various devices capable of providing results to users by performing calculation processing.

예를 들어, 컴퓨터는 데스크 탑 PC, 노트북(Note Book) 뿐만 아니라 스마트폰(Smart phone), 태블릿 PC, 셀룰러폰(Cellular phone), 피씨에스폰(PCS phone; Personal Communication Service phone), 동기식/비동기식 IMT-2000(International Mobile Telecommunication-2000)의 이동 단말기, 팜 PC(Palm Personal Computer), 개인용 디지털 보조기(PDA; Personal Digital Assistant) 등도 해당될 수 있다. 또한, 헤드마운트 디스플레이(Head Mounted Display; HMD) 장치가 컴퓨팅 기능을 포함하는 경우, HMD장치가 컴퓨터가 될 수 있다. For example, a computer includes not only a desktop PC and a notebook (Note Book) but also a smart phone, a tablet PC, a cellular phone, a PCS phone (Personal Communication Service phone), synchronous/asynchronous A mobile terminal of IMT-2000 (International Mobile Telecommunication-2000), a Palm Personal Computer (Palm PC), and a Personal Digital Assistant (PDA) may also be applicable. In addition, when a Head Mounted Display (HMD) device includes a computing function, the HMD device may become a computer.

또한, 컴퓨터는 클라이언트로부터 요청을 수신하여 정보처리를 수행하는 서버가 해당될 수 있다.In addition, the computer may correspond to a server that receives a request from a client and performs information processing.

그리고, 장치(10)는 통신부(12), 메모리(14) 및 프로세서(16)를 포함할 수 있다. 여기서, 장치(10)는 도 1에 도시된 구성요소보다 더 적은 수의 구성요소나 더 많은 구성요소를 포함할 수 있다.Also, the device 10 may include a communication unit 12 , a memory 14 and a processor 16 . Here, the device 10 may include fewer or more components than those shown in FIG. 1 .

통신부(12)는 장치(10)와 외부 장치(미도시) 사이, 장치(10)와 외부 서버(미도시) 사이 또는 장치(10)와 통신망(미도시) 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다.The communication unit 12 is one that enables wireless communication between the device 10 and an external device (not shown), between the device 10 and an external server (not shown), or between the device 10 and a communication network (not shown). It may contain more than one module.

여기서, 통신망(미도시)은 장치(10), 외부 장치(미도시) 및 외부 서버(미도시) 간의 다양한 정보를 송수신할 수 있다. 통신망은 다양한 형태의 통신망이 이용될 수 있으며, 예컨대, WLAN(Wireless LAN), 와이파이(Wi-Fi), 와이브로(Wibro), 와이맥스(Wimax), HSDPA(High Speed Downlink Packet Access) 등의 무선 통신방식 또는 이더넷(Ethernet), xDSL(ADSL, VDSL), HFC(Hybrid Fiber Coax), FTTC(Fiber to The Curb), FTTH(Fiber To The Home) 등의 유선 통신방식이 이용될 수 있다.Here, a communication network (not shown) may transmit and receive various information between the device 10, an external device (not shown), and an external server (not shown). Various types of communication networks may be used as the communication network, for example, wireless communication methods such as WLAN (Wireless LAN), Wi-Fi, Wibro, Wimax, and HSDPA (High Speed Downlink Packet Access) Alternatively, a wired communication method such as Ethernet, xDSL (ADSL, VDSL), HFC (Hybrid Fiber Coax), FTTC (Fiber to The Curb), FTTH (Fiber To The Home) may be used.

한편, 통신망(미도시)은 상기에 제시된 통신방식에 한정되는 것은 아니며, 상술한 통신방식 이외에도 기타 널리 공지되었거나 향후 개발될 모든 형태의 통신 방식을 포함할 수 있다.On the other hand, the communication network (not shown) is not limited to the communication methods presented above, and may include all other types of communication methods that are widely known or will be developed in the future in addition to the above-described communication methods.

통신부(12)는 장치(10)를 하나 이상의 네트워크에 연결하는 하나 이상의 모듈을 포함할 수 있다.Communication unit 12 may include one or more modules that connect device 10 to one or more networks.

메모리(14)는 장치(10)의 다양한 기능을 지원하는 데이터를 저장할 수 있다. 메모리(14)는 장치(10)에서 구동되는 다수의 응용 프로그램(application program 또는 애플리케이션(application)), 장치(10)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 이러한 응용 프로그램 중 적어도 일부는, 장치(10)의 기본적인 기능을 위하여 존재할 수 있다. 한편, 응용 프로그램은, 메모리(14)에 저장되고, 장치(10) 상에 설치되어, 프로세서(16)에 의하여 상기 장치(10)의 동작(또는 기능)을 수행하도록 구동될 수 있다.Memory 14 may store data supporting various functions of device 10 . The memory 14 may store a plurality of application programs (application programs or applications) running in the device 10 , data for operation of the device 10 , and commands. At least some of these applications may exist for basic functions of the device 10 . Meanwhile, the application program may be stored in the memory 14, installed on the device 10, and driven by the processor 16 to perform an operation (or function) of the device 10.

프로세서(16)는 상기 응용 프로그램과 관련된 동작 외에도, 통상적으로 장치(10)의 전반적인 동작을 제어할 수 있다. 프로세서(16)는 위에서 살펴본 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 메모리(14)에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 또는 기능을 제공 또는 처리할 수 있다.The processor 16 may control general operations of the device 10 in addition to operations related to the application program. The processor 16 may provide or process appropriate information or functions to a user by processing signals, data, information, etc. input or output through the components described above or by driving an application program stored in the memory 14.

또한, 프로세서(16)는 메모리(14)에 저장된 응용 프로그램을 구동하기 위하여, 도 1과 함께 살펴본 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 프로세서(16)는 상기 응용 프로그램의 구동을 위하여, 장치(10)에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작 시킬 수 있다.In addition, the processor 16 may control at least some of the components discussed in conjunction with FIG. 1 in order to drive an application program stored in the memory 14 . Furthermore, the processor 16 may combine and operate at least two or more of the components included in the device 10 to drive the application program.

이하에서는 도 2 내지 도 5를 참조하여, 프로세서(16)가 저밀도 패리티 체크 부호를 이용한 DNA 데이터를 부호화하는 방법을 설명하도록 한다. 여기서, 프로세서(16)의 동작은 장치(10)에서 수행 가능할 수 있다.Hereinafter, with reference to FIGS. 2 to 5, a method of encoding DNA data using a low density parity check code by the processor 16 will be described. Here, the operation of the processor 16 may be performed by the device 10 .

도 2를 참조하면, 프로세서(16)는 특정 데이터를 기 설정된 제1 길이의 제1 이진수 벡터로 변환할 수 있다(S110). Referring to FIG. 2 , the processor 16 may convert specific data into a first binary vector having a preset first length (S110).

다음으로, 프로세서(16)는 상기 제1 이진수 벡터를 기 설정된 제2 길이의 제2 이진수 벡터로 나누되, 기 설정된 제1 개수로 나눌 수 있다(S120).Next, the processor 16 divides the first binary vector into a second binary vector having a preset second length, and divides the first binary vector by a preset first number (S120).

다음으로, 프로세서(16)는 상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬할 수 있다(S130).Next, the processor 16 may vertically align the first number of second binary vectors (S130).

다음으로, 프로세서(16)는 기 설정된 제3 길이의 패리티를 이용하여 가로 방향으로 LDPC(low density parity check) 부호화를 수행할 수 있다(S140).Next, the processor 16 may perform low density parity check (LDPC) encoding in the horizontal direction using a parity having a preset third length (S140).

다음으로, 프로세서(16)는 상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이의 주소 값을 지정할 수 있다(S150).Next, the processor 16 may designate an address value of a preset fourth length to each of second binary number vectors aligned in the vertical direction of a second number corresponding to the sum of the first number and the third length. (S150).

다음으로, 프로세서(16)는 상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트(bit) 당 하나의 DNA로 치환할 수 있다(S160).Next, the processor 16 replaces each of the vertically aligned second binary vectors having a fifth length corresponding to the sum of the second length and the fourth length with one DNA per 2 bits. It can (S160).

다음으로, 프로세서(16)는 상기 DNA로 치환되어 상기 제5 길이의 절반 길이인 상기 제2 개수의 염기 배열 각각에 대해서 천공(puncturing)을 수행할 수 있다(S170).Next, the processor 16 may perform puncturing on each of the base sequences of the second number, each of which is half the length of the fifth length by being substituted with the DNA (S170).

단계 S110에서, 특정 데이터는 부호화가 요청된 데이터 파일일 수 있다. In step S110, specific data may be a data file requested to be encoded.

상술한 바와 같이, 프로세서(16)는 특정 데이터 파일을 제1 길이의 하나의 긴 이진수 벡터로 표현한 후, 단계 S120에서 이를 다시 짧은 길이의 이진수 벡터 여러 개로 나누게 되다. As described above, the processor 16 expresses the specific data file as one long binary number vector of the first length, and then divides it into several short length binary number vectors again in step S120.

그런데 이때, 부호화 마지막 단계에서 2 비트(bit)의 데이터를 하나의 염기로 치환하는데, 데이터는 위에서 언급한 두 가지 생화학적 특성(DNA 내에서 G, C의 비율이 50%에서 멀지 않고, 같은 염기서열이 연속적으로 여러 개 반복되지 않는 것)을 만족하지 못할 가능성이 크다. 따라서, 본 발명은 단계 S120 전에, 난수를 발생시켜 XOR 연산을 통해 데이터를 랜덤화시킬 수 있다. 보다 구체적으로, 본 발명은 상기 제1 이진수 벡터를 상기 제1 개수의 상기 제2 이진수 벡터로 나누기 전에, 난수를 이용한 XOR 연산을 통해 상기 긴 이진수 벡터를 랜덤화하는 단계를 더 포함할 수 있다.However, at this time, in the last stage of encoding, 2 bits of data are replaced with one base, and the data has the two biochemical characteristics mentioned above (the ratio of G and C in DNA is not far from 50%, and the same base sequence is not repeated several times in succession). Accordingly, in the present invention, before step S120, a random number may be generated to randomize data through an XOR operation. More specifically, the present invention may further include randomizing the long binary number vector through an XOR operation using a random number before dividing the first binary number vector by the first number of the second binary number vectors.

이렇게 랜덤화시킨 후, 프로세서(16)는 단계 S120에서, 제1 길이의 긴 이진수 벡터를 제2 길이(npayload)의 짧은 이진수 벡터 제1 개수(KLDPC 개)로 나누어 줄 수 있다. 즉, 상기 제1 길이는 제2 길이(npayload)와 제1 개수(KLDPC 개)를 곱한 값에 상응할 수 있다. 예를 들어, 제2 길이(npayload)는 272 bits로 설정될 수 있고, 제1 개수(KLDPC 개)는 16,572 개로 설정될 수 있다.After randomization, the processor 16 may divide the long binary vector of the first length by the first number (K LDPC ) of short binary vector vectors of the second length (n payload ) in step S120. That is, the first length may correspond to a value obtained by multiplying the second length (n payload ) and the first number (K LDPC ). For example, the second length (n payload ) may be set to 272 bits, and the first number (K LDPC ) may be set to 16,572.

그리고 단계 S130에서, 도 3에 도시된 파란색 블록과 같이 각각 길이가 272 bits인 16,572 개의 이진수 벡터를 세로 방향으로 정렬할 수 있다. 이렇게 동일한 길이를 갖는 여러 개의 이진수 벡터를 세로 방향으로 정렬하는 이유는 길이가 너무 길면 DNA를 합성할 때의 비용이 매우 비싸기 때문이다.In step S130, 16,572 binary vectors each having a length of 272 bits may be vertically aligned as shown in the blue block shown in FIG. 3 . The reason why several binary vectors having the same length are vertically aligned is that the cost of synthesizing DNA is very expensive if the length is too long.

이후, 프로세서(16)는 세로 방향으로 정렬해 준 데이터를 오류 정정 부호 중 현재 가장 널리 쓰이고, 성능이 좋은 저밀도 패리티 체크 부호(LDPC, low density parity check)를 이용하여 부호화 및 복호화 시의 오류를 보호할 수 있다.Thereafter, the processor 16 protects errors during encoding and decoding by using low density parity check (LDPC), which is currently the most widely used among error correction codes and has good performance, for the data aligned in the vertical direction. can do.

이때, LDPC 부호의 부호화는 가로 방향으로 수행할 수 있다. 도 3에 도시된 초록색 블록과 같이, 길이가 제3 길이(MLDPC), 예를 들어, 길이가 1,860 bits인 패리티가 형성되고, 각각의 부호는 가로 방향으로 표현될 수 있다.In this case, encoding of the LDPC code may be performed in a horizontal direction. Like the green block shown in FIG. 3 , a parity having a length of a third length (M LDPC ), eg, 1,860 bits, is formed, and each code may be expressed in a horizontal direction.

이에 따라, 도 3에 도시된 바와 같이, 제1 개수에 상응하는 파란색 블록의 개수와 제3 길이에 상응하는 초록색 블록의 개수가 더해진 값에 상응하는 제2 개수(NLDPC= KLDPC +MLDPC)의 이진수 벡터가 생성되게 된다. 이때, 제2 개수(NLDPC= KLDPC +MLDPC) 이진수 벡터의 길이는 상기 제2 길이(npayload), 예를 들어, 272 bits일 수 있다.Accordingly, as shown in FIG. 3, the second number corresponding to the value obtained by adding the number of blue blocks corresponding to the first number and the number of green blocks corresponding to the third length (N LDPC = K LDPC + M LDPC ), a binary vector of . In this case, the length of the second number (N LDPC = K LDPC +M LDPC ) binary number vector may be the second length (n payload ), for example, 272 bits.

이때, 상술한 바와 같이 DNA 저장 장치에서는 삽입/삭제 오류가 치환 오류에 비해 치명적이다. 하나의 삽입/삭제 오류가 생겨도 데이터의 위치가 하나씩 밀리기 때문에 전체적으로 복원하고자 하는 데이터가 망가지는 경우가 생길 수 있다. 따라서 본 발명과 같이 데이터의 정렬 방향과 부호화의 방향을 수직으로 함으로써 세로 방향으로 정렬된 데이터에 삽입/삭제 오류가 생겨도, 가로 방향의 부호 입장에서는 하나의 비트 오류로 간주하기 하기 때문에 삽입/삭제 오류에 매우 강력한 방법으로 부호화를 수행할 수 있다.At this time, as described above, in the DNA storage device, insertion/deletion errors are more fatal than substitution errors. Even if one insertion/deletion error occurs, data to be restored as a whole may be damaged because the position of the data is shifted one by one. Therefore, as in the present invention, even if an insertion/deletion error occurs in vertically aligned data by making the data arrangement direction and the encoding direction vertical, it is regarded as one bit error from the point of view of the horizontal direction code, so insertion/deletion error Encoding can be performed in a very powerful way.

이렇게 LDPC 부호의 부호화를 통해 오류 정정 부호를 데이터에 적용하고 나면, 각 세로 방향의 데이터와 패리티에 대해 순서를 알아야 이후에 복호화를 진행할 수 있기 때문에, 각각의 데이터의 순서대로 주소를 지정해준다. 총 NLDPC 개의 세로 방향 데이터의 주소를 각각 지정해 주기 위해서는, 최소 의 주소 값이 필요하다. 예를 들어, 의 주소값이 필요하다. 0부터 18,432까지의 수를 이진수로 고치면 도 4와 같이 표현될 수 있다.After applying the error correction code to the data through encoding of the LDPC code in this way, the order of data and parity in each vertical direction must be known so that decoding can proceed later, the addresses are assigned in the order of each data. In order to designate each address of a total of N LDPC vertical data, at least The address value of is required. for example, address is required. If the numbers from 0 to 18,432 are converted into binary numbers, they can be expressed as shown in FIG.

이때, 최종적으로 2bit를 각각 A, C, G, T의 염기로 치환을 하게하게 되는데, 이러한 경우 연속된 염기의 길이가 길게 나타날 수 있다. 그런데 상술한 바와 같이 DNA를 합성하고, 이를 저장하고 읽는 과정에서, 염기 배열이 연속적으로 여러 개 반복되면 오류가 많이 생길 수 있다. 따라서 상기와 같이 주소 값을 지정하여 이진수를 염기로 치환한다면, 같은 염기가 여러 개 반복될 수 있으므로, 0부터 NLDPC까지의 수를 이진수로 치환하여 주소 값으로 쓰는 것은 오류를 많이 발생시킬 수도 있다.At this time, finally, 2 bits are substituted with bases of A, C, G, and T, respectively. In this case, the length of consecutive bases may appear long. However, in the process of synthesizing, storing, and reading DNA as described above, if several nucleotide sequences are continuously repeated, many errors may occur. Therefore, if the binary number is substituted with a base by specifying the address value as described above, since the same base may be repeated several times, replacing a number from 0 to N LDPC with a binary number and writing it as an address value may cause a lot of errors. .

따라서, 본 발명은 단계 S150에서, 프로세서(16)는 부호화를 위해 필요한 주소 값의 개수를 산출하고, 상기 산출된 주소 값 각각에 대해 RS(Reed-Solomon) 부호를 적용하여 부호화하고, 상기 부호화된 주소 값 각각을 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각에 순서대로 지정해줄 수 있다.Therefore, in the present invention, in step S150, the processor 16 calculates the number of address values necessary for encoding, applies RS (Reed-Solomon) codes to each of the calculated address values, and encodes them. Each address value may be sequentially assigned to each of the second binary vectors aligned in the vertical direction.

이때, 상기 주소 값의 개수를 산출함에 있어서, 프로세서(16)는 상기 주소 값의 비트 수에 기초한 전체 경우의 수 중에서 특정 위치의 복수의 비트가 서로 다른 염기인 경우의 수에 상응하는 개수를 상기 주소 값의 개수로 산출할 수 있다.At this time, in calculating the number of address values, the processor 16 calculates the number corresponding to the number of cases in which a plurality of bits at a specific position are different bases among the total number of cases based on the number of bits of the address value. It can be calculated by the number of address values.

NLDPC가 18,432이고, kindex가 15인 경우를 예로 들어 설명하도록 한다. 편의상 15 bits를 8 nt(x1, x2, x3, x4, x5, x6, x7, x8)이라 했을 때, 연속된 염기가 3개를 넘지 않기 위해서는 x3, x4, 그리고 x6, x7이 다른 염기여야 한다. 이러한 경우의 수는 총 9/16만큼 존재한다. 이를 이진수로 바꿔서 생각하면, 가능한 총 215의 주소 값 후보군들 중 215x9/16=18,432개의 주소 값이 산출될 수 있다. 이렇게 산출된 18,432 개의 주소 값을 사용하면 연속된 염기의 수가 최대 3개까지만 존재하는 주소 값들을 구할 수 있다. 이를 통해 연속된 염기의 수를 제한하여 오류가 생길 가능성을 낮출 수 있다. A case in which N LDPC is 18,432 and k index is 15 will be described as an example. For convenience, when 15 bits are 8 nt (x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 ), in order not to exceed 3 consecutive bases, x 3 , x 4 , and x 6 , x 7 must be different bases. There are a total of 9/16 of these cases. If this is converted into binary numbers, 2 15 x9/16 = 18,432 address values among a total of 2 15 possible address value candidates can be calculated. Using the 18,432 address values calculated in this way, address values in which the number of consecutive bases exists only up to 3 can be obtained. Through this, it is possible to reduce the possibility of errors by limiting the number of consecutive bases.

또한 주소 값에 오류가 생기게 되면 순서가 달라지기 때문에, 주소 값에도 오류 정정 부호를 적용할 수 있다. 구체적으로, Reed-Solomon(RS) 부호를 적용하여 부호화할 수 있다. 이때, GF(2m)에서 단축된 (shortened) RS 부호 를 적용하여, 전체 길이 nindex bit = symbol, 주소 값 길이 kindex bit = symbol, 최소 해밍 거리 (minimum hamming distance) dmin, symbol 오류 정정, +1 symbol 오류까지 찾아낼 수 있다.In addition, since the order is changed when an error occurs in the address value, an error correction code can be applied to the address value as well. Specifically, it may be coded by applying a Reed-Solomon (RS) code. At this time, the shortened RS code in GF (2 m ) By applying, the total length n index bits = symbol, address value length k index bit = symbol, minimum hamming distance d min , symbol error correction; +1 Even symbol errors can be found.

예를 들어, m=4, nindex=32, kindex=16 인 경우, 실제로 필요한 주소 값은 15 bit 이기 때문에, 16 bit 중 남은 1 bit는 짝수 패리티(parity)를 붙여 주어, 1 bit 오류를 찾아낼 수 있도록 해줄 수 있다. 따라서 부호화한 주소 값은 총 32 bit가 된다. 이렇게 만들어진 주소 값을 순서대로 각각 랜덤화된 데이터에 붙여주어 길이가 제4 길이+제2 길이 (nindex+npayload) bit 인 벡터를 제2 개수(NLDPC개)만큼 생성한다. For example, if m = 4, n index = 32, k index = 16, since the address value actually needed is 15 bits, the remaining 1 bit among 16 bits is given an even parity to avoid 1 bit error. can help you find it. Therefore, the encoded address value is 32 bits in total. The address values created in this way are sequentially appended to the randomized data, and vectors having a length of 4th length + 2nd length (n index +n payload ) bits are generated as many as the second number (N LDPC ).

그리고 2 bit당 하나의 염기로 치환하면, 최종적으로 길이 nt인 염기 배열이 NLDPC개 생성된다. 예를 들어, nindex가 32이고, npayload가 272인 경우, 152nt의 염기 배열이 NLDPC개 생성될 수 있다.And when substituted with one base per 2 bits, the final length N LDPC nucleotide sequences of nt are generated. For example, when n index is 32 and n payload is 272, N LDPC sequences of 152 nt may be generated.

단계 S160에서, 상기 2 비트는 0 및 1의 개수에 따라 아데닌(A, Adenine), 구아닌(G, Guanine), 시토신(C, Cytosine) 및 티민(T, Thymine) 중 하나로 치환될 수 있다. 도 5를 참조하면, 2비트가 00이면 A로 치환되고, 01이면 C로 치환되고, 10이면 G로 치환되고, 11이면 T로 치환될 수 있다.In step S160, the 2 bits may be substituted with one of adenine (A), guanine (G), cytosine (C), and thymine (T) according to the number of 0's and 1's. Referring to FIG. 5, if 2 bits are 00, they can be substituted with A, if 01, they can be substituted with C, if 10, they can be substituted with G, and if 11, they can be substituted with T.

단계 S170에서, 프로세서(16)는 상기 제2 개수의 염기 배열 중에서, 구아닌(G, Guanine) 및 시토신(C, Cytosine)의 비율이 기준 비율과의 차이가 기 설정된 값보다 큰 염기 배열과 동일한 염기가 기 설정된 횟수 이상 반복되는 염기 배열에 대해서 천공을 수행할 수 있다.In step S170, the processor 16 determines that, among the base sequences of the second number, the ratio of guanine (G) and cytosine (C) is identical to the base sequence in which the difference from the reference ratio is greater than a preset value. Perforation may be performed on a nucleotide sequence in which is repeated a predetermined number of times or more.

구체적으로, 50 퍼센트를 기준으로 했을 때 최종 생성된 NLDPC 개의 염기 배열 중에서 G와 C의 비율의 차이가 기 설정된 값, 예를 들어 30보다 크면(즉, G와 C의 비율이 80퍼센트 이상이거나 20퍼센트 이하인 경우), 해당 염기 배열에 대해서 천공을 수행할 수 있다. 또한, 최종 생성된 NLDPC 개의 염기 배열 중에서 특정 염기가 기 설정된 횟수, 예를 들어 4번 이상 반복되는 경우, 해당 염기 배열에 대해서 천공을 수행할 수 있다.Specifically, when the difference in the ratio of G and C among the N LDPC nucleotide sequences finally generated on the basis of 50 percent is greater than a preset value, for example, 30 (i.e., the ratio of G and C is 80 percent or more, 20% or less), perforation may be performed on the corresponding nucleotide sequence. In addition, when a specific base is repeated a predetermined number of times, for example, 4 or more times among the finally generated N LDPC base sequences, perforation may be performed on the corresponding base sequence.

최종 생성된 염기 배열들의 G와 C의 비율과, 연속된 염기의 개수를 확인하여, 미리 설정된 기준에서 크게 벗어는 특정 염기 배열들을 찾아내어 제거할 수 있다. 이러한 염기 배열들은 데이터 복원 시 오류율을 높이기 때문에 제거할 필요성이 있다. 또한, 본 발명은 LDPC 부호를 이용하여 부호화를 하기 때문에, 염기 배열 천공(puncturing)을 통해 특정 올리고 시퀀스들을 합성하지 않음으로써 오류를 유발하는 생화학적 특성들을 가지고 있는 염기 배열들을 제외할 수 있다. By checking the ratio of G and C of the finally generated base sequences and the number of consecutive bases, it is possible to find and remove specific base sequences that deviate greatly from a preset standard. Since these nucleotide sequences increase the error rate in data restoration, it is necessary to remove them. In addition, since the present invention uses the LDPC code for encoding, it is possible to exclude base sequences having biochemical properties that cause errors by not synthesizing specific oligo sequences through base sequence puncturing.

이하에서는 도 6 및 도 7을 참조하여, 프로세서(16)가 저밀도 패리티 체크 부호를 이용한 DNA 데이터를 복호화하는 방법을 설명하도록 한다. 여기서, 프로세서(16)의 동작은 장치(10)에서 수행 가능할 수 있다.Hereinafter, with reference to FIGS. 6 and 7, a method for the processor 16 to decode DNA data using a low density parity check code will be described. Here, the operation of the processor 16 may be performed by the device 10 .

도 6을 참조하면, 프로세서(16)는 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행할 수 있다(S210). 여기서, N은 자연수일 수 있다. Referring to FIG. 6 , the processor 16 may perform first LDPC decoding and second LDPC decoding by extracting N base sequences from among the encoded second number of base sequences (S210). Here, N may be a natural number.

상기 N개의 염기 배열은 서로 다르거나 적어도 두개가 동일할 수 있다. 예를 들어, 4개의 염기 배열이 추출됐다고 가정했을 때, 4개의 염기 배열은 AT, AC, TG, CG와 같이 각각 다를 수 있고, 또는 AT, AC, CG, CG와 같이 4개 중 2개의 염기 배열이 중복될 수도 있다. The N base sequences may be different from each other or at least two may be the same. For example, assuming that 4 base sequences are extracted, the 4 base sequences may be different, such as AT, AC, TG, and CG, or two bases out of four, such as AT, AC, CG, and CG. Arrays may overlap.

이때, 상기 N개의 염기 배열이 서로 다른 경우에 상기 N은 상기 제2 개수보다 작거나 동일할 수 있다. In this case, when the N base sequences are different from each other, the N number may be less than or equal to the second number.

상기 N개의 염기 배열이 적어도 두개가 동일한 경우에 상기 N은 상기 제2 개수보다 작을수도 있고 클 수도 있으며, 상기 제2 개수와 동일할 수도 있다. 즉, 제2 개수의 염기 배열 중에서 N개의 염기 배열을 추출하는데 이때 특정 염기 배열이 중복되게 추출하는 경우, 중복되는 염기 배열의 개수에 따라 추출된 N개의 염기 배열이 제2 개수의 염기 배열보다 적을 수도 있고 많을 수도 있고 두개가 동일할 수도 있다. When at least two of the N nucleotide sequences are the same, N may be smaller or larger than the second number, or may be equal to the second number. That is, when N base sequences are extracted from among the second number of base sequences, and at this time, when a specific base sequence is extracted overlapping, the number of N base sequences extracted according to the number of overlapping base sequences is less than the second number of base sequences. There may be many, or both may be the same.

도 7을 참조하면, 단계 S210에서, 프로세서(16)는 상기 추출된 N개의 염기 배열 각각의 주소 값에 대한 RS 복호화 및 짝수 패리티 복호화를 수행할 수 있다(S211).Referring to FIG. 7 , in step S210, the processor 16 may perform RS decoding and even parity decoding on the address values of each of the extracted N base sequences (S211).

다음으로, 프로세서(16)는 상기 복호화된 결과에 따라 동일한 주소 값을 가지는 염기 배열을 그룹핑할 수 있다(S212).Next, the processor 16 may group base sequences having the same address value according to the decryption result (S212).

복호화 과정에서는 저장된 DNA 염기 배열들을 오류 없이 완벽하게 기존의 데이터로 복원해야 한다. In the decoding process, the stored DNA sequences must be completely restored to the original data without errors.

그러기 위해서 먼저, 장치(10)에 저장되어 있는 부호화된 DNA 염기 배열들을 무작위로 추출하여 읽어낼 수 있다. 이때, 읽어낸 염기 배열들 중 길이가 nt 인 염기 배열들만 남겨 놓는다. 이렇게 무작위로 추출한 같은 길이의 DNA 염기 배열들의 주소 값을 먼저 찾는다. 염기 배열의 앞 nindex bit = nt를 확인하여 RS 부호의 복호화를 수행할 수 있다. 이때, 복호화에 실패하면 특정 염기 배열은 버리고, 그 염기 배열이 NLDPC 개의 주소 값에 해당하는지를 확인할 수 있다. 부호화 과정에서 설명한 방법으로 복호화 과정에서도 정확히 NLDPC 가지의 주소 값을 찾아낼 수 있다. 따라서, NLDPC 개의 주소 값에 해당하지 않는다면, 부호화한 데이터가 아니기 때문에 해당 데이터를 버린다. NLDPC 가지의 주소 값에 해당하면 마지막으로 짝수 패리티를 확인하여, 이를 만족하지 않는다면 해당 데이터를 버린다. 그리고 남은 DNA 염기 배열들을 같은 주소 값끼리 모으고, 빈 주소 값의 데이터는 남겨놓는다.To do so, first, coded DNA base sequences stored in the device 10 may be randomly extracted and read. At this time, the length of the read nucleotide sequences Only nucleotide sequences of nt are left. First, the address values of the randomly extracted DNA nucleotide sequences of the same length are searched. Front n index bit of base sequence = RS code decoding can be performed by checking nt. At this time, if decoding fails, a specific nucleotide sequence is discarded, and it can be checked whether the nucleotide sequence corresponds to N LDPC address values. With the method described in the encoding process, it is possible to accurately find address values of N LDPC branches even in the decoding process. Therefore, if it does not correspond to N LDPC address values, the corresponding data is discarded because it is not encoded data. If it corresponds to the address values of N LDPC branches, even parity is finally checked, and if it is not satisfied, the corresponding data is discarded. Then, the remaining DNA sequences are gathered together with the same address value, and the data of the empty address value is left.

다음으로, 프로세서(16)는 상기 그룹핑된 염기 배열에서 주소 값을 제거한 후 이진수 벡터로 치환할 수 있다(S213).Next, the processor 16 may remove the address value from the grouped nucleotide sequence and replace it with a binary vector (S213).

다음으로, 프로세서(16)는 상기 주소 값에 염기 배열의 존재 여부에 따라 상기 치환된 이진수 벡터 각각에 대해 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출할 수 있다(S214).Next, the processor 16 may calculate a log-likelihood ratio (LLR) for each of the permuted binary vectors according to whether a nucleotide sequence exists in the address value (S214).

다음으로, 프로세서(16)는 상기 산출된 로그 우도 비를 상기 주소 값의 순서에 따라 세로 방향으로 정렬할 수 있다(S215).Next, the processor 16 may vertically arrange the calculated log-likelihood ratios according to the order of the address values (S215).

다음으로, 프로세서(16)는 상기 세로 방향으로 정렬된 로그 우도 비를 가로 방향으로 제1 LDPC 복호화 수행할 수 있다(S216).Next, the processor 16 may perform first LDPC decoding on the log likelihood ratios aligned in the vertical direction in the horizontal direction (S216).

다음으로, 프로세서(16)는 상기 제1 LDPC 복호화된 결과에 기초하여, 제2 LDPC 복호화 수행할 수 있다(S217).Next, the processor 16 may perform second LDPC decoding based on the result of the first LDPC decoding (S217).

다음으로, 프로세서(16)는 상기 제2 LDPC 복호화된 결과에 기초하여, 상기 최종 복호화의 성공 여부를 판단할 수 있다(S218).Next, the processor 16 may determine whether the final decoding is successful based on the result of the second LDPC decoding (S218).

본 발명은 실시예에 따라, LDPC 부호의 부호의 경판정 복호법(hard-decision decoding) 및 연판정 복호법(soft-decision decoding)을 이용할 수 있다.According to embodiments of the present invention, hard-decision decoding and soft-decision decoding of codes of LDPC codes may be used.

경판정 복호법을 사용하는 경우에는, 복호화된 주소 값을 통해 같은 주소 값을 가지는 염기 배열들을 모아, 첫 번째 주소 값부터 모인 염기 배열들에서 주소 값을 제거한 후, 도 5에 도시된 표를 이용하여 이진수로 치환할 수 있다. 이때, 주소 값에 모인 염기 배열이 없으면 빈 공간으로 남겨두고, 주소 값에 염기 배열이 하나라도 존재하면, 각 위치마다 0 또는 1 중에 더 많은 값으로 대표 값을 지정하여 모든 주소 값에 대해 하나의 염기 배열만을 선택하도록 할 수 있다.In the case of using the hard decision decoding method, base sequences having the same address value are collected through the decrypted address value, address values are removed from the base sequences gathered from the first address value, and then the table shown in FIG. 5 is used. can be converted into binary numbers. At this time, if there is no nucleotide sequence gathered in the address value, it is left as an empty space, and if there is even one nucleotide sequence in the address value, a representative value is designated with a higher value among 0 or 1 for each position, and one for all address values. It is possible to select only the nucleotide sequence.

연판정 복호법을 사용하는 경우에는, 모든 주소 값에 대해 염기 배열의 각 비트에 대하여 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출할 수 있다.In the case of using the soft decision decoding method, a log-likelihood ratio (LLR) can be calculated for each bit of a base sequence for all address values.

단계 S214에서, 상기 로그 우도 비 (LLR, Log-Likelihood Ratio)는 아래 [수학식 1]을 이용하여 산출될 수 있다.In step S214, the log-likelihood ratio (LLR) may be calculated using Equation 1 below.

여기서, K0은 같은 클러스터 내에서 같은 위치에서의 0의 개수, K1은 같은 클러스터 내에서 같은 위치에서의 1의 개수, 는 기 설정된 파라미터 값일 수 있다.Here, K 0 is the number of 0s at the same position within the same cluster, K 1 is the number of 1s at the same position within the same cluster, may be a preset parameter value.

상술한 바와 같이, 복호화된 주소 값을 통해 같은 주소 값을 가지는 염기 배열들을 그룹핑하고, 첫 번째 주소 값부터 모인 염기 배열들에서 주소 값을 제거한 후, 도 5에 도시된 표를 이용하여 이진수로 치환할 수 있다. 이때, 주소 값에 모인 염기 배열이 없으면 로그 우도 비를 전부 0으로 지정할 수 있다. 주소 값에 염기 배열이 하나라도 존재하면, 치환된 이진수 벡터들에 대해 각 위치에서의 0의 개수와 1의 개수를 세고, 각각을 k0, k1이라 한다. 이때, 이전 단계에서 모두 같은 길이의 염기 배열들만 사용했기 때문에, 이진수 벡터의 길이도 모두 같게 된다. k0, k1 그리고 실험적인 값 =0.04을 이용하여 상기 [수학식 1]을 계산한다. 그 결과, 모든 주소 값의 염기 배열의 각 위치마다 로그 우도 비를 구할 수 있다. 로그 우도 비를 주소 값 순서대로 세로 방향으로 배열하고, 가로 방향이 LDPC 부호가 된다. 따라서, 최종적으로 길이 NLDPC인 LDPC 부호 npayload가 도출되고, npayload 개의 부호를 오류 없이 완벽히 복호화하면 전체 복호화가 성공한 것이라 할 수 있다.As described above, base sequences having the same address value are grouped through the decoded address value, address values are removed from the base sequences gathered from the first address value, and then replaced with binary numbers using the table shown in FIG. 5 can do. At this time, if there is no nucleotide sequence gathered in the address value, all log likelihood ratios may be designated as 0. If there is even one nucleotide sequence in the address value, the number of 0's and 1's at each position are counted for the substituted binary vectors, and they are called k 0 and k 1 , respectively. At this time, since only base sequences of the same length were used in the previous step, the lengths of the binary vectors are all the same. k 0 , k 1 and experimental values = 0.04 is used to calculate [Equation 1]. As a result, the log-likelihood ratio can be obtained for each position of the nucleotide sequence of all address values. The log-likelihood ratios are arranged in the vertical direction in the order of address values, and the horizontal direction becomes the LDPC code. Accordingly, if an LDPC code n payload having a length of N LDPC is finally derived and n payload codes are completely decoded without errors, it can be said that the entire decoding is successful.

본 발명의 일 실시예에 따라, 길이 NLDPC인 npayload개의 부호들에 대해 모두 연판정 복호법을 수행할 수 있다. According to an embodiment of the present invention, soft decision decoding may be performed on all n payload codes of length N LDPC .

단계 S216에서, 프로세서(16)는 각 주소 값에 대응하는 염기 배열 각각에 대해, 제1 LDPC 복호화 수행 전과 후의 바뀐 비트 수를 계산하고, 상기 바뀐 비트 수가 기 설정된 개수 이상인 염기 배열에 대해 상기 로그 우도 비를 0으로 초기화할 수 있다.In step S216, the processor 16 calculates the number of changed bits before and after performing the first LDPC decoding for each base sequence corresponding to each address value, and calculates the log likelihood for the base sequence in which the number of changed bits is equal to or greater than a preset number. You can initialize the ratio to 0.

단계 S217에서, 프로세서(16)는 상기 제1 LDPC 복호화에 실패한 가로방향 LPDC 부호어에 대해서만 제2 LDPC 복호화를 수행할 수 있다.In step S217, the processor 16 may perform second LDPC decoding only on the horizontal LPDC codewords for which the first LDPC decoding fails.

단계 S218에서, 프로세서(16)는 상기 제1 LDPC 복호화된 모든 염기 배열과, 상기 제1 LDPC 복호화 및 상기 제2 LDPC 복호화된 모든 염기 배열에 대한 패리티 검사 행렬을 통해 최종 복호화의 성공 여부를 판단할 수 있다.In step S218, the processor 16 determines whether final decoding is successful through parity check matrices for all the first LDPC-decoded base sequences and all the first LDPC-decoded and second LDPC-decoded base sequences. can

보다 구체적으로, npayload개의 부호에 대해 연판정 복호법을 모두 수행한 후, NLDPC개의 각 위치에 대해서 복호화 전후를 비교하여 몇 개의 비트(bit)가 고쳐졌는지 확인할 수 있다. 다시 말해, NLDPC개의 각 위치, 주소 값에 각각 npayload 비트(bit)가 존재하는데, npayload 비트(bit) 중 복호화 후에 바뀐 비트(bit)수를 계산한다. 이렇게 바뀐 비트 수를 계산하는 이유는 바뀐 비트 수가 많다면, 그 염기 배열은 오류가 많았던 배열이라 생각할 수 있고, 오류가 많았다면 전체적으로 연판정 복호화 과정에서 다른 위치들에 안 좋은 영향을 미치는 이진수 벡터일 가능성이 크기 때문이다. 따라서, 각 위치마다 δ 값을 정하여, 최대 npayload 비트(bit) 중 δ 비트(bit) 이상이 바뀌었다면, 복호화에 안 좋은 영향을 미칠 가능성이 크기 때문에 그 위치의 세로로 구성된 이진수 벡터의 로그 우도 비를 0으로 초기화할 수 있다. 정해진 δ 값보다 많은 bit가 바뀐 세로의 이진수 벡터를 모두 초기화 시킨 후, 첫 번째 연판정 복호화(제1 LDPC 복호화)에서 복호화에 실패한 부호들만 다시 복호화(제2 LDPC 복호화)를 진행한다. 이때, 최종 복호화의 성공 및 실패 여부는 LDPC 부호의 패리티 검사 행렬을 통해 확인한다. 첫 번째 복호화에서 성공한 부호들은 성공한 값 그대로를 사용한다.More specifically, after performing all soft decision decoding on n payload codes, it is possible to determine how many bits have been corrected by comparing before and after decoding for each of the N LDPC positions. In other words, there are n payload bits in each of the N LDPC locations and address values, and the number of changed bits after decoding among the n payload bits is calculated. The reason for calculating the number of changed bits in this way is that if the number of changed bits is large, the base sequence can be considered an array with many errors, and if there are many errors, it is a binary vector that adversely affects other positions in the soft decision decoding process as a whole. because it is highly probable. Therefore, if a value of δ is set for each position and more than δ bits of up to n payload bits are changed, there is a high possibility of adversely affecting decoding, so the log likelihood of the binary vector consisting of the vertical of the position You can initialize the ratio to 0. After initializing all of the vertical binary vectors in which more bits than a predetermined value of δ have been changed, only codes that have failed to be decoded in the first soft decision decoding (first LDPC decoding) are decoded again (second LDPC decoding). At this time, success or failure of final decoding is checked through the parity check matrix of the LDPC code. Codes that succeeded in the first decoding use the successful values as they are.

또한, 본 발명의 일 실시예에 따라, 프로세서(16)는 제1 LDPC 복호화에서, 같은 주소 값에 대한 복호 전후의 염기 배열의 편집 거리를 구할 수 있다. 여기서, 편집 거리란 두 염기 배열의 유사도를 알려주는 값으로, 치환, 삽입 및 삭제 오류의 개수를 알려줄 수 있다. 따라서, 편집 거리에 비해 해밍 거리가 크다면, 기존의 염기 배열에 삽입/삭제 오류가 존재했음을 추측할 수 있어, 편집 거리를 이용하여 삽입/삭제 오류의 여부를 판단하고 그 위치를 찾아낼 수 있다.Also, according to an embodiment of the present invention, the processor 16 may obtain an editing distance of base sequences before and after decoding for the same address value in the first LDPC decoding. Here, the editing distance is a value indicating similarity between two nucleotide sequences, and may indicate the number of substitution, insertion, and deletion errors. Therefore, if the Hamming distance is greater than the editing distance, it can be inferred that an insertion/deletion error existed in the existing base sequence, and the insertion/deletion error can be determined using the editing distance and the location thereof can be found. .

다음으로, 프로세서(16)는 상기 복호화된 결과에 기초하여, 상기 제1 개수의 제2 이진수 벡터를 상기 지정된 주소 값의 순서에 따라 상기 제1 길이의 제1 이진수 벡터로 통합할 수 있다(S220).Next, the processor 16 may combine the second binary vectors of the first number into a first binary vector of the first length according to the order of the designated address values, based on the decoded result (S220). ).

상술한 바와 같이, 제1 LDPC 복호화 및 제1 LDPC 복호화가 모두 완료되었을 때, 부호 하나라도 패리티 검사 행렬을 통과하지 못했다면 복호화가 실패한 것으로 판단될 수 있다. As described above, when the first LDPC decoding and the first LDPC decoding are both completed, if even one code does not pass the parity check matrix, it may be determined that decoding has failed.

반면에, 제1 LDPC 복호화 및 제1 LDPC 복호화가 모두 완료되었을 때, 부호들이 모두 패리티 검사 행렬을 통과했을 경우에는, 세로 방향의 제2 이진수 벡터들을 하나의 긴 벡터(제1 이진수 벡터)로 통합할 수 있다. 하나의 긴 벡터는 기존의 데이터를 난수와 XOR 시킨 결과 값이기 때문에, 복호화 결과를 다시 같은 난수 배열과 XOR 시켜서 기존의 데이터를 복원할 수 있다. 이때, 복원된 데이터가 기존의 데이터와 일치하면 장치(10)를 이용한 데이터의 저장 및 복원이 성공한 것으로 판단할 수 있다.On the other hand, when both the first LDPC decoding and the first LDPC decoding are completed and all codes pass through the parity check matrix, the second binary vectors in the vertical direction are integrated into one long vector (first binary vector) can do. Since one long vector is the result of XORing the original data with a random number, the original data can be restored by XORing the decoding result with the same random number array again. At this time, if the restored data matches the existing data, it may be determined that the data storage and restoration using the device 10 is successful.

한편, 단계 S218에서, 상기 최종 복호화가 실패한 것으로 판단된 경우, 프로세서(16)는 상기 부호화된 상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추가로 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 과정을 반복할 수 있다. Meanwhile, in step S218, when it is determined that the final decoding has failed, the processor 16 additionally extracts N base sequences from among the encoded second number of base sequences to perform first LDPC decoding and second LDPC decoding The process of performing can be repeated.

도 2, 도 6 및 도 7은 단계 S110 내지 단계 S218을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 2, 도 6 및 도 7에 기재된 순서를 변경하여 실행하거나 단계 S110 내지 단계 S218 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 2, 도 6 및 도 7은 시계열적인 순서로 한정되는 것은 아니다.Although FIGS. 2, 6, and 7 describe steps S110 to S218 as being sequentially executed, this is merely an example of the technical idea of the present embodiment, and the common knowledge in the art to which this embodiment belongs Those who have various modifications and variations by changing and executing the order described in FIGS. 2, 6 and 7 or executing one or more steps of steps S110 to S218 in parallel to the extent that does not deviate from the essential characteristics of the present embodiment. 2, 6 and 7 are not limited to a time-series order.

이상에서 전술한 본 발명의 일 실시예에 따른 방법은, 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다. 여기서, 컴퓨터는 앞에서 설명한 장치(10)일 수 있다.The method according to an embodiment of the present invention described above may be implemented as a program (or application) to be executed in combination with a computer, which is hardware, and stored in a medium. Here, the computer may be the device 10 described above.

상기 전술한 프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.The aforementioned program is C, C++, JAVA, machine language, etc. It may include a code coded in a computer language of. These codes may include functional codes related to functions defining necessary functions for executing the methods, and include control codes related to execution procedures necessary for the processor of the computer to execute the functions according to a predetermined procedure. can do. In addition, these codes may further include memory reference related codes for which location (address address) of the computer's internal or external memory should be referenced for additional information or media required for the computer's processor to execute the functions. there is. In addition, when the processor of the computer needs to communicate with any other remote computer or server in order to execute the functions, the code uses the computer's communication module to determine how to communicate with any other remote computer or server. It may further include communication-related codes for whether to communicate, what kind of information or media to transmit/receive during communication, and the like.

본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.Steps of a method or algorithm described in connection with an embodiment of the present invention may be implemented directly in hardware, implemented in a software module executed by hardware, or implemented by a combination thereof. A software module may include random access memory (RAM), read only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, hard disk, removable disk, CD-ROM, or It may reside in any form of computer readable recording medium well known in the art to which the present invention pertains.

이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described with reference to the accompanying drawings, those skilled in the art to which the present invention pertains can be implemented in other specific forms without changing the technical spirit or essential features of the present invention. you will be able to understand Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive.

10: 장치
12: 통신부
14: 메모리
16: 프로세서
10: device
12: Communication department
14: memory
16: processor

Claims (25)

장치에 의해 수행되는 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 방법에 있어서,
특정 데이터를 기 설정된 제1 길이(bit)의 제1 이진수 벡터로 변환하는 단계;
상기 제1 이진수 벡터를 기 설정된 제1 개수의 기 설정된 제2 길이(bit)의 제2 이진수 벡터가 되도록 나누는 단계;
상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬하는 단계;
기 설정된 제3 길이(bit)의 패리티를 이용하여 상기 제2 이진수 벡터를 가로 방향으로 LDPC 부호화를 수행하는 단계;
상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이(bit)의 주소 값을 지정하는 단계;
상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이(bit)의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트 당 아데닌(A, Adenine), 구아닌(G,Guanine), 시토신(C, Cytosine) 및 티민(T, Thymine) 중 하나로 치환하는 단계; 및
상기 치환을 통해 상기 제5 길이의 절반 길이(nt)로 형성되는 염기 배열에 대해서 천공(puncturing)을 수행하는 단계;를 포함하는, 방법.
In the DNA data encoding and decoding method using the low density parity check code performed by the device,
Converting specific data into a first binary vector having a first predetermined length (bit);
Dividing the first binary vector into a second binary vector of a preset number of bits and a preset second length (bit);
aligning the first number of second binary vectors in a vertical direction;
performing LDPC encoding on the second binary vector in a horizontal direction using parity of a preset third length (bit);
assigning an address value of a preset fourth length (bit) to each of a second binary vector of a second number corresponding to the sum of the first number and the third length;
Each of the vertically aligned second binary vectors of a fifth length (bit) corresponding to the sum of the second length and the fourth length is adenine (A, Guanine) and guanine (G) per 2 bits , Substituting one of cytosine (C, Cytosine) and thymine (T, Thymine); and
A method comprising: performing puncturing on a nucleotide sequence formed to a half length (nt) of the fifth length through the substitution.
제1 항에 있어서,
상기 제1 이진수 벡터를 상기 제1 개수의 상기 제2 이진수 벡터가 되도록 나누기 전에,
난수를 이용한 XOR 연산을 통해 상기 제1 이진수 벡터를 랜덤화하는 단계;를 더 포함하는, 방법.
According to claim 1,
Before dividing the first binary vector into the first number of the second binary vector,
Randomizing the first binary number vector through an XOR operation using random numbers; further comprising a method.
제1 항에 있어서,
상기 주소 값 지정 단계는,
부호화를 위해 필요한 주소 값의 개수를 산출하는 단계;
상기 산출된 주소 값 각각에 대해 RS(Reed-Solomon) 부호를 적용하여 부호화하는 단계; 및
상기 부호화된 주소 값 각각을 상기 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 순서대로 지정해주는 단계;를 포함하는, 방법.
According to claim 1,
In the step of specifying the address value,
Calculating the number of address values required for encoding;
Encoding by applying a Reed-Solomon (RS) code to each of the calculated address values; and
and assigning each of the encoded address values to each of the second binary number vectors arranged in the vertical direction of the second number in order.
제3 항에 있어서,
상기 주소 값의 개수를 산출하는 단계는,
상기 주소 값의 비트 수에 기초한 전체 경우의 수 중에서 상기 염기 배열 내의 특정한 위치의 연속된 두 개의 염기가 서로 다른 경우의 수에 상응하는 개수를 상기 주소 값의 개수로 산출하는, 방법.
According to claim 3,
In the step of calculating the number of address values,
Among the total number of cases based on the number of bits of the address value, the number corresponding to the number of cases in which two consecutive bases at a specific position in the base sequence are different from each other is calculated as the number of address values.
제3 항에 있어서,
상기 주소 값은 짝수 패리티를 포함하는, 방법.
According to claim 3,
Wherein the address value comprises even parity.
제1 항에 있어서,
상기 치환 단계는,
상기 2 비트에 포함된 0 및 1의 개수에 따라 상기 2 비트를 상기 아데닌(A, Adenine), 상기 구아닌(G, Guanine), 상기 시토신(C, Cytosine) 및 상기 티민(T, Thymine) 중 하나로 치환하는, 방법.
According to claim 1,
The substitution step is
According to the number of 0s and 1s included in the 2 bits, the 2 bits are converted into one of the adenine (A), the guanine (G), the cytosine (C), and the thymine (T). How to substitute.
제6 항에 있어서,
상기 천공 수행 단계는,
상기 제2 개수의 염기 배열 중에서, 상기 구아닌(G, Guanine) 및 상기 시토신(C, Cytosine)의 비율이 기준 비율과의 차이가 기 설정된 값보다 큰 염기 배열과 동일한 염기가 기 설정된 횟수 이상 반복되는 염기 배열에 대해서 천공을 수행하는 것인, 방법.
According to claim 6,
The drilling step,
Among the base sequences of the second number, the same base sequence as the base sequence in which the ratio of the guanine (G, Guanine) and the cytosine (C, Cytosine) ratio is greater than a predetermined value from the reference ratio is repeated more than a predetermined number of times A method of performing perforation on a nucleotide sequence.
제1 항에 있어서,
상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 단계(여기서 N은 자연수); 및
상기 복호화된 결과에 기초하여, 상기 제1 개수의 제2 이진수 벡터를 상기 지정된 주소 값의 순서에 따라 상기 제1 길이의 제1 이진수 벡터로 통합하는 단계;를 더 포함하고,
상기 N개의 염기 배열은 서로 다르거나 적어도 두개가 동일하고,
상기 N개의 염기 배열이 서로 다른 경우에 상기 N은 상기 제2 개수보다 작거나 동일하고,
상기 N개의 염기 배열이 적어도 두개가 동일한 경우에 상기 N은 상기 제2 개수보다 큰, 방법.
According to claim 1,
extracting N base sequences from among the second number of base sequences and performing first LDPC decoding and second LDPC decoding (where N is a natural number); and
Based on the decoded result, integrating the second binary vectors of the first number into a first binary vector of the first length according to the order of the designated address values; Further comprising,
The N base sequences are different from each other or at least two are the same,
When the N base sequences are different from each other, the N is less than or equal to the second number,
When at least two of the N nucleotide sequences are identical, the N is greater than the second number.
제8 항에 있어서,
상기 제1 LDPC 복호화 및 제2 LDPC 복호화 수행 단계는,
상기 추출된 N개의 염기 배열 각각의 주소 값에 대한 RS 복호화 및 짝수 패리티 복호화를 수행하는 단계;
상기 복호화된 결과에 따라 동일한 주소 값을 가지는 염기 배열을 그룹핑하는 단계;
상기 그룹핑된 염기 배열에서 주소 값을 제거한 후 이진수 벡터로 치환하는 단계;
상기 주소 값에 염기 배열의 존재 여부에 따라 상기 치환된 이진수 벡터 각각에 대해 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출하는 단계;
상기 산출된 로그 우도 비를 상기 주소 값의 순서에 따라 세로 방향으로 정렬하는 단계;
상기 세로 방향으로 정렬된 로그 우도 비를 가로 방향으로 제1 LDPC 복호화 수행하는 단계;
상기 제1 LDPC 복호화된 결과에 기초하여, 제2 LDPC 복호화 수행하는 단계; 및
상기 제2 LDPC 복호화된 결과에 기초하여, 최종적으로 복호화에 성공하였는지 여부를 판단하는 단계;를 포함하는, 방법.
According to claim 8,
The first LDPC decoding and second LDPC decoding steps are performed,
performing RS decoding and even parity decoding on the address value of each of the extracted N base sequences;
grouping base sequences having the same address value according to the decryption result;
removing address values from the grouped nucleotide sequences and replacing them with binary vectors;
Calculating a log-likelihood ratio (LLR) for each of the substituted binary vectors according to whether a nucleotide sequence exists in the address value;
arranging the calculated log-likelihood ratios in a vertical direction according to the order of the address values;
performing first LDPC decoding on the log-likelihood ratios aligned in the vertical direction in a horizontal direction;
performing second LDPC decoding based on the result of the first LDPC decoding; and
Based on the result of the second LDPC decryption, finally determining whether decoding is successful or not;
제9 항에 있어서,
상기 제1 LDPC 복호화 수행 단계는,
각 주소 값에 대응하는 염기 배열 각각에 대해, 제1 LDPC 복호화 수행 전과 후의 바뀐 비트 수를 계산하는 단계; 및
상기 바뀐 비트 수가 기 설정된 개수 이상인 염기 배열에 대해 상기 로그 우도 비를 0으로 초기화하는 단계;를 포함하고,
상기 제2 LDPC 복호화 수행 단계는,
상기 제1 LDPC 복호화에 실패한 로그 우도 비를 가로방향으로 제2 LDPC 복호화를 수행하고,
상기 최종 복호화의 성공 여부를 판단하는 단계는,
상기 제1 LDPC 복호화된 모든 염기 배열과, 상기 제1 LDPC 복호화 및 상기 제2 LDPC 복호화된 모든 염기 배열에 대한 패리티 검사 행렬을 통해 최종적으로 복호화에 성공하였는지 여부를 판단하는, 방법.
According to claim 9,
In the first LDPC decoding step,
calculating the number of changed bits before and after first LDPC decoding is performed for each base sequence corresponding to each address value; and
Including; initializing the log likelihood ratio to 0 for a nucleotide sequence in which the number of changed bits is greater than or equal to a predetermined number,
In the second LDPC decoding step,
Performing second LDPC decoding in a horizontal direction on the log-likelihood ratio for which the first LDPC decoding failed;
The step of determining whether the final decryption is successful,
The method of determining whether decoding is finally successful through a parity check matrix for all the first LDPC-decoded base sequences and all the first LDPC-decoded and second LDPC-decoded base sequences.
제10 항에 있어서,
상기 최종적으로 복호화에 실패한 것으로 판단된 경우,
상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추가로 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 과정을 반복하는, 방법.
According to claim 10,
When it is finally determined that the decryption has failed,
The method of repeating the process of performing first LDPC decoding and second LDPC decoding by additionally extracting N base sequences from among the second number of base sequences.
제9 항에 있어서,
상기 로그 우도 비 (LLR, Log-Likelihood Ratio)는 아래 수학식을 이용하여 산출되는, 방법.

여기서, K0은 같은 주소 값을 가지는 염기 배열들의 같은 위치에서의 0의 개수, K1은 같은 주소 값을 가지는 염기 배열들의 같은 위치에서의 1의 개수, 는 기 설정된 파라미터 값
According to claim 9,
The log-likelihood ratio (LLR, Log-Likelihood Ratio) is calculated using the equation below.

Here, K 0 is the number of 0s at the same position of base sequences having the same address value, K 1 is the number of 1s at the same position of base sequences having the same address value, is the preset parameter value
컴퓨터인 하드웨어와 결합되어, 제1 항 내지 제12 항 중 어느 한 항의 방법을 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램.A program stored in a computer readable recording medium in order to execute the method of any one of claims 1 to 12 in combination with computer hardware. 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화 장치에 있어서,
통신부;
상기 저밀도 패리티 체크 부호를 이용한 DNA 데이터 부호화 및 복호화를 위한 적어도 하나의 프로세스를 저장하고 있는 메모리; 및
상기 프로세스에 따라 동작하는 프로세서;를 포함하고,
상기 프로세서는, 상기 프로세스를 기반으로,
특정 데이터를 기 설정된 제1 길이(bit)의 제1 이진수 벡터로 변환하고,
상기 제1 이진수 벡터를 기 설정된 제1 개수의 기 설정된 제2 길이(bit)의 제2 이진수 벡터가 되도록 나누고,
상기 제1 개수의 제2 이진수 벡터를 세로 방향으로 정렬하고,
기 설정된 제3 길이(bit)의 패리티를 이용하여 상기 제2 이진수 벡터를 가로 방향으로 LDPC 부호화를 수행하고,
상기 제1 개수 및 상기 제3 길이를 합한 값에 상응하는 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 기 설정된 제4 길이(bit)의 주소 값을 지정하고,
상기 제2 길이 및 상기 제4 길이를 합한 값에 상응하는 제5 길이(bit)의 상기 세로 방향으로 정렬된 제2 이진수 벡터 각각을 2 비트 당 아데닌(A, Adenine), 구아닌(G,Guanine), 시토신(C, Cytosine) 및 티민(T, Thymine) 중 하나로 치환하고,
상기 치환을 통해 상기 제5 길이의 절반 길이(nt)로 형성되는 염기 배열에 대해서 천공(puncturing)을 수행하는, 장치.
In the apparatus for encoding and decoding DNA data using a low density parity check code,
communications department;
a memory storing at least one process for encoding and decoding DNA data using the low density parity check code; and
A processor operating according to the process; includes,
The processor, based on the process,
Converting specific data into a first binary vector of a preset first length (bit);
Dividing the first binary vector into a second binary vector of a preset first number and a preset second length (bit);
arranging the first number of second binary vectors in a vertical direction;
LDPC encoding is performed on the second binary vector in a horizontal direction using parity of a preset third length (bit);
Assigning an address value of a preset fourth length (bit) to each of the second binary number vectors aligned in the vertical direction of the second number corresponding to the sum of the first number and the third length,
Each of the vertically aligned second binary vectors of a fifth length (bit) corresponding to the sum of the second length and the fourth length is adenine (A, Guanine) and guanine (G) per 2 bits , substituted with one of cytosine (C, Cytosine) and thymine (T, Thymine),
An apparatus for performing puncturing on a nucleotide sequence formed as a half length (nt) of the fifth length through the substitution.
제14 항에 있어서,
상기 프로세서는,
상기 제1 이진수 벡터를 상기 제1 개수의 상기 제2 이진수 벡터가 되도록 나누기 전에,
난수를 이용한 XOR 연산을 통해 상기 제1 이진수 벡터를 랜덤화하는, 장치.
According to claim 14,
the processor,
Before dividing the first binary vector into the first number of the second binary vector,
Randomizing the first binary number vector through an XOR operation using random numbers.
제14 항에 있어서,
상기 프로세서는,
상기 주소 값 지정 시,
부호화를 위해 필요한 주소 값의 개수를 산출하고,
상기 산출된 주소 값 각각에 대해 RS(Reed-Solomon) 부호를 적용하여 부호화하고,
상기 부호화된 주소 값 각각을 상기 제2 개수의 세로 방향으로 정렬된 제2 이진수 벡터 각각에 순서대로 지정해주는, 장치.
According to claim 14,
the processor,
When specifying the above address value,
Calculate the number of address values required for encoding,
Each of the calculated address values is coded by applying a Reed-Solomon (RS) code;
Apparatus for assigning each of the encoded address values to each of the second binary vector vectors vertically aligned with the second number.
제16 항에 있어서,
상기 프로세서는,
상기 주소 값의 개수를 산출 시,
상기 주소 값의 비트 수에 기초한 전체 경우의 수 중에서 상기 염기 배열 내의 특정한 위치의 연속된 두 개의 염기가 서로 다른 경우의 수에 상응하는 개수를 상기 주소 값의 개수로 산출하는, 장치.
According to claim 16,
the processor,
When calculating the number of address values,
Of the total number of cases based on the number of bits of the address value, the number corresponding to the number of cases in which two consecutive bases at a specific position in the base sequence are different from each other is calculated as the number of address values.
제16 항에 있어서,
상기 주소 값은 짝수 패리티를 포함하는, 장치.
According to claim 16,
Wherein the address value comprises even parity.
제14 항에 있어서,
상기 프로세서는,
상기 치환 시,
상기 2 비트에 포함된 0 및 1의 개수에 따라 상기 2 비트를 상기 아데닌(A, Adenine), 상기 구아닌(G, Guanine), 상기 시토신(C, Cytosine) 및 상기 티민(T, Thymine) 중 하나로 치환하는, 장치.
According to claim 14,
the processor,
Upon said substitution,
According to the number of 0s and 1s included in the 2 bits, the 2 bits are converted into one of the adenine (A), the guanine (G), the cytosine (C), and the thymine (T). substituting device.
제19 항에 있어서,
상기 프로세서는,
상기 천공 수행 시,
상기 제2 개수의 염기 배열 중에서, 상기 구아닌(G, Guanine) 및 상기 시토신(C, Cytosine)의 비율이 기준 비율과의 차이가 기 설정된 값보다 큰 염기 배열과 동일한 염기가 기 설정된 횟수 이상 반복되는 염기 배열에 대해서 천공을 수행하는 것인, 장치.
According to claim 19,
the processor,
When performing the perforation,
Among the base sequences of the second number, the same base sequence as the base sequence in which the ratio of the guanine (G, Guanine) and the cytosine (C, Cytosine) ratio is greater than a predetermined value from the reference ratio is repeated more than a predetermined number of times A device for performing perforation on a nucleotide sequence.
제14 항에 있어서,
상기 프로세서는,
상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하고(여기서 N은 자연수),
상기 복호화된 결과에 기초하여, 상기 제1 개수의 제2 이진수 벡터를 상기 지정된 주소 값의 순서에 따라 상기 제1 길이의 제1 이진수 벡터로 통합하고,
상기 N개의 염기 배열은 서로 다르거나 적어도 두개가 동일하고,
상기 N개의 염기 배열이 서로 다른 경우에 상기 N은 상기 제2 개수보다 작거나 동일하고,
상기 N개의 염기 배열이 적어도 두개가 동일한 경우에 상기 N은 상기 제2 개수보다 큰, 장치.
According to claim 14,
the processor,
Extracting N base sequences from the second number of base sequences to perform first LDPC decoding and second LDPC decoding (where N is a natural number),
Based on the decrypted result, integrating the second binary vector of the first number into a first binary vector of the first length according to the order of the designated address values;
The N base sequences are different from each other or at least two are the same,
When the N base sequences are different from each other, the N is less than or equal to the second number,
When at least two of the N base sequences are the same, the N is greater than the second number.
제21 항에 있어서,
상기 프로세서는,
상기 제1 LDPC 복호화 및 제2 LDPC 복호화 수행 시,
상기 추출된 N개의 염기 배열 각각의 주소 값에 대한 RS 복호화 및 짝수 패리티 복호화를 수행하고,
상기 복호화된 결과에 따라 동일한 주소 값을 가지는 염기 배열을 그룹핑하고,
상기 그룹핑된 염기 배열에서 주소 값을 제거한 후 이진수 벡터로 치환하고,
상기 주소 값에 염기 배열의 존재 여부에 따라 상기 치환된 이진수 벡터 각각에 대해 로그 우도 비 (LLR, Log-Likelihood Ratio)를 산출하고,
상기 산출된 로그 우도 비를 상기 주소 값의 순서에 따라 세로 방향으로 정렬하고,
상기 세로 방향으로 정렬된 로그 우도 비를 가로 방향으로 제1 LDPC 복호화 수행하고,
상기 제1 LDPC 복호화된 결과에 기초하여, 제2 LDPC 복호화 수행하고,
상기 제2 LDPC 복호화된 결과에 기초하여, 최종적으로 복호화에 성공하였는지 여부를 판단하는, 장치.
According to claim 21,
the processor,
When performing the first LDPC decoding and the second LDPC decoding,
RS decoding and even parity decoding are performed on the address values of each of the extracted N base sequences;
Grouping base sequences having the same address value according to the decryption result,
After removing the address value from the grouped nucleotide sequence, replacing it with a binary vector,
Calculating a log-likelihood ratio (LLR, Log-Likelihood Ratio) for each of the substituted binary vectors according to the presence or absence of a nucleotide sequence in the address value,
sorting the calculated log-likelihood ratios in a vertical direction according to the order of the address values;
Performing first LDPC decoding on the log-likelihood ratios aligned in the vertical direction in the horizontal direction;
Performing second LDPC decoding based on the result of the first LDPC decoding;
Based on the result of the second LDPC decryption, it is determined whether decoding is finally successful.
제22 항에 있어서,
상기 프로세서는,
상기 제1 LDPC 복호화 수행 시,
각 주소 값에 대응하는 염기 배열 각각에 대해, 제1 LDPC 복호화 수행 전과 후의 바뀐 비트 수를 계산하고,
상기 바뀐 비트 수가 기 설정된 개수 이상인 염기 배열에 대해 상기 로그 우도 비를 0으로 초기화하고,
상기 제2 LDPC 복호화 수행 시,
상기 제1 LDPC 복호화에 실패한 로그 우도 비를 가로방향으로 제2 LDPC 복호화를 수행하는 것으로 결정하고,
상기 최종 복호화의 성공 여부를 판단 시,
상기 제1 LDPC 복호화된 모든 염기 배열과, 상기 제1 LDPC 복호화 및 상기 제2 LDPC 복호화된 모든 염기 배열에 대한 패리티 검사 행렬을 통해 최종적으로 복호화에 성공하였는지 여부를 판단하는, 장치.
23. The method of claim 22,
the processor,
When performing the first LDPC decoding,
For each base sequence corresponding to each address value, the number of changed bits before and after performing the first LDPC decoding is calculated,
Initializing the log-likelihood ratio to 0 for a nucleotide sequence in which the number of changed bits is equal to or greater than a preset number;
When performing the second LDPC decoding,
Determining the log likelihood ratio for which the first LDPC decoding failed to perform second LDPC decoding in a horizontal direction;
When determining the success of the final decryption,
An apparatus for determining whether decoding is finally successful through a parity check matrix for all the first LDPC-decoded base sequences and all the first LDPC-decoded and second LDPC-decoded base sequences.
제23 항에 있어서,
상기 프로세서는,
상기 최종적으로 복호화에 실패한 것으로 판단된 경우,
상기 제2 개수의 염기 배열 중 N개의 염기 배열을 추가로 추출하여 제1 LDPC 복호화 및 제2 LDPC 복호화를 수행하는 과정을 반복하는, 장치.
According to claim 23,
the processor,
When it is finally determined that the decryption has failed,
An apparatus for repeating the process of performing first LDPC decoding and second LDPC decoding by additionally extracting N base sequences from among the second number of base sequences.
제22 항에 있어서,
상기 로그 우도 비 (LLR, Log-Likelihood Ratio)는 아래 수학식을 이용하여 산출되는, 장치.

여기서, K0은 같은 주소 값을 가지는 염기 배열들의 같은 위치에서의 0의 개수, K1은 같은 주소 값을 가지는 염기 배열들의 같은 위치에서의 1의 개수, 는 기 설정된 파라미터 값
23. The method of claim 22,
The log-likelihood ratio (LLR, Log-Likelihood Ratio) is calculated using the equation below.

Here, K 0 is the number of 0s at the same position of base sequences having the same address value, K 1 is the number of 1s at the same position of base sequences having the same address value, is the preset parameter value
KR1020210104372A 2021-08-09 2021-08-09 Method, program and apparatus for encoding and decoding dna data using low density parity check code KR102574250B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210104372A KR102574250B1 (en) 2021-08-09 2021-08-09 Method, program and apparatus for encoding and decoding dna data using low density parity check code
PCT/KR2022/011804 WO2023018157A1 (en) 2021-08-09 2022-08-08 Dna data encoding and decoding method using low-density parity check code, program, and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210104372A KR102574250B1 (en) 2021-08-09 2021-08-09 Method, program and apparatus for encoding and decoding dna data using low density parity check code

Publications (2)

Publication Number Publication Date
KR20230022510A KR20230022510A (en) 2023-02-16
KR102574250B1 true KR102574250B1 (en) 2023-09-06

Family

ID=85200058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210104372A KR102574250B1 (en) 2021-08-09 2021-08-09 Method, program and apparatus for encoding and decoding dna data using low density parity check code

Country Status (2)

Country Link
KR (1) KR102574250B1 (en)
WO (1) WO2023018157A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018148260A1 (en) 2017-02-13 2018-08-16 Thomson Licensing Apparatus, method and system for digital information storage in deoxyribonucleic acid (dna)
JP2021071966A (en) 2019-10-31 2021-05-06 株式会社リコー Data storing method and data storing device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4563476B2 (en) 2008-07-09 2010-10-13 パナソニック株式会社 Encoder, decoder and encoding method
EP3123376A1 (en) * 2014-03-28 2017-02-01 Thomson Licensing Methods for storing and reading digital data on a set of dna strands
KR102339723B1 (en) * 2019-08-21 2021-12-15 서울대학교산학협력단 Method, program, and appratus of decoding based on soft information of a dna storage device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018148260A1 (en) 2017-02-13 2018-08-16 Thomson Licensing Apparatus, method and system for digital information storage in deoxyribonucleic acid (dna)
JP2021071966A (en) 2019-10-31 2021-05-06 株式会社リコー Data storing method and data storing device

Also Published As

Publication number Publication date
KR20230022510A (en) 2023-02-16
WO2023018157A1 (en) 2023-02-16

Similar Documents

Publication Publication Date Title
US10707899B2 (en) Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
US10742233B2 (en) Efficient encoding of data for storage in polymers such as DNA
CN107370560B (en) Method, device and equipment for coding and rate matching of polarization code
WO2019153867A1 (en) Two-dimensional code generation and identification
US8209577B2 (en) Optimizing XOR-based codes
US8990664B2 (en) Identifying a potentially compromised encoded data slice
US20210271557A1 (en) Data encoding, decoding and recovering method for a distributed storage system
US10153785B1 (en) Generalized low-density parity-check (GLDPC) code with variable length constituents
CN1783729A (en) Method and apparatus for decoding low density parity check code using united node processing
Lenz et al. Anchor-based correction of substitutions in indexed sets
US10152376B2 (en) Data object recovery for storage systems
Gabrys et al. Codes in the Damerau distance for DNA storage
CN114328000B (en) DNA storage cascade coding and decoding method for 1 type 2 type segment error correction inner code
CN112486725A (en) Method and device for carrying out error correction coding on compressed data
CN112100982A (en) DNA storage method, system and storage medium
Yang et al. A low complexity sequential decoding algorithm for rateless spinal codes
Shomorony et al. Torn-paper coding
JP2009515420A (en) Apparatus and method for decoding and encoding data
KR102269322B1 (en) A method and apparatus for fast decoding a linear code based on bit matching
US9917599B2 (en) Coding schemes including alternative codings for a single code construct
KR102574250B1 (en) Method, program and apparatus for encoding and decoding dna data using low density parity check code
RU2379841C1 (en) Decoder with erasure correction
CN106788454B (en) Construction method of local unequal codes
CN112000509B (en) Erasure code encoding method, system and device based on vector instruction

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant