Class | Bio::Abif
In: | lib/bio/db/sanger_chromatogram/abif.rb
Parent: | SangerChromatogram

## Description

This class inherits from the SangerChromatogram superclass. It captures the information contained within an ABIF format chromatogram file generated by DNA sequencing. See the SangerChromatogram class for usage.

### Methods

data new

### Classes and Modules

Class Bio::Abif::DirectoryEntry

### Constants

DATA_TYPES | = | { 1 => 'byte', 2 => 'char', 3 => 'word', 4 => 'short', 5 => 'long', 7 => 'float', 8 => 'double', 10 => 'date', 11 => 'time', 18 => 'pString', 19 => 'cString', 12 => 'thumb', 13 => 'bool', 6 => 'rational', 9 => 'BCD', 14 => 'point', 15 => 'rect', 16 => 'vPoint', 17 => 'vRect', 20 => 'tag', 128 => 'deltaComp', 256 => 'LZWComp', 384 => 'deltaLZW', 1024 => 'user'}
PACK_TYPES | = | { 'byte' => 'C', 'char' => 'c', 'word' => 'n', 'short' => 'n', 'long' => 'N', 'date' => 'nCC', 'time' => 'CCCC', 'pString' => 'CA*', 'cString' => 'Z*', 'float' => 'g', 'double' => 'G', 'bool' => 'C', 'thumb' => 'NNCC', 'rational' => 'NN', 'point' => 'nn', 'rect' => 'nnnn', 'vPoint' => 'NN', 'vRect' => 'NNNN', 'tag' => 'NN'}

### Attributes

chemistry | [RW] | The chemistry used when sequencing e.g Dye terminators => ‘term.’ (String)
sample_title | [RW] | The sample title as entered when sequencing the sample (String)

### Public Class methods

new(string)

see SangerChromatogram class for how to create an Abif object and its usage

[Source]

        # File lib/bio/db/sanger_chromatogram/abif.rb, line 37
    37:     def initialize(string)
    38:       header = string.slice(0,128)
    39:       # read in header info
    40:       @chromatogram_type, @version, @directory_tag_name, @directory_tag_number, @directory_element_type, @directory_element_size, @directory_number_of_elements, @directory_data_size, @directory_data_offset, @directory_data_handle= header.unpack("a4 n a4 N n n N N N N")
    41:       @version = @version/100.to_f
    42:       get_directory_entries(string)
    43:       # get sequence
    44:       @sequence = @directory_entries["PBAS"][1].data.map{|char| char.chr.downcase}.join("")
    45:       #get peak indices
    46:       @peak_indices = @directory_entries["PLOC"][1].data
    47:       #get qualities
    48:       @qualities = @directory_entries["PCON"][1].data
    49:       # get sample title
    50:       @sample_title = @directory_entries["SMPL"][1].data
    51:       @directory_entries["PDMF"].size > 2 ? @dye_mobility = @directory_entries["PDMF"][2].data : @dye_mobility = @directory_entries["PDMF"][1].data
    52:       #get trace data
    53:       @chemistry = @directory_entries["phCH"][1].data
    54:       base_order = @directory_entries["FWO_"][1].data.map{|char| char.chr.downcase}
    55:       (9..12).each do |data_index|
    56:         self.instance_variable_set("@#{base_order[data_index-9]}trace", @directory_entries["DATA"][data_index].data)
    57:       end
    58:
    59:     end

### Public Instance methods

data(name, tag_number = 1)

Returns the data for the name. If not found, returns nil.

Arguments:

- (required) name: (String) name of the data
- (required) tag_number: (Integer) tag number (default 1)

Returns: | any data type or nil

[Source]

        # File lib/bio/db/sanger_chromatogram/abif.rb, line 68
    68:     def data(name, tag_number = 1)
    69:       d = @directory_entries[name]
    70:       d ? d[tag_number].data : nil
    71:     end

[Validate]