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

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

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]