Huffman Coding

Total Page:16

File Type:pdf, Size:1020Kb

Huffman Coding Compsci 201, Spring 2014, Huffman Coding Snarf the huff project via Eclipse. You are urged to work in groups of two. Each group should submit ONE program per group. Be sure to include name and NetID of each person in your group in each of the TWO README files that are submitted with the submission. This is new! We haven’t done assignments in pairs before in this class. (And, as this is the last assignment, we won’t be doing them later, either.) Working in a pair comes with a special set of responsibilities to maintain academic honesty. The most basic is this: the project must be the joint work of both members of the pair. One person doing the great majority of the work doesn’t count. Luckily, getting this right is easy: only work on the assignment when both people are there! If both members of the pair are working in front of the same computer, you’re in the clear. Plus, doing it this way keeps you from having to deal with transferring files back and forth between people, which is a huge source of pain and suffering. If you have questions about working in pairs, let us know! What to Know in Doing the Huffman Assignment • One submission will contain the code and both READMEs (named README_netID.txt) • See below for a complete description of Huffman coding for use in a Compsci 201 assignment developed in the mid 90s. • Understand what you have to do before starting to code. Read through the howto document and this document. Background There are many techniques used to compress digital data. This assignment covers two algorithms: Huffman coding and the Burrows-Wheeler transform. Only Huffman coding is a compession algorithm and it offers greater data compression if data is first transformed using Burrows-Wheeler. The Burrows- Wheeler transform is an extra-credit assignment, you must do Huffman encoding for compression.Several algorithms for data compression have been patented, e.g., the MP3 audio codec (which uses Huffman coding as one of its steps). Huffman coding was invented by David Huffman while he was a graduate student at MIT in 1950 when given the option of a term paper or a final exam. In an autobiography Huffman had this to say about the epiphany that led to his invention of the coding method that bears his name: “– but a week before the end of the term I seemed to have nothing to show for weeks of effort. I knew I’d better get busy fast, do the standard final, and forget the research problem. I remember, after breakfast that morning, throwing my research notes in the wastebasket. And at that very moment, I had a sense of sudden release, so that I could see a simple pattern in what I had been doing, that I hadn’t been able to see at all until then. The result is the thing for which I’m probably best known: the Huffman Coding Procedure. I’ve had many breakthroughs since then, but never again all at once, like that. It was very exciting.” Huffman’s original paper is available, though it’s a tough read. The Wikipedia reference is extensive as is this online material developed as one of the original Nifty Assignments. Both jpeg and mp3 encodings use Huffman Coding as part of their compression algorithms. In this assignment you’ll implement a complete program to compress and uncompress data using Huffman coding. Assignment Overview For this assignment you’ll build what are conceptually two programs: one to compress (huff) and the other to uncompress (unhuff) files that are compressed by the first program. However, there is really just a single program with the choice of compressing a file or uncompressing a file specified by choosing a menu-option in the GUI front-end to the code you write. Abstractly you’re writing a program to read an input file and create a corresponding output file — either from uncompressed to compressed or vice versa. For extra credit you’ll add another step to the compression process: the Burrows-Wheeler transform (BWT). However, you do BWT after completing Huffman Coding — the BWT writeup is separate. The Huff class is a simple main that launches a GUI with a connected IHuffProcessor implementation. The implementation corresponds to a model in the model-view architecture we’ve been using in class: the view/GUI makes calls on the model/IHuffProcessor methods which in turn may display information in the view/GUI. The code you write will also create files of compressed or uncompresse data when the GUI-front end calls methods you will write. You’ll implement methods and store state in your IHuffProcessor implementation so that it can either compress/huff or uncompress/unhuff. You’re welcome to implement additional classes as well, but you don’t need to (except for the Burrows-Wheeler transform which is optional.) You’re writing code based on the greedy Huffman algorithm discussed in class and in this detailed online explanation of Huffman Coding. Be sure to read that explanation, the notes from class, and refer appropriately to the howto for this assignment. The resulting program will be a complete and useful compression program although not, perhaps, as powerful as standard programs like winrar or zipwhich use slightly different algorithms permitting a higher degree of compression than Huffman coding. The Huffman Compression Program The Howto compression section has complete information on how to create a compressed file. Basically you first create a Huffman tree to derive per-character encodings, then you write bits based on these encodings. The Huff main program has a GUI front-end whose menu offers three choices: count characters, compress, uncompress (and quit as a fourth choice). You can’t compress until you can count/create a tree, so make sure counting/tree-creation/encoding works. The howto document has details on how the program works. Programming Advice Because the compression scheme involves reading and writing in a bits-at-a-time manner as opposed to a char-at-a-time manner, the program can be hard to debug. In order to facilitate the design/code/debug cycle, you should take care to develop the program in an incremental fashion. If you try to write the whole program at once, it will be difficult to get a completely working program. The howto development section has more information on incremental developement. The Huffman Decompression Program To uncompress a file your program previously compressed you’ll need to read header information from the compressed file your program creates. The header information is data that you’ll use in writing code that recreates the Huffman tree that was originally used to compress the data — this is key, to uncompress you need the same tree you used to compress. After recreating the tree your code will read one-bit-at-a-time to uncompress the data and recreate the original file that was compressed. There’s complete information in the howto uncompression section on doing this. Basically you read the header information to recreate the tree, then do a tree-walk one bit at a time to find the characters stored in the leaves of the Huffman tree. Each time you find a leaf you print the value there. This process recreates the original, uncompressed file. Empirical Analysis You should run the program HuffMark which will read every file in a directory and compress it to another file in the same directory with a “.hf” suffix. You may want to modify this benchmarking program to print more data than it currently does, and to run it on both the calgary directory which represents the Calgary Corpus, a standard compression suite of files for empirical analysis, you can see this reference for comparisons on the Calgary Corpus and on the waterloo directory which is a collection of .tiff images used in some compression benchmarking. You can, of course, run on other data/collections. Be sure to check whether the file you compress and uncompress is the same as the original. See teh howto diff section for more information. The benchmarking program skips files with .hf suffixes, but you’ll want to change that at some point in your analysis. Your analysis should focus on a few questions: 1. Which compresses more, binary files or text files? 2. Can you gain additional compression by double-compressing an already compressed file? If so, is there eventually a limit to when this no longer saves space on ordinary files? What if you built a file that was intentionally designed to compress a lot…when would it be no longer worthwhile to recompress? If you use different methods to store information in the header of your compressed file, e.g., you store the tree and you also store counts, then reporting on differences is a good idea. Information on how to create the header is in the howto. Grading The program is worth 25 points. You get correctness/algorithmic points according to whether your program compresses and uncompresses to the original both text and other (e.g., jpg) files. You get engineering points according to how well your code is written, how robust your program is, whether the program detects compression (resulting file would be bigger) and how you write your header information. You get analysis points based on the information you report from compressing/uncompressing a corpus or two. points. ONLY ONE PARTNER SUBMITS THE CODE, ANALYSIS, AND BOTH READMEs. MAKE SURE THAT YOUR SUBMISSION IS CORRECT BY CHECKING THAT THE SUBMIT HISTORY HAS ALL THE CODE, ANALYSIS AND BOTH READMES!!!!! DESCRIPTION POINTS compression/decompression of any text file 25% compression/decompression of any file (including binary files) 25% robustness (crash on non-huffed files, force compression..) 20% program style (design, documentation, etc.) 10% empirical analysis 20% README must be complete for any credit Huffman Coding Grading Standards You can also get extra credit for this assignment by implementing multiple header styles and empirically testing which is better.
Recommended publications
  • Sequence Listings Webinar Suzannah K. Sundby Carl Oppedahl
    Suzannah K. Sundby Canady + Lortz LLP Sequence Listings Webinar January 9, 2018 – Updated Version Carl Oppedahl Oppedahl Patent Law Firm LLC DISCLAIMER These materials and views expressed today reflect only the personal views of the author and do not necessarily represent the views of other members and clients of the author’s organizations. These materials are public information and have been prepared solely for educational purposes to contribute to the understanding of U.S. intellectual property law. While every attempt was made to ensure that these materials are accurate, errors or omissions may be contained therein, for which any liability is disclaimed. These materials and views are not a source of legal advice and do not establish any form of attorney-client relationship with the authors and their law firms. Why are some sequence errors not identified by Checker? Is “SEQ ID NO” required before sequences in Specifications? Do you recommend using the PatentIn Software? How do you correct sequence listing errors in PCTs? What about the new WIPO ST.26 Standard? Is Checker worthwhile? How can I easily edit sequence listings generated by others? Can I use other software to generate sequence listings? How do I file sequence listings using EFS-Web and ePCT? How long does it take the USPTO to review and approve? Any risk TYFNIL of using certain sequence descriptors? Help! IT locked down my computer… what do I do? Any sequence listing tips? Why Practitioners Should Know and Do Usually lack of time to send to outside vendors Last minute changes to applications (apps) containing sequences (seqs) Particularly, changes to claims Not hostage to staff/vendors, overtime, etc.
    [Show full text]
  • BEA TUXEDO Reference Manual Section 5 - File Formats and Data Descriptions
    BEA TUXEDO Reference Manual Section 5 - File Formats and Data Descriptions BEA TUXEDO Release 6.5 Document Edition 6.5 February 1999 Copyright Copyright © 1999 BEA Systems, Inc. All Rights Reserved. Restricted Rights Legend This software and documentation is subject to and made available only pursuant to the terms of the BEA Systems License Agreement and may be used or copied only in accordance with the terms of that agreement. It is against the law to copy the software except as specifically allowed in the agreement. This document may not, in whole or in part, be copied photocopied, reproduced, translated, or reduced to any electronic medium or machine readable form without prior consent, in writing, from BEA Systems, Inc. Use, duplication or disclosure by the U.S. Government is subject to restrictions set forth in the BEA Systems License Agreement and in subparagraph (c)(1) of the Commercial Computer Software-Restricted Rights Clause at FAR 52.227-19; subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013, subparagraph (d) of the Commercial Computer Software--Licensing clause at NASA FAR supplement 16-52.227-86; or their equivalent. Information in this document is subject to change without notice and does not represent a commitment on the part of BEA Systems. THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. FURTHER, BEA Systems DOES NOT WARRANT, GUARANTEE, OR MAKE ANY REPRESENTATIONS REGARDING THE USE, OR THE RESULTS OF THE USE, OF THE SOFTWARE OR WRITTEN MATERIAL IN TERMS OF CORRECTNESS, ACCURACY, RELIABILITY, OR OTHERWISE.
    [Show full text]
  • The AWK Programming Language
    The Programming ~" ·. Language PolyAWK- The Toolbox Language· Auru:o V. AHo BRIAN W.I<ERNIGHAN PETER J. WEINBERGER TheAWK4 Programming~ Language TheAWI(. Programming~ Language ALFRED V. AHo BRIAN w. KERNIGHAN PETER J. WEINBERGER AT& T Bell Laboratories Murray Hill, New Jersey A ADDISON-WESLEY•• PUBLISHING COMPANY Reading, Massachusetts • Menlo Park, California • New York Don Mills, Ontario • Wokingham, England • Amsterdam • Bonn Sydney • Singapore • Tokyo • Madrid • Bogota Santiago • San Juan This book is in the Addison-Wesley Series in Computer Science Michael A. Harrison Consulting Editor Library of Congress Cataloging-in-Publication Data Aho, Alfred V. The AWK programming language. Includes index. I. AWK (Computer program language) I. Kernighan, Brian W. II. Weinberger, Peter J. III. Title. QA76.73.A95A35 1988 005.13'3 87-17566 ISBN 0-201-07981-X This book was typeset in Times Roman and Courier by the authors, using an Autologic APS-5 phototypesetter and a DEC VAX 8550 running the 9th Edition of the UNIX~ operating system. -~- ATs.T Copyright c 1988 by Bell Telephone Laboratories, Incorporated. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopy­ ing, recording, or otherwise, without the prior written permission of the publisher. Printed in the United States of America. Published simultaneously in Canada. UNIX is a registered trademark of AT&T. DEFGHIJ-AL-898 PREFACE Computer users spend a lot of time doing simple, mechanical data manipula­ tion - changing the format of data, checking its validity, finding items with some property, adding up numbers, printing reports, and the like.
    [Show full text]
  • IBM VM/370 (Ems) Terminal User's Guide for FORTRAN IV Program Product Program Products
    SC28-6891-1 IBM VM/370 (eMS) Terminal User's Guide for FORTRAN IV Program Product Program Products Program Numbers 5734-F01 5734-F02 5734-F03 5734-LM1 5734-LM3 Page of SC28-6891-0,-1 Revised May 13, 1977 By TNL SN20-922S Second Edition (April 1975) This edition, as amended by technical newsletters SN20-9201 and SN20-9225, applies to Release 1.0 of the IBM Virtual Machine Facility/370 (VM/370) (CMS). This edition is a reprint of SC28-6891-0 incorporating changes released in Technical Newsletters SN28-0609 (dated March 1, 1973) and SN28-0620 (dated January 3, 1974). Changes are listed in the Summary of Amendments, Number 3, on the facing page. Information in this publication is subject to significant change. Any such changes will be published in new editions or technical newsletters. Before using the publication, consult the latest IBM System/360 Bibliography, GC20-0360, or IBM System/370 Bibliography, GC20-0001, and the technical newsletters that amend the particular bibliography, to learn which editions are applicable and current. Requests for copies of IBM publications shou'ld be made to your IBM representative or to the IBM branch office that serves your locality. Forms for readers' comments are provided at the back of this publication. If the forms have been removed, address comments to IBM Corporation, P. O. Box 50020, Programming Publishing, San Jose, California 95150. Comments and suggesti~ns become the property of IBM. © Copyright International Business Machines Corporation 1972 Summary of Amendments Number 1 Date of Publication: March 1, 1973 Form of Publication: TNL SN28-0609 to SC28-6891-0 CP and CMS Command Abbreviations Maintenance: Documentation Only Valid abbreviations have been added to the summary descriptions of significant CP and CMS commands.
    [Show full text]
  • Journal Import Requirements and Technical Guidance
    Journal Import Requirements and Technical Guidance Document Purpose The purpose of this document is to provide technical requirements information regarding the Journal Import process for those involved in the remediation of systems impacted by Workday Release 4 functionality. Prior to Workday Release 4 in July 2017, journal import utilizes the Journal Staging Area (JSA). This document provides information about the design that will be used to replace the JSA process of uploading files into Oracle with the new process for loading files into Workday. The process covers both non-Internal Service Provider (non-ISP) and Internal Service Provider (ISP) Journal Imports. Process Due to the large number of JSA sources, one of the guiding principles for the new Journal Import process has been that the overall process should feel familiar and require minimal training for end-users. In order to accomplish this goal, the design(s) utilizes the existing Managed File Transfer (MFT) source directories; the file formats, while different, utilize a file format that contains a Header (GLH) record and multiple Detail (GLD) records. The formats can be viewed in the template file - ISP and non-ISP journal file layouts. The designers of the process are aware that there are use cases that will require some sources to submit both JSA files to be routed to EBS at the same time that they are submitting Journal Import files to be imported into Workday. This use case is very constrained and will only last for a very short period of time. If you think this may apply to you, the team would like to hear from you.
    [Show full text]
  • Streampix 5 Tech Support:[email protected]
    Norpix Inc - www.norpix.com StreamPix 5 Tech Support:[email protected] STREAMPIX 5 Copyright Norpix Inc. (C) 2009-2013 StreamPix5 - Copyright Norpix Inc. (C) 2013 (1/187) Norpix Inc - www.norpix.com StreamPix 5 Tech Support:[email protected] Table of Contents About StreamPix 5...................................................................................................................................8 Minimum system requirements................................................................................................................9 Installing StreamPix...............................................................................................................................10 Authorization codes...............................................................................................................................11 StreamPix 5 Basics................................................................................................................................12 Ribbon Interface overview.................................................................................................................12 Faster !..........................................................................................................................................14 Default list of Keyboard Shortcuts.................................................................................................15 The Sequence slider ....................................................................................................................16
    [Show full text]
  • The UNIX Time- Sharing System
    1. Introduction There have been three versions of UNIX. The earliest version (circa 1969–70) ran on the Digital Equipment Cor- poration PDP-7 and -9 computers. The second version ran on the unprotected PDP-11/20 computer. This paper describes only the PDP-11/40 and /45 [l] system since it is The UNIX Time- more modern and many of the differences between it and older UNIX systems result from redesign of features found Sharing System to be deficient or lacking. Since PDP-11 UNIX became operational in February Dennis M. Ritchie and Ken Thompson 1971, about 40 installations have been put into service; they Bell Laboratories are generally smaller than the system described here. Most of them are engaged in applications such as the preparation and formatting of patent applications and other textual material, the collection and processing of trouble data from various switching machines within the Bell System, and recording and checking telephone service orders. Our own installation is used mainly for research in operating sys- tems, languages, computer networks, and other topics in computer science, and also for document preparation. UNIX is a general-purpose, multi-user, interactive Perhaps the most important achievement of UNIX is to operating system for the Digital Equipment Corpora- demonstrate that a powerful operating system for interac- tion PDP-11/40 and 11/45 computers. It offers a number tive use need not be expensive either in equipment or in of features seldom found even in larger operating sys- human effort: UNIX can run on hardware costing as little as tems, including: (1) a hierarchical file system incorpo- $40,000, and less than two man years were spent on the rating demountable volumes; (2) compatible file, device, main system software.
    [Show full text]
  • K-Watch & K-Manager Pro Application Software User
    K-Watch & K-Manager Pro Application Software User Manual K-Watch & K-Manager Pro Patent Information This product may be protected by one or more patents. For further information, please visit: www.grassvalley.com/patents/ Copyright and Trademark Notice Grass Valley®, GV® and the Grass Valley logo and/or any of the Grass Valley products listed in this document are trademarks or registered trademarks of GVBB Holdings SARL, Grass Valley USA, LLC, or one of its affiliates or subsidiaries. All other intellectual property rights are owned by GVBB Holdings SARL, Grass Valley USA, LLC, or one of its affiliates or subsidiaries. All third party intellectual property rights (including logos or icons) remain the property of their respective owners. Copyright © 2021 GVBB Holdings SARL and Grass Valley USA, LLC. All rights reserved. Specifications are subject to change without notice. Terms and Conditions Please read the following terms and conditions carefully. By using K-Watch and K- Manager Pro documentation, you agree to the following terms and conditions. Grass Valley hereby grants permission and license to owners of K-Watch and K- Manager Pro to use their product manuals for their own internal business use. Manuals for Grass Valley products may not be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, for any purpose unless specifically authorized in writing by Grass Valley. A Grass Valley manual may have been revised to reflect changes made to the product during its manufacturing life. Thus, different versions of a manual may exist for any given product.
    [Show full text]
  • User's Guide to Seqninja™ (Command-Line Edition)
    User's Guide to SeqNinja™ (Command-Line Edition) DNASTAR, Inc. 2014 Contents Before You Begin ...........................................................................................................................4 Overview .........................................................................................................................................5 Getting Started with SeqNinja ......................................................................................................6 Editing in the SeqNinja Shell ........................................................................................................8 Command-Line Options ................................................................................................................8 Supported File Formats .................................................................................................................9 The SeqNinja Language ..............................................................................................................10 Language Overview .................................................................................................................10 Escape Codes ...........................................................................................................................11 File Patterns .............................................................................................................................12 Settings .....................................................................................................................................13
    [Show full text]
  • Distributed Metadata Management for Post-Production Environments
    Distributed Metadata Management for Post-production Environments Werner Bailer1, Konstantin Schinas2, Georg Thallinger1, Wolfgang Schmidt2, Werner Haas1 1 JOANNEUM RESEARCH Forschungsgesellschaft mbH Institute of Information Systems & Information Management Steyrergasse 17, 8010 Graz, Austria 2 DVS Digital Video Systems GmbH Krepenstraße 8, 30165 Hannover, Germany Abstract: Efficient and flexible management of digital essence and associated metadata is of critical relevance in post-production. We describe a distributed content management system, which uses a peer-to-peer architecture in order to support the dynamic nature of post-production setups. Each peer indexes content on storage under its control by extracting relevant metadata from the headers of essence files as well as by performing automatic content analysis in a background process. The extracted metadata are indexed in a lightweight database at each peer and stored on disk in MPEG-7 XML format in order to provide a standard compliant interface for metadata exchange. The client tool running on a peer allows to edit the metadata in the data base, in the MPEG-7 file and in the file headers (e.g. to adjust timecodes). Moreover, the software provides tools for essence management (copying, moving, defragmentation). The system allows searching for content across all peers in the network. A visual keyframe-based browsing interface allows exploring the indexed content based on the extracted metadata. 1 Introduction Digital media technology resulted in a lasting change in post-production workflows. In digital post-production physical “storage media” such as film rolls and video tapes recede in importance. Instead, uncompressed image sequences in high resolution (e.g.
    [Show full text]
  • Guide to Openvms File Applications
    Guide to OpenVMS File Applications Order Number: AA-PV6PD-TK April 2001 This document is intended for application programmers and designers who write programs that use OpenVMS RMS files. Revision/Update Information: This manual supersedes the Guide to OpenVMS File Applications, OpenVMS Alpha Version 7.2 and OpenVMS VAX Version 7.2 Software Version: OpenVMS Alpha Version 7.3 OpenVMS VAX Version 7.3 Compaq Computer Corporation Houston, Texas © 2001 Compaq Computer Corporation Compaq, AlphaServer, VAX, VMS, the Compaq logo Registered in U.S. and Patent and Trademark Office. Alpha, OpenVMS, PATHWORKS, DECnet, and DEC are trademarks of Compaq Information Technologies Group, L.P. in the United States and other countries. UNIX and X/Open are trademarks of The Open Group in the United States and other countries. All other product names mentioned herein may be the trademarks of their respective companies. Confidential computer software. Valid license from Compaq required for possession, use, or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor’s standard commercial license. Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is provided "as is" without warranty of any kind and is subject to change without notice. The warranties for Compaq products are set forth in the express limited warranty statements accompanying such products. Nothing herein should be construed as constituting an additional warranty. ZK4506 The Compaq OpenVMS documentation set is available on CD-ROM.
    [Show full text]
  • Introduction to NGS
    Introduction to NGS Dr Torsten Seemann Peter MacCallum Cancer Centre - Fri 27 July 2012 What we will cover today ● High throughput sequencing ● Read sequences ● Base quality values ● FASTQ and FASTA files ● Sequence alignment ● BAM files ● Visualising alignments Sequencing In an ideal world... ● Collect a human genomic DNA sample ● Run it through the lab sequencing machine ● Get back 46 files ○ phased, haplotype chromosomes ○ each one a single contiguous sequence of AGTC ○ maybe some extra files if cancer sample Reality bites ● Unfortunately, no such instrument exists ○ can't read long stretches of DNA (yet) ● But we can read short pieces of DNA ○ shred DNA into ~500 bp fragments ○ we can read these reliably ● High-throughput sequencing ○ sequence millions of different fragments in parallel ○ various technologies to do this Technologies Instrument Method Read Length Yield Quality Value synthesis + Illumina fluorescence 250 ++++ +++++ ++++ ligation + SOLiD fluorescence 75 ++++ +++ +++ non-term NTP + Ion Torrent pH wells 300 ++ +++ +++ non-term NTP + Roche 454 luminescence 600 + ++++ ++ PacBio synthesis + ZMW 12000 +++ + ++ Illumina ● HiSeq 2000 ○ 1 week run ○ 300 Gb ○ 3 billion reads (100bp) ○ "big jobs" ● MiSeq ○ 1 day run ○ 1.5 Gb ○ 5 million reads (150bp) ○ "benchtop sequencer" What you get back Millions to billions of reads (big files): ATGCTTCTCCGCCTTTAATTAAAATTCCATTTCGTGCACCAACACCCGTTCCTACCATAATAGCTGTTGGAGTCGCTAAACCTAATGCACATGGACACGC <- 1st read CTAAGATACTGCCATCTTCTTCCAACGTAAATTGTACGTGATTTTCGATCCATTTTCTTCGAGGTTCTACTTTGTCACCCATTAGTGTGGTTACTCGACG
    [Show full text]