BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine...

43
BWT in der Praxis Nina Luhmann (kleine ¨ Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Transcript of BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine...

Page 1: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

BWT in der Praxis

Nina Luhmann (kleine Anderungen von Roland)

Sequenzanalyse-Praktikum

2./3. Mai 2017

Page 2: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Ubersicht

1. Motivation

2. Wiederholung BWT

3. BWT in der Praxis

2 of 20

Page 3: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Motivation – Mapping

• sehr lange Referenzsequenz→ viele mogliche Mappingpositionen fur Reads

• Vorverarbeitung der Referenz, die schnelle Suche erlaubt

• Indizierung der Referenz mit BWT→ effiziente Suche aller Mappingpositionen eines Reads

• Beispiele: BWA, Bowtie2

3 of 20

Page 4: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Motivation – Kompression

• große Datensatze → viel Speicherplatz

• Kompression von Daten notwendig

• bijektive Transformation: Wiederhestellung vom Original

• BWT: Sortiere zyklische Rotationen des TextesBWT: → gruppiere Zeichen nach ihrem Kontext

• Ergebnis ist Permutation des Originaltextes, die besser zukomprimieren ist das Original

• Beispiel: bzip2

4 of 20

Page 5: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows- Wheeler Transformation

Gegeben ist ein Text t = s$ = STETSTESTE$.Konstruiere die Matrix M aus zyklischen Rotationen von t...

S T E T S T E S T E $

T E T S T E S T E $ S

E T S T E S T E $ S T

T S T E S T E $ S T E

S T E S T E $ S T E T

T E S T E $ S T E T S

E S T E $ S T E T S T

S T E $ S T E T S T E

T E $ S T E T S T E S

E $ S T E T S T E S T

$ S T E T S T E S T E

5 of 20

Page 6: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows-Wheeler Transformation

...und sortiere sie.

F L$ S T E T S T E S T E

E $ S T E T S T E S T

E S T E $ S T E T S T

E T S T E S T E $ S T

S T E $ S T E T S T E

S T E S T E $ S T E T

S T E T S T E S T E $

T E $ S T E T S T E S

T E S T E $ S T E T S

T E T S T E S T E $ S

T S T E S T E $ S T E

6 of 20

Page 7: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows-Wheeler Transformation

⇒ bwt(t) = ETTTET$SSSE

7 of 20

Page 8: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows-Wheeler Rucktransformation

8 of 20

Page 9: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows-Wheeler Rucktransformation

8 of 20

Page 10: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Burrows-Wheeler Rucktransformation

8 of 20

Page 11: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Read Mapping mit BWT

• Aufgabe: Finde alle Vorkommen eines kurzen Reads in einerlaaaaaangen Referenz

• Idee: BWT der Referenz, damit Vorkommen zusammen gruppiert

• Bowtie2, BWA: FM-Index der Referenz

• FM-Index = BWT + Suffix Array + zusatzliche Tabellen

• wenig Speicherplatzverbrauch: 2,2 GB fur menschliches Genom

9 of 20

Page 12: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel (exaktes) Mapping

p = TEST

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T S

T S

T S

T E

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E T

E T

S −→ E

S −→ T

S −→ $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E −→ T

E T

S −→ E

S T

S $

T −→ S

T S

T S

T E

10 of 20

Page 13: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel (exaktes) Mapping

p = TEST

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T S

T S

T S

T E

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E T

E T

S −→ E

S −→ T

S −→ $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E −→ T

E T

S −→ E

S T

S $

T −→ S

T S

T S

T E

10 of 20

Page 14: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel (exaktes) Mapping

p = TEST

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T S

T S

T S

T E

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E T

E T

S −→ E

S −→ T

S −→ $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E −→ T

E T

S −→ E

S T

S $

T −→ S

T S

T S

T E

10 of 20

Page 15: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel (exaktes) Mapping

p = TEST

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T S

T S

T S

T E

F · · · L

$ E

E T

E T

E T

S E

S T

S $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E T

E T

S −→ E

S −→ T

S −→ $

T −→ S

T −→ S

T −→ S

T E

F · · · L

$ E

E T

E −→ T

E T

S −→ E

S T

S $

T −→ S

T S

T S

T E

10 of 20

Page 16: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Kompression mit bzip2

1. Blocks of size 100.000–900.000

2. Burrows–Wheeler transform (BWT)

3. Move to front (MTF)

4. Run-length encoding (RLE)

5. Huffman coding

6. Selection between multiple Huffman tables

7. Unary base 1 encoding of Huffman table selection

8. Delta encoding (∆) of Huffman code bit-lengths

9. Sparse bit array showing which symbols are used

11 of 20

Page 17: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel

t = STETSTESTE$→ 11 bytes = 88 bit

bwt(s) = ETTTET$SSSE

12 of 20

Page 18: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – BWT

t = STETSTESTE$→ 11 bytes = 88 bit

bwt(s) = ETTTET$SSSE

13 of 20

Page 19: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E

14 of 20

Page 20: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

14 of 20

Page 21: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

14 of 20

Page 22: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

14 of 20

Page 23: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

14 of 20

Page 24: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1

14 of 20

Page 25: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

14 of 20

Page 26: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

$TES

T

TTE$S

2$

14 of 20

Page 27: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

$TES

T

TTE$S

2$

S$TE

3$

$

S

$TES

14 of 20

Page 28: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

$TES

T

TTE$S

2$

S$TE

3$

$

S

$TES

S$TE

S$TE

0S

S

S

14 of 20

Page 29: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

$TES

T

TTE$S

2$

S$TE

3$

$

S

$TES

S$TE

S$TE

0S

S

S

S$TE

0S

S

S

S

14 of 20

Page 30: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Move-to-front

Idee: Jedes Symbol wird durch seinen Index im Stack der zuletztverwendeten Symbole ersetzt

$EST

Stack

0

1

2

3

E T T T E T $ S S S E1E$ST

$EST

E

$EST

TE$S

3E$ST

E T

TE$S

T0

TE$S

T

TT

T

T

T0

T TE$S

ET$S

T

T

E

E

1TE$S

E

E

1ET$S

T

$TES

T

TTE$S

2$

S$TE

3$

$

S

$TES

S$TE

S$TE

0S

S

S

S$TE

0S

S

S

S ES$T

3S

S

E

E

14 of 20

Page 31: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3stack = (E , S , $,T )Idee: Kodierung von Zeichen in Binarform, so dass haufigere Zeichenkurze Codes und seltene Zeichen langere Codes erhalten (prefix-freecodes)

Haufigkeiten:0 4

1 3

2 1

3 3

15 of 20

Page 32: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

16 of 20

Page 33: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

16 of 20

Page 34: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

4x

16 of 20

Page 35: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

4x4x

7x7x

16 of 20

Page 36: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

4x4x

7x7x

11x

16 of 20

Page 37: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

4x4x

7x7x

11x11x

16 of 20

Page 38: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel – Huffman Coding

mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3

0 1 2 3Alphabet

4x 3x 1x 3xHäufigkeiten

4x4x

7x7x

11x11x

0

1

1

1

0

0

0 10 110 111Binärcode16 of 20

Page 39: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Beispiel - Huffman Coding

t = STETSTESTE$→ 88 bit,mtf = 1, 3, 0, 0, 1, 1, 2, 3, 0, 0, 3⇒ 1011100101011011100111→ 22 bit +

#

0 4 0

1 3 10

2 1 110

3 3 111

17 of 20

Page 40: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Einfluss der Alphabetgroße auf bzip2?

1. Blocks of size 100.000–900.000

2. Burrows–Wheeler transform (BWT)

3. Move to front (MTF)

4. Run-length encoding (RLE)

5. Huffman coding

6. Selection between multiple Huffman tables

7. Unary base 1 encoding of Huffman table selection

8. Delta encoding (∆) of Huffman code bit-lengths

9. Sparse bit array showing which symbols are used

18 of 20

Page 41: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Einfluss der Alphabetgroße auf bzip2?

1. Blocks of size 100.000–900.000

2. Burrows–Wheeler transform (BWT)

3. Move to front (MTF)

4. Run-length encoding (RLE)

5. Huffman coding

6. Selection between multiple Huffman tables

7. Unary base 1 encoding of Huffman table selection

8. Delta encoding (∆) of Huffman code bit-lengths

9. Sparse bit array showing which symbols are used

18 of 20

Page 42: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Zusammenfassung

• BWT fur Textkomprimierung

• Typischer Schritt vor der Move-to-front Codierung

• Teil des bzip2 Algorithmus

• Ubung: Fur welche Texte funktioniert das gut, fur welcheschlechter?

• BWT als Vorverarbeitung im Read mapping

• Ubung: Spielerei mit Bowtie2

19 of 20

Page 43: BWT in der Praxis - gi.cebitec.uni-bielefeld.de fileBWT in der Praxis Nina Luhmann (kleine Anderungen von Roland) Sequenzanalyse-Praktikum 2./3. Mai 2017

Quellen

• Skript zur Vorlesung “Sequenzanalyse”, Technische Fakultat,Universitat Bielefeld, Wintersemester 2014/15

• M. Burrows and D. Wheeler: “A block sorting lossless datacompression algorithm.”, Technical Report 124, Digital EquipmentCorporation, 1994

• “bzip2”, https://en.wikipedia.org/wiki/Bzip2, Stand: 15.04.2016

• D.A. Huffman, “Method for the Construction ofMinimum-Redundancy Codes“, Proceedings of the I.R.E., pp1098–1102, 1952

20 of 20